蚌埠市网站建设_网站建设公司_React_seo优化
2025/12/20 3:03:44 网站建设 项目流程

阶段项目---五子棋

目的

串联知识点,检测不足,弥补不足

需求说明

棋盘10*10,玩家 *2(A,B),A在棋盘上落子后B落子,依次往复,直到一方胜利或者棋盘空间用完为止,判断胜利的条件是一条直线或者任意斜线上同时存在A或B的连续5颗棋子

技术实现

1.静态变量

public static 数据类型 变量名 = 变量值;

静态变量只能定义类中,不能定义在方法中 ,静态变量可以在static修饰的方法中使用,也可以在非静态的方法中访问,主要解决在静态方法中不能访问非静态的变量

2.静态方法

语法

public static 返回值类型 方法名(){}

解释说明:

静态方法就相当于一个箱子,只是这个箱子中装的是代码,需要使用的时候,就把这个箱子放在指定的位置即可

示例

public class StaticTest {public static String name = "张三";public static void main(String[] args) {
//        System.out.println(name);show();show();}public static void show() {System.out.println("张三");System.out.println("男");System.out.println("20");}
}

实现步骤分析

1.制作棋盘

a.使用输入法中的制表符在控制台直接打印出棋盘,然后寻找落子位置的特征

public static char [][] chessboard = {{'┌','┬','┬','┬','┬','┬','┬','┬','┬','┐'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'└','┴','┴','┴','┴','┴','┴','┴','┴','┘'},};

b.利用二维数组重新制作棋盘

public class Gobang {public static char [][] chessboard = {{'┌','┬','┬','┬','┬','┬','┬','┬','┬','┐'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'└','┴','┴','┴','┴','┴','┴','┴','┴','┘'},};public static String separator = "────";public static void main(String[] args) {System.out.println("    0    1    2    3    4    5    6    7    8    9");for (int i = 0; i < chessboard.length; i++) {//外层循环控制行System.out.print(i+"   ");for (int j = 0; j < chessboard[i].length; j++) {//内层循环控制列if (j == chessboard[i].length - 1) {//最后一列System.out.print(chessboard[i][j]);} else {System.out.print(chessboard[i][j] + separator);//使用print打印,不换行}}System.out.println();if (i < chessboard.length - 1) {//排除最后一行System.out.println("    │    │    │    │    │    │    │    │    │    │");}}}
}

c.棋盘在玩家使用过程中会反复展示,需要使用方法来进行优化

public class Gobang {public static char [][] chessboard = {{'┌','┬','┬','┬','┬','┬','┬','┬','┬','┐'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'└','┴','┴','┴','┴','┴','┴','┴','┴','┘'},};public static String separator = "────";public static void main(String[] args) {showChessboard();}public static void showChessboard(){System.out.println("    0    1    2    3    4    5    6    7    8    9");for (int i = 0; i < chessboard.length; i++) {//外层循环控制行System.out.print(i+"   ");for (int j = 0; j < chessboard[i].length; j++) {//内层循环控制列if (j == chessboard[i].length - 1) {//最后一列System.out.print(chessboard[i][j]);} else {System.out.print(chessboard[i][j] + separator);//使用print打印,不换行}}System.out.println();if (i < chessboard.length - 1) {//排除最后一行System.out.println("    │    │    │    │    │    │    │    │    │    │");}}}
}

2.落子

a.玩家A.B会交替落子

package ed1;public class Gobang {public static char [][] chessboard = {{'┌','┬','┬','┬','┬','┬','┬','┬','┬','┐'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'└','┴','┴','┴','┴','┴','┴','┴','┴','┘'},};public static String separator = "────";public static void main(String[] args) {showChessboard();int totalPosition = chessboard.length*chessboard[0].length;for (int times = 0; times < totalPosition; times++) {System.out.println(times % 2 == 0 ? "请玩家A落子:" : "请玩家B落子:");}}public static void showChessboard(){System.out.println("    0    1    2    3    4    5    6    7    8    9");for (int i = 0; i < chessboard.length; i++) {//外层循环控制行System.out.print(i+"   ");for (int j = 0; j < chessboard[i].length; j++) {//内层循环控制列if (j == chessboard[i].length - 1) {//最后一列System.out.print(chessboard[i][j]);} else {System.out.print(chessboard[i][j] + separator);//使用print打印,不换行}}System.out.println();if (i < chessboard.length - 1) {//排除最后一行System.out.println("    │    │    │    │    │    │    │    │    │    │");}}}
}

b.落子位置必须是0~100之间的整数,且不能使用已经存在棋子的位置

package ed1;import java.util.Scanner;public class Gobang {public static char [][] chessboard = {{'┌','┬','┬','┬','┬','┬','┬','┬','┬','┐'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'└','┴','┴','┴','┴','┴','┴','┴','┴','┘'},};public static String separator = "────";public static char pieceA = '○';public static char pieceB = '■';public static void main(String[] args) {showChessboard();int totalPosition = chessboard.length*chessboard[0].length;Scanner sc = new Scanner(System.in);for (int times = 0; times < totalPosition; times++) {System.out.println(times % 2 == 0 ? "请玩家A落子:" : "请玩家B落子:");int position;while (true) {//保证落子成功//检测scanner中是否有输入的数据并且判断数据是否为整数,如果没有数据,就需要从控制台输入if (sc.hasNextInt()) {position = sc.nextInt();if (position >= 0 && position < totalPosition) {char currentPiece = (times % 2 == 0) ? pieceA : pieceB;// position = 21       13*13      21/13 21%13 = 8int row = position / chessboard.length;//位置除以棋盘数组长度得到行号int col = position % chessboard[0].length;//位置取模棋盘数组的总列数得到行号if(chessboard[row][col] == pieceA || chessboard[row][col] == pieceB){System.out.println("非法落子,请重新选择落子位置");times--;//落子次数减去1,因此此次落子未完成,但需要进入下一次循环continue;}else {chessboard[row][col] = currentPiece;break;}} else {System.out.println("非法落子,请重新选择落子位置");}} else{System.out.println("非法落子,请重新选择落子位置");sc.next();//将scanner中储存的数据取出,防止死循环}}//落子完成后,棋盘需要重新展示showChessboard();}}public static void showChessboard(){System.out.println("    0    1    2    3    4    5    6    7    8    9");for (int i = 0; i < chessboard.length; i++) {//外层循环控制行System.out.print(i+"   ");for (int j = 0; j < chessboard[i].length; j++) {//内层循环控制列if (j == chessboard[i].length - 1) {//最后一列System.out.print(chessboard[i][j]);} else {System.out.print(chessboard[i][j] + separator);//使用print打印,不换行}}System.out.println();if (i < chessboard.length - 1) {//排除最后一行System.out.println("    │    │    │    │    │    │    │    │    │    │");}}}
}

c.落子完成后,需要校验是否获胜

package ed1;import java.util.Scanner;public class Gobang {public static char [][] chessboard = {{'┌','┬','┬','┬','┬','┬','┬','┬','┬','┐'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'└','┴','┴','┴','┴','┴','┴','┴','┴','┘'},};public static String separator = "────";public static char pieceA = '○';public static char pieceB = '■';public static void main(String[] args) {showChessboard();int totalPosition = chessboard.length*chessboard[0].length;Scanner sc = new Scanner(System.in);outer:for (int times = 0; times < totalPosition; times++) {System.out.println(times % 2 == 0 ? "请玩家A落子:" : "请玩家B落子:");int position;char currentPiece = (times % 2 == 0) ? pieceA : pieceB;//当前使用的棋子while (true) {//保证落子成功//检测scanner中是否有输入的数据并且判断数据是否为整数,如果没有数据,就需要从控制台输入if (sc.hasNextInt()) {position = sc.nextInt();if (position >= 0 && position < totalPosition) {// position = 21       13*13      21/13 21%13 = 8int row = position / chessboard.length;//位置除以棋盘数组长度得到行号int col = position % chessboard[0].length;//位置取模棋盘数组的总列数得到行号if(chessboard[row][col] == pieceA || chessboard[row][col] == pieceB){System.out.println("非法落子,请重新选择落子位置");times--;//落子次数减去1,因此此次落子未完成,但需要进入下一次循环continue;}else {chessboard[row][col] = currentPiece;break;}} else {System.out.println("非法落子,请重新选择落子位置");}} else{System.out.println("非法落子,请重新选择落子位置");sc.next();//将scanner中储存的数据取出,防止死循环}}//落子完成后,棋盘需要重新展示showChessboard();//判断获胜情况,一共四种for (int i = 0; i < chessboard.length; i++) {for (int j = 0; j < chessboard[i].length; j++) {//第一种:水平方向上存在同一玩家的连续5颗棋子//(i,j) (i,j+1) (i,j+2) (i,j+3) (i,j+4)boolean case1 =(j + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i][j+1] == currentPiece&& chessboard[i][j+2] == currentPiece&& chessboard[i][j+3] == currentPiece&& chessboard[i][j+4] == currentPiece;//第二种:铅锤方向上存在同一玩家的连续5颗棋子//(i,j) (i+1,j) (i+2,j) (i+3,j) (i+4,j)boolean case2 =(i + 4<chessboard.length)&& chessboard[i][j] == currentPiece&& chessboard[i+1][j] == currentPiece&& chessboard[i+2][j] == currentPiece&& chessboard[i+3][j] == currentPiece&& chessboard[j+4][j] == currentPiece;//第三种:135方向上存在同一玩家的连续5颗棋子//(i,j) (i+1,j+1) (i+2,j+2) (i+3,j+3) (i+4,j+4)boolean case3 =(i + 4<chessboard.length)&& (j + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i+1][j+1] == currentPiece&& chessboard[i+2][j+2] == currentPiece&& chessboard[i+3][j+3] == currentPiece&& chessboard[i+4][j+4] == currentPiece;//第四种:45方向上存在同一玩家的连续5颗棋子//(i,j) (i-1,j+1) (i-2,j+2) (i-3,j+3) (i-4,j+4)boolean case4 =(i>4)&&(i + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i-1][j+1] == currentPiece&& chessboard[i-2][j+2] == currentPiece&& chessboard[i-3][j+3] == currentPiece&& chessboard[i-4][j+4] == currentPiece;if (case1 || case2 || case3 || case4) {System.out.println(times %2 == 0 ? "玩家A获得胜利":"玩家B获得胜利");break outer;}}}}}public static void showChessboard(){System.out.println("    0    1    2    3    4    5    6    7    8    9");for (int i = 0; i < chessboard.length; i++) {//外层循环控制行System.out.print(i+"   ");for (int j = 0; j < chessboard[i].length; j++) {//内层循环控制列if (j == chessboard[i].length - 1) {//最后一列System.out.print(chessboard[i][j]);} else {System.out.print(chessboard[i][j] + separator);//使用print打印,不换行}}System.out.println();if (i < chessboard.length - 1) {//排除最后一行System.out.println("    │    │    │    │    │    │    │    │    │    │");}}}
}

d.棋盘使用完毕还未分出胜负,需要提示

package ed1;import java.util.Scanner;public class Gobang {public static char [][] chessboard = {{'┌','┬','┬','┬','┬','┬','┬','┬','┬','┐'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'└','┴','┴','┴','┴','┴','┴','┴','┴','┘'},};public static String separator = "────";public static char pieceA = '○';//玩家A的棋子public static char pieceB = '■';//玩家B的棋子public static int times = 0;//记录棋盘使用次数,偶数次玩家A落子,奇数次玩家B落子public static void main(String[] args) {showChessboard();int totalPosition = chessboard.length*chessboard[0].length;Scanner sc = new Scanner(System.in);outer:while (times < totalPosition) {System.out.println(times % 2 == 0 ? "请玩家A落子:" : "请玩家B落子:");int position;char currentPiece = (times % 2 == 0) ? pieceA : pieceB;//当前使用的棋子while (true) {//保证落子成功//检测scanner中是否有输入的数据并且判断数据是否为整数,如果没有数据,就需要从控制台输入if (sc.hasNextInt()) {position = sc.nextInt();if (position >= 0 && position < totalPosition) {// position = 21       13*13      21/13 21%13 = 8int row = position / chessboard.length;//位置除以棋盘数组长度得到行号int col = position % chessboard[0].length;//位置取模棋盘数组的总列数得到行号if(chessboard[row][col] == pieceA || chessboard[row][col] == pieceB){System.out.println("非法落子,请重新选择落子位置");times--;//落子次数减去1,因此此次落子未完成,但需要进入下一次循环continue;}else {chessboard[row][col] = currentPiece;break;}} else {System.out.println("非法落子,请重新选择落子位置");}} else{System.out.println("非法落子,请重新选择落子位置");sc.next();//将scanner中储存的数据取出,防止死循环}}//落子完成后,棋盘需要重新展示showChessboard();//判断获胜情况,一共四种for (int i = 0; i < chessboard.length; i++) {for (int j = 0; j < chessboard[i].length; j++) {//第一种:水平方向上存在同一玩家的连续5颗棋子//(i,j) (i,j+1) (i,j+2) (i,j+3) (i,j+4)boolean case1 =(j + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i][j+1] == currentPiece&& chessboard[i][j+2] == currentPiece&& chessboard[i][j+3] == currentPiece&& chessboard[i][j+4] == currentPiece;//第二种:铅锤方向上存在同一玩家的连续5颗棋子//(i,j) (i+1,j) (i+2,j) (i+3,j) (i+4,j)boolean case2 =(i + 4<chessboard.length)&& chessboard[i][j] == currentPiece&& chessboard[i+1][j] == currentPiece&& chessboard[i+2][j] == currentPiece&& chessboard[i+3][j] == currentPiece&& chessboard[j+4][j] == currentPiece;//第三种:135方向上存在同一玩家的连续5颗棋子//(i,j) (i+1,j+1) (i+2,j+2) (i+3,j+3) (i+4,j+4)boolean case3 =(i + 4<chessboard.length)&& (j + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i+1][j+1] == currentPiece&& chessboard[i+2][j+2] == currentPiece&& chessboard[i+3][j+3] == currentPiece&& chessboard[i+4][j+4] == currentPiece;//第四种:45方向上存在同一玩家的连续5颗棋子//(i,j) (i-1,j+1) (i-2,j+2) (i-3,j+3) (i-4,j+4)boolean case4 =(i>4)&&(i + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i-1][j+1] == currentPiece&& chessboard[i-2][j+2] == currentPiece&& chessboard[i-3][j+3] == currentPiece&& chessboard[i-4][j+4] == currentPiece;if (case1 || case2 || case3 || case4) {System.out.println(times %2 == 0 ? "玩家A获得胜利":"玩家B获得胜利");break outer;}}times++;}if(times == totalPosition){//说明棋盘已经用完还未分出胜负System.out.println("平局");}}}public static void showChessboard(){System.out.println("    0    1    2    3    4    5    6    7    8    9");for (int i = 0; i < chessboard.length; i++) {//外层循环控制行System.out.print(i+"   ");for (int j = 0; j < chessboard[i].length; j++) {//内层循环控制列if (j == chessboard[i].length - 1) {//最后一列System.out.print(chessboard[i][j]);} else {System.out.print(chessboard[i][j] + separator);//使用print打印,不换行}}System.out.println();if (i < chessboard.length - 1) {//排除最后一行System.out.println("    │    │    │    │    │    │    │    │    │    │");}}}
}

3.声音特效

为落子,非法落子及获胜添加音效

拷贝文件

package ed1;import java.applet.Applet;
import java.applet.AudioClip;
import java.net.URL;
import java.util.Scanner;public class Gobang {public static char [][] chessboard = {{'┌','┬','┬','┬','┬','┬','┬','┬','┬','┐'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'├','┼','┼','┼','┼','┼','┼','┼','┼','┤'},{'└','┴','┴','┴','┴','┴','┴','┴','┴','┘'},};public static String separator = "────";public static char pieceA = '○';//玩家A的棋子public static char pieceB = '■';//玩家B的棋子public static int times = 0;//记录棋盘使用次数,偶数次玩家A落子,奇数次玩家B落子public static void main(String[] args) {showChessboard();int totalPosition = chessboard.length*chessboard[0].length;Scanner sc = new Scanner(System.in);outer:while (times < totalPosition) {System.out.println(times % 2 == 0 ? "请玩家A落子:" : "请玩家B落子:");int position;char currentPiece = (times % 2 == 0) ? pieceA : pieceB;//当前使用的棋子while (true) {//保证落子成功//检测scanner中是否有输入的数据并且判断数据是否为整数,如果没有数据,就需要从控制台输入if (sc.hasNextInt()) {position = sc.nextInt();if (position >= 0 && position < totalPosition) {// position = 21       13*13      21/13 21%13 = 8int row = position / chessboard.length;//位置除以棋盘数组长度得到行号int col = position % chessboard[0].length;//位置取模棋盘数组的总列数得到行号if(chessboard[row][col] == pieceA || chessboard[row][col] == pieceB){System.out.println("非法落子,请重新选择落子位置");playAudio("illegal.wav");continue;}else {chessboard[row][col] = currentPiece;playAudio("fill.wav");break;}} else {System.out.println("非法落子,请重新选择落子位置");playAudio("illegal.wav");}} else{System.out.println("非法落子,请重新选择落子位置");playAudio("illegal.wav");sc.next();//将scanner中储存的数据取出,防止死循环}}//落子完成后,棋盘需要重新展示showChessboard();//判断获胜情况,一共四种for (int i = 0; i < chessboard.length; i++) {for (int j = 0; j < chessboard[i].length; j++) {//第一种:水平方向上存在同一玩家的连续5颗棋子//(i,j) (i,j+1) (i,j+2) (i,j+3) (i,j+4)boolean case1 =(j + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i][j+1] == currentPiece&& chessboard[i][j+2] == currentPiece&& chessboard[i][j+3] == currentPiece&& chessboard[i][j+4] == currentPiece;//第二种:铅锤方向上存在同一玩家的连续5颗棋子//(i,j) (i+1,j) (i+2,j) (i+3,j) (i+4,j)boolean case2 =(i + 4<chessboard.length)&& chessboard[i][j] == currentPiece&& chessboard[i+1][j] == currentPiece&& chessboard[i+2][j] == currentPiece&& chessboard[i+3][j] == currentPiece&& chessboard[j+4][j] == currentPiece;//第三种:135方向上存在同一玩家的连续5颗棋子//(i,j) (i+1,j+1) (i+2,j+2) (i+3,j+3) (i+4,j+4)boolean case3 =(i + 4<chessboard.length)&& (j + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i+1][j+1] == currentPiece&& chessboard[i+2][j+2] == currentPiece&& chessboard[i+3][j+3] == currentPiece&& chessboard[i+4][j+4] == currentPiece;//第四种:45方向上存在同一玩家的连续5颗棋子//(i,j) (i-1,j+1) (i-2,j+2) (i-3,j+3) (i-4,j+4)boolean case4 =(i>4)&&(i + 4<chessboard[i].length)&& chessboard[i][j] == currentPiece&& chessboard[i-1][j+1] == currentPiece&& chessboard[i-2][j+2] == currentPiece&& chessboard[i-3][j+3] == currentPiece&& chessboard[i-4][j+4] == currentPiece;if (case1 || case2 || case3 || case4) {System.out.println(times %2 == 0 ? "玩家A获得胜利":"玩家B获得胜利");playAudio("win.wav");break outer;}}times++;}if(times == totalPosition){//说明棋盘已经用完还未分出胜负System.out.println("平局");}}}public static void showChessboard(){System.out.println("    0    1    2    3    4    5    6    7    8    9");for (int i = 0; i < chessboard.length; i++) {//外层循环控制行System.out.print(i+"   ");for (int j = 0; j < chessboard[i].length; j++) {//内层循环控制列if (j == chessboard[i].length - 1) {//最后一列System.out.print(chessboard[i][j]);} else {System.out.print(chessboard[i][j] + separator);//使用print打印,不换行}}System.out.println();if (i < chessboard.length - 1) {//排除最后一行System.out.println("    │    │    │    │    │    │    │    │    │    │");}}}public static void playAudio(String fileName){URL url = Gobang.class.getClassLoader().getResource(fileName);AudioClip clip = Applet.newAudioClip(url);clip.play();try {Thread.sleep(50L);} catch (InterruptedException e) {}}
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询