/*生成两个数组每个数组默认值为0如果在某个位置画过即赋值为1
* 判断输赢即可通过行列对角线反对角线之后为3来判定*/
import java.util.Scanner;
public class JingZiQi {
static int [][]x=new int [3][3];
static int [][]o=new int [3][3];
static int row;
static int col;
public static void main(String []args){
//显示棋盘
showBoard();
startGame();
}
public static void showBoard(){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(x[i][j]==1){
System.out.print("X|");
}else if(o[i][j]==1){
System.out.print("O|");
}else{
System.out.print(" |");
}
}
System.out.println();
}
}
public static void startGame(){
String roleX="X";//角色名
String roleO="O";
//创建一个判断输赢的boolean;
boolean flag =false;
do{
//X开始游戏
draw(roleX,x);
//判断输赢
flag=isWin(roleX,x,row,col);
if(flag==true){
System.out.println(roleX+"取胜");
return;
}
//O开始画
draw(roleO,o);
//判断输赢
flag=isWin(roleO,o,row,col);
if(flag==true){
System.out.println(roleO+"取胜");
return;
}
}while(flag==false);
}
public static void draw(String role,int [][]xo){
Scanner sc=new Scanner(System.in);
int i=0;//创立一个循环 输入坐标后判断是否已画过
do{
System.out.println(role+"请输入坐标点(0 0):");
row=sc.nextInt();
col=sc.nextInt();
if(x[row][col]!=0 ||o[row][col]!=0){
System.out.println("该位置已画");
i++;
}else{
xo[row][col]=1;
i=0;
}
showBoard();
}while(i>0);
}
public static boolean isWin(String role,int [][]xo,int row,int col){
int num1=0;//判断所在列的值的和
int num2=0;//行
int num3=0;//对角线
int num4=0;//反对角线
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(row==i){
num2+=xo[row][j];
}
if(col==j){
num1+=xo[i][col];
}
if(row==col){
if(i==j)
num3+=xo[i][j];
}
if(row==(2-col)){
num4+=xo[i][j];
}
}
}
if(num1==3||num2==3||num3==3||num4==3){
return true;
}
return false;
}
}
井字棋小游戏
最新推荐文章于 2024-01-10 14:59:17 发布