欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java井字棋小游戏

时间:2023-08-16

要求:读入一个3*3的矩阵,矩阵中的数字1表示该位置上有一个X,为0表示为O

程序判断这个矩阵中是否有获胜的一方,输出表示获胜一方的字符X或O,或输出无人获胜

运行结果:

代码如下:

import java.util.Scanner;public class lian1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); final int SIZE = 3; // 表达大小的常量 int[][] board = new int[SIZE][SIZE]; // 矩阵 boolean gotResult = false; // 表达到底有没有得到那个结果 int numOFX = 0; // x数量 int numOFO = 0; // o数量 // 读入矩阵 System.out.println("---------井字棋小游戏-------"); System.out.println("规则:输入1,代表X,输入0,代表O"); for (int i = 0 ; i < board.length ; i++){ // 表示这个board有几行 for (int j = 0 ; j < board[i].length ; j++){ // 表示board的某一行.length表示他有几列 System.out.println("请输入1(X)或0(O)"); board[i][j] = in.nextInt(); } } // 检查行 for (int i = 0 ; i < SIZE ; i++) { numOFO = 0; // 每次里面循环结束之后,将值归零 numOFX = 0; for (int j = 0; j < SIZE; j++) { if (board[i][j] == 1){ // 判断行的元素是否等于1 numOFX ++ ; }else{ numOFO ++ ; } } if (numOFX == SIZE || numOFO == SIZE){ // 如果有一方等于3, 则跳出循环 gotResult = true; break; } } //检查列 if (! gotResult) { // 如果行没有检查出来错误,gotResult还是false,所以用!号获得他的相反值 for (int i = 0; i < SIZE; i++) { numOFO = 0; numOFX = 0; for (int j = 0; j < SIZE; j++) { if (board[j][i] == 1){ // 判断列的元素是否等于1 numOFX ++ ; }else{ numOFO ++ ; } } if (numOFX == SIZE || numOFO == SIZE){ gotResult = true; break; } } } // 检查对角线 if (! gotResult){ numOFX = 0; numOFO = 0; for (int i = 0 ; i < SIZE ; i++){ if (board[i][i] == 1){ // 检查对角线是否等于1 numOFX++; }else{ numOFO++; } } if (numOFX == SIZE || numOFO == SIZE){ gotResult = true; } } // 检查反对角线 if (! gotResult){ numOFX = 0; numOFO = 0; for (int i = 0 ; i < SIZE ; i++){ if (board[i][SIZE-i-1] == 1){ // 检查反对角线是否等于1 numOFX++; }else{ numOFO++; } } if (numOFX == SIZE || numOFO == SIZE){ gotResult = true; } } if (gotResult){ // 最后如果是true,则输出结果 if (numOFX == SIZE){ System.out.println("X赢了"); }else{ System.out.println("O赢了"); } } else { // false则输出平局 System.out.println("平局"); } }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。