?? squareshape.java
字號:
import java.awt.*;
//是所有圖形的基類
abstract class SquareShape
{
private int rotateFlag=0;//旋轉到第幾下
protected int position[][]=new int[4][2];//每個圖形由四個方格所組成
protected int xpos=100,ypos=0;//基點的位置,默認時其位置為第一行的中間
protected Color color;//畫方格的顏色
public SquareShape()
{
defaultRotate();
}
//設置圖形的位置
public void setPlace(int x,int y)
{
xpos=x;
ypos=y;
switch(rotateFlag)
{
case 0:defaultRotate();
break;
case 1:firstRotate();
break;
case 2:secondRotate();
break;
case 3:thirdRotate();
}
}
//畫圖形
public void drawShape(Graphics g)
{
g.setColor(color);
for(int i=0;i<4;i++)
{
g.fillRect(position[i][0],position[i][1],20,20);
}
g.setColor(Color.white);
for(int i=0;i<4;i++)
{
g.drawRect(position[i][0],position[i][1],19,19);
}
}
//順轉的計數
public void rotate()
{
rotateFlag++;
if(rotateFlag==4)
{
rotateFlag=0;
}
}
//逆轉動的計數
public void contraRotate()
{
rotateFlag--;
if(rotateFlag==-1)
{
rotateFlag=3;
}
}
//默認時各方格的位置
protected abstract void defaultRotate();
//第一次旋轉后各方格的位置
protected abstract void firstRotate();
//第二次旋轉后各方格的位置
protected abstract void secondRotate();
//第三次旋轉后各方格的位置
protected abstract void thirdRotate();
//得到方格左邊的位置
public int getLeft()
{
int l[]={position[0][0],position[1][0],position[2][0],position[3][0]};
for(int i=0;i<3;i++)
{
for(int j=i+1;j<4;j++)
{
if(l[i]>l[j])
{
int tmp=l[i];
l[i]=l[j];
l[j]=tmp;
}
}
}
return l[0];
}
//得到方格右邊的位置
public int getRight()
{
int r[]={position[0][0],position[1][0],position[2][0],position[3][0]};
for(int i=0;i<3;i++)
{
for(int j=i+1;j<4;j++)
{
if(r[i]>r[j])
{
int tmp=r[i];
r[i]=r[j];
r[j]=tmp;
}
}
}
return r[3]+20;
}
//得到方格最底邊的位置
public int getBottom()
{
int b[]={position[0][1],position[1][1],position[2][1],position[3][1]};
for(int i=0;i<3;i++)
{
for(int j=i+1;j<4;j++)
{
if(b[i]>b[j])
{
int tmp=b[i];
b[i]=b[j];
b[j]=tmp;
}
}
}
return b[3]+20;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -