Java训练——实现五子棋功能
作者:互联网
使用二维数组,实现五子棋功能.
在控制台通过Scanner输入黑白棋坐标),使用实心五角星和空心五角星表示黑白棋子
代码实现
public static void main(String[] args) {
String[][] a = new String[15][15];
Scanner input = new Scanner(System.in);
String[] num = {"⒈", "⒉", "⒊", "⒋", "⒌", "⒍", "⒎", "⒏", "⒐", "⒑", "⒒", "⒓", "⒔", "⒕", "⒖"};//行列序号
/*
* 初始化棋盘
* */
intiQP(a,num);
int flag = 1;
while (true) {
System.out.println(((flag == 1) ? "白" : "黑") + "子下棋");
System.out.println("请输入你要下的位置");
int x = input.nextInt();
int y = input.nextInt();
/*
*判断输入坐标是否不符合
**/
if (a[x - 1][y - 1] == "♘" || a[x - 1][y - 1] == "♞" || x>a.length || y>a.length || x<0 || y<0) {
System.out.println("地址有误");
continue;
}
if (flag == 1) {
a[x - 1][y - 1] = "♘";
flag = 0;
} else {
a[x - 1][y - 1] = "♞";
flag = 1;
}
/*
*判断输赢
* */
if (isWin(a)==0){
System.out.println("白棋赢");
break;
}
if (isWin(a)==1){
System.out.println("黑棋赢");
break;
}
/*
* 更新棋盘
* */
PrintQp(a);
}
}
/**
* 创建棋盘
*/
public static void intiQP(String [][] a , String [] num) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
a[i][j] = "十";
if (j == (a.length - 1)) {
a[i][j] = num[i];
}
if (i == (a.length - 1)) {
a[i][j] = num[j];
}
System.out.print(a[i][j]);
}
System.out.println();
}
}
/**
*打印棋盘
*/
public static void PrintQp(String [][] a) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
System.out.print(a[i][j]);
}
System.out.println();
}
}
/**
*判断谁赢
*/
public static int isWin(String [] [] a) {
//判断行是否为5个
for (int i = 0; i < a.length-4; i++) {
for (int j = 0; j < a.length-4; j++) {
if (a[i][j]=="十") {continue;}
if (a[i][j]==a[i][j+1] & a[i][j]==a[i][j+2] & a[i][j]==a[i][j+3] & a[i][j]==a[i][j+4])
{
if (a[i][j]=="♘"){
return 0;
}else if(a[i][j]=="♞"){
return 1;
}
}
}
}
//判断列是否为5个
for (int i = 0; i < a.length-4; i++) {
for (int j = 0; j < a.length-4; j++) {
if (a[i][j]=="十") {continue;}
if (a[i][j]==a[i+1][j] & a[i][j]==a[i+2][j] & a[i][j]==a[i+3][j] & a[i][j]==a[i+4][j])
{
if (a[i][j]=="♘"){
return 0;
}else if(a[i][j]=="♞"){
return 1;
}
}
}
}
//判断正对角是否为5个
for (int i = 0; i < a.length-4; i++) {
for (int j = 0; j < a.length-4; j++) {
if (a[i][j]=="十") {continue;}
if (a[i][j]==a[i+1][j+1] & a[i][j]==a[i+2][j+2] & a[i][j]==a[i+3][j+3] & a[i][j]==a[i+4][j+4])
{
if (a[i][j]=="♘"){
return 0;
}else if(a[i][j]=="♞"){
return 1;
}
}
}
}
//判断反对角是否为5个
for (int i = a.length-1; i > 4; i--) {
for (int j = 0; j <a.length-4; j++) {
if (a[i][j]=="十") {continue;}
if (a[i][j]==a[i-1][j+1] & a[i][j]==a[i-2][j+2] & a[i][j]==a[i-3][j+3] & a[i][j]==a[i-4][j+4])
{
if (a[i][j]=="♘"){
return 0;
}else if(a[i][j]=="♞"){
return 1;
}
}
}
}
return 3;
}
输出结果:
十十十十十十十十十十十十十十⒈
十十十十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
1
1
♘十十十十十十十十十十十十十⒈
十十十十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
黑子下棋
请输入你要下的位置
1
2
♘♞十十十十十十十十十十十十⒈
十十十十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
2
2
♘♞十十十十十十十十十十十十⒈
十♘十十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
黑子下棋
请输入你要下的位置
2
3
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十十十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
3
3
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十♘十十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
黑子下棋
请输入你要下的位置
3
4
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十♘♞十十十十十十十十十十⒊
十十十十十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
4
4
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十♘♞十十十十十十十十十十⒊
十十十♘十十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
黑子下棋
请输入你要下的位置
4
5
♘♞十十十十十十十十十十十十⒈
十♘♞十十十十十十十十十十十⒉
十十♘♞十十十十十十十十十十⒊
十十十♘♞十十十十十十十十十⒋
十十十十十十十十十十十十十十⒌
十十十十十十十十十十十十十十⒍
十十十十十十十十十十十十十十⒎
十十十十十十十十十十十十十十⒏
十十十十十十十十十十十十十十⒐
十十十十十十十十十十十十十十⒑
十十十十十十十十十十十十十十⒒
十十十十十十十十十十十十十十⒓
十十十十十十十十十十十十十十⒔
十十十十十十十十十十十十十十⒕
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖
白子下棋
请输入你要下的位置
5
5
白棋赢
标签:十十,Java,白子,训练,下棋,位置,五子棋,int,输入 来源: https://www.cnblogs.com/xiaofanmi/p/14833655.html