繁体   English   中英

java中的基本Tic Tac Toe

[英]Basic Tic Tac Toe in java

我正在尝试在Java中制作一个简单的tic tac toe游戏,我差不多完成但是我的程序没有声明胜利者并且没有声明如果游戏是平局,即使在我的代码中我告诉它宣布获胜者。

这是我的代码:

 import java.util.*;

 public class TicTacToe {

/**
 * @param args the command line arguments
 */
public static int row, colm;
public static char board[][] = new char [3][4];
public static Scanner console = new Scanner(System.in);
public static char turn = 'X';

public static void main(String[] args) {
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 4; j++){
            board[i][j] = '_';
        }
    }

    board();
    play();
    winner(row,colm);
}

public static void board() {
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 4; j++) {
            if(j == 0) {
                System.out.print("|");
            } else {
                System.out.print(board[i][j]+"|");
            }

        }
        System.out.println();
    }
}

public static void play() {
    boolean playing = true;
    while(playing) {
        row = console.nextInt();
        colm = console.nextInt();
        board[row][colm] = turn;
        if(winner(row,colm)) {
            playing = false;
            System.out.print("you win");
        }
        board();
        if(turn == 'X') {
            System.out.println("Player 2 your O");
            turn = 'O';
        } else
            turn='X';
    }
}

public static boolean winner(int move1, int move2) {
    if(board[0][move2] == board[1][move2] && board[0][move2] == board[2][move2])
        return true;
    if(board[move1][0] == board[move1][1] && board[move1][0] == board[move1][2])
        return true;
    if(board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[1][1] != '_')
       return true;
    if(board[0][2] == board[1][1] && board[0][2] == board[2][0] && board[1][1] != '_')
       return true;
    return false;
}

如果它是这样做的,那么在有人赢了并且你想在main显示它之后, turn将有错误的值,这里是更正:

public static void main(String[] args) {
    ...
    board();
    play();
    // remove winner(row,colm); it isn't doing anything here
    // turn has the right value of the winner here if play() is modified
}

public static void play() {
    // remove boolean playing = true; it is not needed
    for (;;) { // I call it the 'forever', but you can also write while(true)
        ...
        board[row][colm] = turn;
        board(); // move up unless you don't want to display the board on wins
        if (winner(row,colm)) {
            System.out.print(turn + " you win");
            return; // (or break) <-- otherwise turn has the wrong value in main
        }
        ...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM