Java 三子棋游戏代码示例 - 完整教程及实现
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 代码编写简单的游戏。祝你玩得开心!
原文地址: https://www.cveoy.top/t/topic/pjc8 著作权归作者所有。请勿转载和采集!