今天主要实现了确认开始,单击开始键,棋子的储存以及黑白两色棋子的下,以及获胜方法.
游戏结束后还可以继续游戏,无法重置.
通过添加布尔类型值(判断是否开始),添加一个标签,并将标签放在指定位置,单击时完成方法.
JLabel startgame=new JLabel();
startgame.setBounds(620, 215, 120, 50);
startgame.addMouseListener(new MouseListener() {
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "可以开始游戏了");
main.this.start=true;
主要通过一个二维数组,记录坐标.int allchess[][]=new int[10][10];//声明数组 if(allchess[index_x][index_y]==0){ if(isblack){ allchess[index_x][index_y]=1; this.isblack=false; } else if(isblack==false){allchess[index_x][index_y]=2;
对二维数组进行赋值,分别用1,2代替颜色,同时不能覆盖原来棋子,因此必须先判断是否在0处,若为0方能下.
for(int i=0;i<allchess.length;i++){
for(int j=0;j<allchess[i].length;j++){
System.out.print(allchess[i][j]);
if(allchess[i][j]==1){
g.setColor(Color.white);
g.fillOval(i*50+110-15, j*50+100-15, 30, 30);}
else if(allchess[i][j]==2){
g.setColor(Color.black);
g.fillOval(i*50+110-15, j*50+100-15, 30, 30);}
获胜主要有三种赢的方法,横竖或斜.横分为左连五个或者右连五个,同理可得竖即为上下,斜着同理得四种获胜方法.
public boolean checkwin() {
//获取当前棋子颜色
int color =this.allchess[this.index_x][this.index_y];
int count=1;
int num=1;
while(color==this.allchess[this.index_x-num][this.index_y]){
count++;
num++;
}
num=1;
while(color==this.allchess[this.index_x+num][this.index_y]){
count++;
num++;}
num=1;
while(color==this.allchess[this.index_x][this.index_y+num]){
count++;
num++;}
num=1;
while(color==this.allchess[this.index_x][this.index_y-num]){
count++;
num++;}
num=1;
while(color==this.allchess[this.index_x+num][this.index_y+num]){
count++;
num++;}
num=1;
while(color==this.allchess[this.index_x+num][this.index_y-num]){
count++;
num++;}
num=1;
while(color==this.allchess[this.index_x-num][this.index_y+num]){
count++;
num++;}
num=1;
while(color==this.allchess[this.index_x-num][this.index_y-num]){
count++;
num++;}
if(count>=5){
return true;
}
return false;
}