关于java解决四子连问题

本文介绍了一个简单的四子棋游戏的Java实现。该程序通过控制台输入进行交互,支持两名玩家轮流放置红色或黄色棋子,并能判断是否有玩家获胜。文章详细展示了游戏逻辑和关键方法的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.*;
public class class7 {


public static void main(String[] args) {
// TODO Auto-generated method stub


char[][] board=new char[6][7];
for(int i=0;i<board.length;i++)
for(int j=0;j<board[i].length;j++)
board[i][j]=' ';
int []current=new int[board[0].length];
Scanner input=new Scanner(System.in);
displayChess(board);
int column;
char ch=' ';
do
{
ch='R';
do
{
System.out.print("Drop a red disk at column (0-6):");
column=input.nextInt();
}while(!changeChess(board,current,column,ch));
displayChess(board);
if(result(whoWin(board,current,column,ch)))
break;
ch='Y';
do
{
System.out.print("Drop a yellow disk at column(0-6):");
column=input.nextInt();
}while(!changeChess(board,current,column,ch));
displayChess(board);
}while(!result(whoWin(board,current,column,ch)));
String str=(ch=='Y'?"Yellow":"Red");
System.out.println("The "+str+" player won");
}
public static void displayChess(char[][]board)/*展示当前的棋盘情况*/
{
for(int i=0;i<board.length;i++)
{
for(int j=0;j<board[i].length;j++)
{
System.out.print("|"+board[i][j]);
}
System.out.println("|");
}
for(int i=0;i<15;i++)
System.out.print("-");
System.out.println();
}

public static boolean changeChess(char [][]board,int []current,int column,char ch)/*判断当前棋子步骤是否合法*/
{
if(current[column]>=board.length||column>board[0].length-1||column<=-1||column>=7)
{
System.out.println("Enter error!");
return false;
}
board[board.length-current[column]-1][column]=ch;
current[column]++;
return true;
}


public static char whoWin(char [][]board,int []current,int column,char ch)/*检查是否有人赢得游戏,是谁赢得游戏*/
{
char end=' ';
char []four=new char[4];
if(current[column]>=4)/*检查竖排*/
{
for(int j=0,i=current[column]-1;i<=current[column]+2;i++,j++)
{
four[j]=board[board.length-current[column]+j][column];
}
if(isCommon(four,ch))
return ch;
}

for(int i=column-3;i<column+4;i++)/*检查横排*/
{
for(int t=0;t<4;t++)
{
four[t]=' ';
}
for(int k=0,j=i;j<i+4;k++,j++)
{
if(!legal(board,board.length-current[column],j))
break;
four[k]=board[board.length-current[column]][j];

}
if(isCommon(four,ch))
return ch;
}

/*检查左向上斜*/
for(int i=column-3;i<column+4;i++)
{
for(int t=0;t<4;t++)
{
four[t]=' ';
}
for(int k=0,j=i;j<i+4;k++,j++)
{
if(!legal(board,board.length-current[column]+column-i-k,j))
break;
four[k]=board[board.length-current[column]+column-i-k][j];

}
if(isCommon(four,ch))
return ch;

}

/*检查右向上斜*/
for(int i=column+3;i>column-4;i--)
{
for(int t=0;t<4;t++)
{
four[t]=' ';
}
for(int k=0,j=i;j>i-4;k++,j--)
{
/*if(board[5][5]=='R'&&board[4][4]=='R'&&
board[2][2]=='R'&&board[3][3]=='R')
System.out.println("^^^");*/
if(!legal(board,board.length-current[column]+i-column-k,j))
break;
four[k]=board[board.length-current[column]+i-column-k][j];

}
if(isCommon(four,ch))
return ch;

}
return end;
}

public static boolean result(char ch)/*判断是否出了最终结果*/
{
System.out.println("result:"+ch);
if(ch=='R'||ch=='Y')
return true;
return false;
}

public static boolean isCommon(char[]four,char ch)/*用来判断是否四个位置的棋子是否相同*/
{
for(int i=0;i<four.length;i++)
{
/*System.out.println(four[i]+" "+ch);*/
if(four[i]!=ch)
{
/*System.out.println("---------");*/
return false;
}

}
/*System.out.println(four.length);*/
return true;
}

public static boolean legal(char[][]board,int i,int j)/*判断所检察的位置是否合法*/
{
if(j<0||j>6)
return false;
if(i<0||i>5)
return false;
if(/*board[board.length-current[column]][j]!='Y'&&
board[board.length-current[column]][j]!='R'&&*/
board[i][j]!='Y'&&board[i][j]!='R')
return false;
return true;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值