Java 三子棋游戏代码示例 - 完整教程及实现

本教程将带你一步一步学习如何使用 Java 代码编写一个简单的三子棋游戏。我们将涵盖游戏逻辑、界面设计、用户输入和计算机 AI 等方面,并提供完整的代码示例。

游戏规则

三子棋是一款简单的二人游戏,玩家轮流在 3x3 的棋盘上放置自己的棋子,目标是先在水平、垂直或对角线上放置三个自己的棋子。

代码实现

import java.util.Random;
import java.util.Scanner;

public class TicTacToeGame {
    private static final int SIZE = 3;
    private static final char EMPTY = '-';
    private static final char PLAYER = '*';
    private static final char COMPUTER = 'O';

    private char[][] board;
    private boolean playerTurn;

    public TicTacToeGame() {
        board = new char[SIZE][SIZE];
        for (int i = 0; i < SIZE; i++) {
            for (int j = 0; j < SIZE; j++) {
                board[i][j] = EMPTY;
            }
        }
        playerTurn = true;
    }

    public void play() {
        while (true) {
            printBoard();

            if (playerTurn) {
                playerMove();
            } else {
                computerMove();
            }

            if (checkWin(PLAYER)) {
                printBoard();
                System.out.println('Congratulations! You win!');
                break;
            } else if (checkWin(COMPUTER)) {
                printBoard();
                System.out.println('Sorry! Computer wins!');
                break;
            } else if (isBoardFull()) {
                printBoard();
                System.out.println('It's a draw!');
                break;
            }

            playerTurn = !playerTurn;
        }
    }

    private void printBoard() {
        for (int i = 0; i < SIZE; i++) {
            for (int j = 0; j < SIZE; j++) {
                System.out.print(board[i][j] + ' ');
            }
            System.out.println();
        }
        System.out.println();
    }

    private void playerMove() {
        Scanner scanner = new Scanner(System.in);
        System.out.print('Enter row (0-2): ');
        int row = scanner.nextInt();
        System.out.print('Enter column (0-2): ');
        int col = scanner.nextInt();

        if (isValidMove(row, col)) {
            board[row][col] = PLAYER;
        } else {
            System.out.println('Invalid move! Try again.');
            playerMove();
        }
    }

    private void computerMove() {
        Random random = new Random();
        int row, col;

        do {
            row = random.nextInt(SIZE);
            col = random.nextInt(SIZE);
        } while (!isValidMove(row, col));

        board[row][col] = COMPUTER;
    }

    private boolean isValidMove(int row, int col) {
        return row >= 0 && row < SIZE && col >= 0 && col < SIZE && board[row][col] == EMPTY;
    }

    private boolean checkWin(char player) {
        for (int i = 0; i < SIZE; i++) {
            if (board[i][0] == player && board[i][1] == player && board[i][2] == player) {
                return true;
            }
            if (board[0][i] == player && board[1][i] == player && board[2][i] == player) {
                return true;
            }
        }
        if (board[0][0] == player && board[1][1] == player && board[2][2] == player) {
            return true;
        }
        if (board[0][2] == player && board[1][1] == player && board[2][0] == player) {
            return true;
        }
        return false;
    }

    private boolean isBoardFull() {
        for (int i = 0; i < SIZE; i++) {
            for (int j = 0; j < SIZE; j++) {
                if (board[i][j] == EMPTY) {
                    return false;
                }
            }
        }
        return true;
    }

    public static void main(String[] args) {
        TicTacToeGame game = new TicTacToeGame();
        game.play();
    }
}

代码解释

  • TicTacToeGame 类:游戏的主要类,包含了游戏逻辑和界面设计。
  • board 数组:一个 3x3 的字符数组,用于表示棋盘。
  • playerTurn 布尔值:用于记录当前是用户还是计算机的回合。
  • play() 方法:游戏的主循环,不断进行用户和计算机的回合,并判断游戏是否结束。
  • printBoard() 方法:用于打印棋盘。
  • playerMove() 方法:处理用户输入,并更新棋盘。
  • computerMove() 方法:随机生成计算机的回合位置,并更新棋盘。
  • isValidMove() 方法:检查输入的位置是否合法。
  • checkWin() 方法:检查是否有一方获胜。
  • isBoardFull() 方法:检查棋盘是否已满。

运行结果

运行上面的代码,你将看到一个简单的三子棋游戏界面,你可以与计算机进行对战。

总结

这只是一个简单的三子棋游戏的示例,你可以根据自己的需要进行改进,例如添加更复杂的 AI 算法、更美观的界面设计等等。

希望本教程能够帮助你了解如何使用 Java 代码编写简单的游戏。祝你玩得开心!

Java 三子棋游戏代码示例 - 完整教程及实现

原文地址: https://www.cveoy.top/t/topic/pjc8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录