规则如下,有一个九宫格需要两名玩家依次填数,一号玩家填1,二号玩家填2,当出现了3个同样的数可以连在一起时,达成该要求的玩家赢得游戏。当棋盘已满依旧没人胜利时算为平局。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s1 = new Scanner(System.in);
int arr[][]= new int[3][3];
int x,y;
int v=1;
Judge judge = new Judge();
int judge1=0;
while(true){
x=s1.nextInt();
y=s1.nextInt();
if(v%2!=0){
arr[x-1][y-1]=1;
}
else{
arr[x-1][y-1]=2;
}
v++;
图像展示
System.out.println("");
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
System.out.printf("%-3d",arr[i][j]);
}
System.out.println();
}
//判断部分
judge1=judge.judge(arr);
/结束部分
if(judge1==1){
System.out.println("第一位选手赢得了比赛");
break;
}
else if(judge1==2){
System.out.println("第二位选手赢得了比赛");
break;
}
else if(judge1==3){
System.out.println("平局");
break;
}
}
}
public class Judge {
public int judge(int[][] arr){
int pan=0;
第一位的横部分
for(int i=0;i<3;i++){
if(arr[i][0]==arr[i][1]&&arr[i][0]==arr[i][2]&&arr[i][0]==1){
return 1;
}
}
///第一位的纵部分
for(int i=0;i<3;i++){
if(arr[0][i]==arr[1][i]&&arr[0][i]==arr[2][i]&&arr[0][i]==1){
return 1;
}
}
///第一位的对角线
if(arr[0][0]==arr[1][1]&&arr[1][1]==arr[2][2]&&arr[0][0]==1){
return 1;
}
else if(arr[0][2]==arr[1][1]&&arr[1][1]==arr[2][0]&&arr[0][2]==1){
return 1;
}
//
//第二位的横部分
for(int i=0;i<3;i++){
if(arr[i][0]==arr[i][1]&&arr[i][0]==arr[i][2]&&arr[i][0]==2){
return 2;
}
}
///第二位的竖部分
for(int i=0;i<3;i++){
if(arr[0][i]==arr[1][i]&&arr[0][i]==arr[2][i]&&arr[0][i]==2){
return 2;
}
}
///第二位的对角线
if(arr[0][0]==arr[1][1]&&arr[1][1]==arr[2][2]&&arr[0][0]==2){
return 2;
}
else if(arr[0][2]==arr[1][1]&&arr[1][1]==arr[2][0]&&arr[0][2]==2){
return 2;
}
/满盘排查
for(int i=0;i<3;i++){由于上面一旦出现赢得局面便会返回相应的返回值,之后的语句均不运行。可以利用这个性质检查9宫格中空格(用数字0表示)
for(int j=0;j<3;j++){
if(arr[i][j]==0){
pan++;
}
}
}
if(pan==0){/为0说明空格均被填满
return 3;
}
pan=0;
return 0;
}
}