public class FivechessLisenter implements MouseListener, ActionListener,Fiveface {
Graphics g;
Fiveshape fiveshape;
int [][]chessArr=new int[L+1][R+1];
ArrayList<Fivepreserve>fivepreserveArrayList=new ArrayList<>();
int count=1;
在按下的方法中,直接运用,判断为“开始游戏”时开始下棋,执行封装的判断输赢的方法
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
if(str.equals("开始游戏")){
chess(x, y);
IsWin.isWin(chessArr,ChessL,ChessR,chessFlag);
chessFlag=3-chessFlag;
}
}
public void chess(int x,int y){
int ChessL = (x - X + Size / 2) / Size;
int ChessR = (y - Y + Size / 2) / Size;
int ChessX = ChessL * Size + X - Size / 2;
int ChessY = ChessR * Size + Y - Size / 2;
if(chessArr[ChessL][ChessR]==0){
if (chessFlag==1) {
chessArr[ChessL][ChessR]=chessFlag;
Fivepreserve black=new Fivepreserve(ChessR,ChessL,chessFlag);
fivepreserveArrayList.add(black);
for (int i = 0; i < Size; i++) {
g.setColor(new Color(i * 3, i * 3, i * 3));
g.fillOval(ChessX + i / 2, ChessY + i / 2, Size - i, Size - i);
chessFlag = 2;
}
} else if (chessFlag == 2) {
chessArr[ChessL][ChessR] = chessFlag;
Fivepreserve white = new Fivepreserve(ChessR, ChessL, chessFlag);
fivepreserveArrayList.add(white);
for (int i = 0; i < Size; i++) {
g.setColor(new Color(i + 205, i + 205, i + 205));
g.fillOval(ChessX + i / 2, ChessY + i / 2, Size - i, Size - i);
chessFlag = 1;
}
}
}else {
return;
}
}
Fiveface
单独创建一个接口,写其需要用到的常量属性,方便后面被用到
int X=100;
int Y=100;
int L=10;
int R=10;
int Size=50;
Fivepreserve
创建一个保存棋子的类,写其属性及保存的方法,当前类调用申明的变量 赋值给参数(为了保存)
public class Fivepreserve {
int chessR;
int chessL;
int chessNum;
int chessFlag;
public Fivepreserve( int chessR,int chessL,int chessNum,int chessFlag){
this.chessR=chessR;
this.chessL=chessL;
this.chessNum=chessNum;
this.chessFlag=chessFlag;
}
}
public class Fiveshape extends JPanel implements Fiveface{
int [][]chessArr;
public void paint(Graphics g) {
super.paint(g);
drawline(g);
drawchess(g);
System.out.println("A");
}
设置画直线的封装方法
public void drawline(Graphics g){
for (int i = 0; i <11 ; i++) {
g.drawLine(X,Y+i*Size,X+Size*L,Y+i*Size);
g.drawLine(X+i*Size,Y+Size*L,X+i*Size,Y);
}
}