注:完整的代码在最后;
1.先定义一个包:package Day4project;
2.包内定义类:public class wuziqiRun{}这个专门用来开始游戏
3.引入控制台输入的包:import java.util.Scanner;
4.定义main方法: public static void main(String[] args) {}
5.在同一个包内在定义一个类public class wuziqi {}这个类专门来写游戏代码
以下是代码思路:
1.
初始化棋盘 抽取到一个方法中
打印棋盘 抽取到一个方法中
2.
黑白双方交替下棋
打印棋盘
3.
判断是否越界
判断是否重复
判断输赢
代码专门使用的:
public class wuziqi {
static String white = "☆";
static String black = "★";
static String[][] qp = new String[15][15];//棋盘
static String[] num = {"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖"};
static String line = "十";
6.定义多个方法去完善游戏:
1.启动五子棋游戏
public static void start() {}
2.输入棋盘的方法
public static void init() {
for (int i = 0; i < 15; i++) {
for (int j = 0; j < 15; j++) {
if(i!=14&&j!=14){
qp[i][j]=line;
}
else if(j==14){
qp[i][j]=num[i];
}
else if(i==14){
qp[i][j]=num[j];
}
}
}
}
3.打印棋盘的方法:
public static void print () {
for (int i = 0; i < 15; i++) {
for (int j = 0; j <15; j++) {
System.out.print(qp[i][j]);
}
System.out.println();
}
}
4.开始游戏的方法:
里面以调用下面的结束游戏的放法
public static void startGame() {
int n,m;//白
int s,t;//黑
boolean e=true;
for(;;){
if (e == true) {
Scanner a = new Scanner(System.in);
Scanner b = new Scanner(System.in);
n = a.nextInt();//横标
m = b.nextInt();//纵标
if (qp[n][m] != "☆" && qp[n][m] != "★") {
if(n<=13&&n>=0&&m<=13&&m>=0) {
qp[n][m] = white;
print();//白棋
boolean u = gameOver();//游戏结束
if (u == true) {
return;
}
e = false;
}
}
}
if (e == false) {
Scanner c = new Scanner(System.in);
Scanner d = new Scanner(System.in);
s = c.nextInt();//横标
t = d.nextInt();//纵标
if (qp[s][t] != "☆" && qp[s][t] != "★") {
if(s<=13&&s>=0&&t<=13&&t>=0){
qp[s][t] = black;
print();//黑棋
boolean r =gameOver();
//游戏结束
if(r==true){
return;
}
e = true;
}
}
}
}
}
5.游戏结束的方法
一共4个方向(水平,垂直,主对角线,副对角线)
public static boolean gameOver() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 14; j++) {
if (qp[i][j] == qp[i + 1][j] && qp[i + 2][j] == qp[i][j] && qp[i + 3][j] == qp[i][j] && qp[i + 4][j] == qp[i][j]&&qp[i][j]!="十") {
//列5个相同
return true;
}
}
}
for (int i = 0; i < 14; i++) {
for (int j = 0; j < 10; j++) {
if (qp[i][j] == qp[i][j + 1] && qp[i][j + 2] == qp[i][j] && qp[i][j + 3] == qp[i][j] && qp[i][j + 4] == qp[i][j]&&qp[i][j]!="十") {
//行5个相同
return true;
}
}
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (qp[i][j] == qp[i + 1][j + 1] && qp[i][j] == qp[i + 2][j + 2] && qp[i][j] == qp[i + 3][j + 3] && qp[i][j] == qp[i + 4][j + 4]&&qp[i][j]!="十") {
return true;//主对角线
}
}
}
for(int i=0;i<10;i++){
for(int j=4;j<14;j++){
if (qp[i][j] == qp[i + 1][j - 1] && qp[i][j] == qp[i + 2][j - 2] && qp[i][j] == qp[i + 3][j - 3] && qp[i][j] == qp[i + 4][j - 4]&&qp[i][j]!="十") {
return true;//副对角线
}
}
}
return false;
}
}
代码如下:
//第一个类
package Day4project; import java.util.Scanner; public class wuziqiRun { public static void main(String[] args) { System.out.println("游戏规则:"); System.out.println("1.率先连线5个即为成功"); System.out.println("2.注意:如果越界或重复不算请重新下一棋子"); System.out.println("3.游戏中不在警告,请好自为之"); wuziqi.start(); } }
//开第二个类
package Day4project; import java.util.Scanner; /* 1. 初始化棋盘 抽取到一个方法中 打印棋盘 抽取到一个方法中 2. 黑白双方交替下棋 打印棋盘 3. 判断是否越界 判断是否重复 判断输赢 */ public class wuziqi { static String white = "☆"; static String black = "★"; static String[][] qp = new String[15][15];//棋盘 static String[] num = {"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖"}; static String line = "十"; //启动五子棋游戏 public static void start() { init();//输入棋盘 print();//打印棋盘 startGame();//开始游戏 } public static void init() { for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { if(i!=14&&j!=14){ qp[i][j]=line; } else if(j==14){ qp[i][j]=num[i]; } else if(i==14){ qp[i][j]=num[j]; } } } } public static void print () { for (int i = 0; i < 15; i++) { for (int j = 0; j <15; j++) { System.out.print(qp[i][j]); } System.out.println(); } } public static void startGame() { int n,m;//白 int s,t;//黑 boolean e=true; for(;;){ if (e == true) { Scanner a = new Scanner(System.in); Scanner b = new Scanner(System.in); n = a.nextInt();//横标 m = b.nextInt();//纵标 if (n <= 13 && n >= 0 && m <= 13 && m >= 0) { if (qp[n][m] != "☆" && qp[n][m] != "★") { qp[n][m] = white; print();//白棋 boolean u = gameOver();//游戏结束 if (u == true) { return; } e = false; } } } if (e == false) { Scanner c = new Scanner(System.in); Scanner d = new Scanner(System.in); s = c.nextInt();//横标 t = d.nextInt();//纵标 if (s <= 13 && s >= 0 && t <= 13 && t >= 0) { if (qp[s][t] != "☆" && qp[s][t] != "★") { qp[s][t] = black; print();//黑棋 boolean r =gameOver(); //游戏结束 if(r==true){ return; } e = true; } } } } } public static boolean gameOver() { for (int i = 0; i < 10; i++) { for (int j = 0; j < 14; j++) { if (qp[i][j] == qp[i + 1][j] && qp[i + 2][j] == qp[i][j] && qp[i + 3][j] == qp[i][j] && qp[i + 4][j] == qp[i][j]&&qp[i][j]!="十") { //列5个相同 return true; } } } for (int i = 0; i < 14; i++) { for (int j = 0; j < 10; j++) { if (qp[i][j] == qp[i][j + 1] && qp[i][j + 2] == qp[i][j] && qp[i][j + 3] == qp[i][j] && qp[i][j + 4] == qp[i][j]&&qp[i][j]!="十") { //行5个相同 return true; } } } for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (qp[i][j] == qp[i + 1][j + 1] && qp[i][j] == qp[i + 2][j + 2] && qp[i][j] == qp[i + 3][j + 3] && qp[i][j] == qp[i + 4][j + 4]&&qp[i][j]!="十") { return true;//从左上往右下5个相同 } } } for(int i=0;i<10;i++){ for(int j=4;j<14;j++){ if (qp[i][j] == qp[i + 1][j - 1] && qp[i][j] == qp[i + 2][j - 2] && qp[i][j] == qp[i + 3][j - 3] && qp[i][j] == qp[i + 4][j - 4]&&qp[i][j]!="十") { return true; } } } return false; } }