java 五子棋游戏实现

时间: 2023-10-21 16:05:22 浏览: 30
下面是一个简单的 Java 五子棋游戏实现的代码示例: ```java import java.util.Scanner; public class Gomoku { private static final int BOARD_SIZE = 15; private static final char[][] board = new char[BOARD_SIZE][BOARD_SIZE]; private static final Scanner scanner = new Scanner(System.in); private static int x, y; public static void main(String[] args) { initBoard(); printBoard(); while (true) { playerRound('X'); if (isWin(x, y)) { System.out.println("Player X wins!"); break; } if (isDraw()) { System.out.println("Draw!"); break; } playerRound('O'); if (isWin(x, y)) { System.out.println("Player O wins!"); break; } if (isDraw()) { System.out.println("Draw!"); break; } } } private static void initBoard() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { board[i][j] = '-'; } } } private static void printBoard() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { System.out.print(board[i][j] + " "); } System.out.println(); } } private static void playerRound(char player) { System.out.println("Player " + player + ", enter your move (row[1-" + BOARD_SIZE + "] column[1-" + BOARD_SIZE + "]):"); while (true) { String input = scanner.nextLine(); String[] parts = input.split(" "); if (parts.length != 2) { System.out.println("Invalid input!"); continue; } try { int row = Integer.parseInt(parts[0]) - 1; int col = Integer.parseInt(parts[1]) - 1; if (row < 0 || row >= BOARD_SIZE || col < 0 || col >= BOARD_SIZE) { System.out.println("Invalid input!"); continue; } if (board[row][col] != '-') { System.out.println("Invalid move!"); continue; } board[row][col] = player; x = row; y = col; printBoard(); break; } catch (NumberFormatException e) { System.out.println("Invalid input!"); } } } private static boolean isWin(int row, int col) { char player = board[row][col]; int count = 0; for (int i = col - 4; i <= col + 4; i++) { if (i < 0 || i >= BOARD_SIZE) { continue; } if (board[row][i] == player) { count++; if (count == 5) { return true; } } else { count = 0; } } count = 0; for (int i = row - 4; i <= row + 4; i++) { if (i < 0 || i >= BOARD_SIZE) { continue; } if (board[i][col] == player) { count++; if (count == 5) { return true; } } else { count = 0; } } count = 0; for (int i = -4; i <= 4; i++) { int r = row + i; int c = col + i; if (r < 0 || r >= BOARD_SIZE || c < 0 || c >= BOARD_SIZE) { continue; } if (board[r][c] == player) { count++; if (count == 5) { return true; } } else { count = 0; } } count = 0; for (int i = -4; i <= 4; i++) { int r = row + i; int c = col - i; if (r < 0 || r >= BOARD_SIZE || c < 0 || c >= BOARD_SIZE) { continue; } if (board[r][c] == player) { count++; if (count == 5) { return true; } } else { count = 0; } } return false; } private static boolean isDraw() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] == '-') { return false; } } } return true; } } ``` 这个代码实现了一个简单的控制台五子棋游戏。在游戏中,玩家执黑子('X'),电脑执白子('O')。玩家和电脑轮流下棋,如果某一方连成五子,则游戏结束。如果棋盘填满而没有任何一方连成五子,则游戏平局。

相关推荐

以下是 Java 实现五子棋游戏的简单步骤: 1. 创建一个棋盘类(Board),在棋盘上绘制出 15×15 的网格。 2. 定义一个棋子类(Piece),包括棋子的颜色和位置。 3. 创建一个游戏类(Game),它包括一个棋盘和两个玩家。可以通过键盘输入或鼠标点击来落子。 4. 实现落子规则,每当一个玩家下完一步棋后,判断是否有五个同色棋子相连,如果有则该玩家获胜。 5. 实现 AI 玩家,让计算机能够下棋。可以使用简单的算法,如随机下棋或简单的搜索算法。 以下是示例代码: 棋盘类 Board: public class Board { private int[][] grid; public Board() { grid = new int[15][15]; } public void draw() { // 绘制棋盘 } public boolean isValidMove(int x, int y) { // 判断落子是否合法 } public void placePiece(Piece piece) { // 在棋盘上放置棋子 } public boolean checkWin(Piece piece) { // 判断是否获胜 } } 棋子类 Piece: public class Piece { private int x; private int y; private int color; public Piece(int x, int y, int color) { this.x = x; this.y = y; this.color = color; } public int getX() { return x; } public int getY() { return y; } public int getColor() { return color; } } 游戏类 Game: import java.util.Scanner; public class Game { private Board board; private Player player1; private Player player2; private Player currentPlayer; public Game() { board = new Board(); player1 = new Player("Player 1", 1); player2 = new AIPlayer("AI", 2); currentPlayer = player1; } public void start() { while (true) { board.draw(); System.out.println(currentPlayer.getName() + " turn."); int x, y; if (currentPlayer instanceof AIPlayer) { x = ((AIPlayer) currentPlayer).getNextMove(board); y = ((AIPlayer) currentPlayer).getNextMove(board); System.out.println("AI placed a piece at (" + x + ", " + y + ")"); } else { Scanner scanner = new Scanner(System.in); System.out.print("Enter x: "); x = scanner.nextInt(); System.out.print("Enter y: "); y = scanner.nextInt(); } Piece piece = new Piece(x, y, currentPlayer.getColor()); if (board.isValidMove(x, y)) { board.placePiece(piece); if (board.checkWin(piece)) { System.out.println(currentPlayer.getName() + " wins!"); break; } currentPlayer = (currentPlayer == player1) ? player2 : player1; } else { System.out.println("Invalid move."); } } } } 玩家类 Player: public class Player { private String name; private int color; public Player(String name, int color) { this.name = name; this.color = color; } public String getName() { return name; } public int getColor() { return color; } } AI 玩家类 AIPlayer: import java.util.Random; public class AIPlayer extends Player { private Random random; public AIPlayer(String name, int color) { super(name, color); random = new Random(); } public int getNextMove(Board board) { int x = random.nextInt(15); int y = random.nextInt(15); while (!board.isValidMove(x, y)) { x = random.nextInt(15); y = random.nextInt(15); } return x; } } 以上是一个基本的五子棋游戏实现,可以根据需求进行修改和扩展。
以下是一个简单的Java五子棋游戏代码示例: import java.util.Scanner; public class Gobang { public static final int BOARD_SIZE = 15; public String[][] board = new String[BOARD_SIZE][BOARD_SIZE]; public static final String PLAYER1 = "X"; public static final String PLAYER2 = "O"; public String currentPlayer; public void initBoard() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { board[i][j] = "+"; } } } public void printBoard() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { System.out.print(board[i][j] + " "); } System.out.println(); } } public boolean isBoardFull() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j].equals("+")) { return false; } } } return true; } public boolean isWinningMove(int row, int col) { String player = board[row][col]; int count = 0; for (int i = 0; i < BOARD_SIZE; i++) { if (board[row][i].equals(player)) { count++; } else { count = 0; } if (count == 5) { return true; } } count = 0; for (int i = 0; i < BOARD_SIZE; i++) { if (board[i][col].equals(player)) { count++; } else { count = 0; } if (count == 5) { return true; } } count = 0; for (int i = -4; i <= 4; i++) { int r = row + i; int c = col + i; if (r >= 0 && r < BOARD_SIZE && c >= 0 && c < BOARD_SIZE) { if (board[r][c].equals(player)) { count++; } else { count = 0; } if (count == 5) { return true; } } } count = 0; for (int i = -4; i <= 4; i++) { int r = row + i; int c = col - i; if (r >= 0 && r < BOARD_SIZE && c >= 0 && c < BOARD_SIZE) { if (board[r][c].equals(player)) { count++; } else { count = 0; } if (count == 5) { return true; } } } return false; } public void play() { initBoard(); currentPlayer = PLAYER1; Scanner scanner = new Scanner(System.in); while (true) { printBoard(); System.out.print("Player " + currentPlayer + ", enter row number: "); int row = scanner.nextInt(); System.out.print("Player " + currentPlayer + ", enter column number: "); int col = scanner.nextInt(); if (board[row][col].equals("+")) { board[row][col] = currentPlayer; if (isWinningMove(row, col)) { printBoard(); System.out.println("Player " + currentPlayer + " wins!"); break; } else if (isBoardFull()) { printBoard(); System.out.println("Game is a tie!"); break; } else { if (currentPlayer.equals(PLAYER1)) { currentPlayer = PLAYER2; } else { currentPlayer = PLAYER1; } } } else { System.out.println("That position is already taken. Try again."); } } } public static void main(String[] args) { Gobang game = new Gobang(); game.play(); } } 这个代码实现了一个交互式的五子棋游戏,玩家可以通过输入行和列号来下棋,程序会检查是否有五子连珠,以及棋盘是否已经下满,如果有则宣布胜者或平局。
好的,我可以为您提供一些关于Java五子棋小游戏的信息。五子棋是一种非常受欢迎的策略游戏,它可以在控制台或图形用户界面中实现。以下是一个简单的Java五子棋小游戏的示例代码: java import java.util.Scanner; public class Gobang { private static int BOARD_SIZE = 15; private String[][] board; public void initBoard() { board = new String[BOARD_SIZE][BOARD_SIZE]; for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { board[i][j] = "+"; } } } public void printBoard() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { System.out.print(board[i][j]); } System.out.print("\n"); } } public void play() { Scanner scanner = new Scanner(System.in); int x = 0, y = 0; String color = "x"; while (true) { System.out.print("请输入x坐标:"); x = scanner.nextInt(); System.out.print("请输入y坐标:"); y = scanner.nextInt(); if (board[x][y].equals("+")) { board[x][y] = color; if (isWin(x, y)) { System.out.println(color + "赢了!"); break; } color = color.equals("x") ? "o" : "x"; } else { System.out.println("该位置已经有棋子了,请重新输入!"); } printBoard(); } } public boolean isWin(int x, int y) { String color = board[x][y]; int count = 1; // 横向 for (int i = x - 1; i >= 0; i--) { if (board[i][y].equals(color)) { count++; } else { break; } } for (int i = x + 1; i < BOARD_SIZE; i++) { if (board[i][y].equals(color)) { count++; } else { break; } } if (count >= 5) { return true; } // 纵向 count = 1; for (int i = y - 1; i >= 0; i--) { if (board[x][i].equals(color)) { count++; } else { break; } } for (int i = y + 1; i < BOARD_SIZE; i++) { if (board[x][i].equals(color)) { count++; } else { break; } } if (count >= 5) { return true; } // 左上到右下 count = 1; for (int i = x - 1, j = y - 1; i >= 0 && j >= 0; i--, j--) { if (board[i][j].equals(color)) { count++; } else { break; } } for (int i = x + 1, j = y + 1; i < BOARD_SIZE && j < BOARD_SIZE; i++, j++) { if (board[i][j].equals(color)) { count++; } else { break; } } if (count >= 5) { return true; } // 右上到左下 count = 1; for (int i = x - 1, j = y + 1; i >= 0 && j < BOARD_SIZE; i--, j++) { if (board[i][j].equals(color)) { count++; } else { break; } } for (int i = x + 1, j = y - 1; i < BOARD_SIZE && j >= 0; i++, j--) { if (board[i][j].equals(color)) { count++; } else { break; } } if (count >= 5) { return true; } return false; } public static void main(String[] args) { Gobang game = new Gobang(); game.initBoard(); game.printBoard(); game.play(); } } 这个示例代码实现了一个简单的五子棋游戏,玩家可以在控制台中输入坐标来下棋,程序会判断是否有玩家获胜。
对于Java五子棋小游戏的代码,以下是一个简单的示例: java import java.util.Scanner; public class FiveInARowGame { private static final int BOARD_SIZE = 15; private static final char EMPTY = '-'; private static final char PLAYER_X = 'X'; private static final char PLAYER_O = 'O'; private char[][] board; private char currentPlayer; public FiveInARowGame() { board = new char[BOARD_SIZE][BOARD_SIZE]; currentPlayer = PLAYER_X; initializeBoard(); } private void initializeBoard() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { board[i][j] = EMPTY; } } } private void printBoard() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { System.out.print(board[i][j] + " "); } System.out.println(); } } private boolean isMoveValid(int row, int col) { return row >= 0 && row < BOARD_SIZE && col >= 0 && col < BOARD_SIZE && board[row][col] == EMPTY; } private boolean checkWin(int row, int col) { int count = 0; // Check horizontally for (int i = Math.max(0, col - 4); i <= Math.min(BOARD_SIZE - 1, col + 4); i++) { if (board[row][i] == currentPlayer) { count++; if (count == 5) { return true; } } else { count = 0; } } // Check vertically count = 0; for (int i = Math.max(0, row - 4); i <= Math.min(BOARD_SIZE - 1, row + 4); i++) { if (board[i][col] == currentPlayer) { count++; if (count == 5) { return true; } } else { count = 0; } } // Check diagonally (top-left to bottom-right) count = 0; int startRow = Math.max(row - 4, 0); int startCol = Math.max(col - 4, 0); int endRow = Math.min(row + 4, BOARD_SIZE - 1); int endCol = Math.min(col + 4, BOARD_SIZE - 1); for (int i = startRow, j = startCol; i <= endRow && j <= endCol; i++, j++) { if (board[i][j] == currentPlayer) { count++; if (count == 5) { return true; } } else { count = 0; } } // Check diagonally (top-right to bottom-left) count = 0; startRow = Math.min(row + 4, BOARD_SIZE - 1); startCol = Math.max(col - 4, 0); endRow = Math.max(row - 4, 0); endCol = Math.min(col + 4, BOARD_SIZE - 1); for (int i = startRow, j = startCol; i >= endRow && j <= endCol; i--, j++) { if (board[i][j] == currentPlayer) { count++; if (count == 5) { return true; } } else { count = 0; } } return false; } public void playGame() { Scanner scanner = new Scanner(System.in); boolean isGameOver = false; while (!isGameOver) { System.out.println("Current Player: " + currentPlayer); System.out.print("Enter row (0-" + (BOARD_SIZE - 1) + "): "); int row = scanner.nextInt(); System.out.print("Enter column (0-" + (BOARD_SIZE - 1) + "): "); int col = scanner.nextInt(); if (isMoveValid(row, col)) { board[row][col] = currentPlayer; printBoard(); if (checkWin(row, col)) { System.out.println("Player " + currentPlayer + " wins!"); isGameOver = true; } else { currentPlayer = currentPlayer == PLAYER_X ? PLAYER_O : PLAYER_X; } } else { System.out.println("Invalid move! Please try again."); } } scanner.close(); } public static void main(String[] args) { FiveInARowGame game = new FiveInARowGame(); game.playGame(); } } 这段代码实现了一个简单的五子棋游戏,玩家可以交替落子,当有玩家连成五子时游戏结束。运行主函数 main 即可开始游戏。注意代码中使用了命令行输入来获取玩家的落子位置,输入的行和列需要在指定范围内(0-14)。 希望对你有帮助!如果有任何问题,请随时提问。
### 回答1: 好的,我可以为您提供一个简单的Java五子棋游戏的代码框架: import java.util.Scanner; public class FiveChessGame { private static final int ROWS = 15; private static final int COLS = 15; private static final char[][] chessBoard = new char[ROWS][COLS]; public static void main(String[] args) { initChessBoard(); printChessBoard(); while (true) { // 玩家落子 playerMove(); printChessBoard(); // 判断是否有人获胜 if (checkWin()) { System.out.println("恭喜获胜!"); break; } // AI落子 AIMove(); printChessBoard(); // 判断是否有人获胜 if (checkWin()) { System.out.println("很遗憾,你输了。"); break; } } } private static void initChessBoard() { // 初始化棋盘 for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { chessBoard[i][j] = '+'; } } } private static void printChessBoard() { // 打印棋盘 for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { System.out.print(chessBoard[i][j] + " "); } System.out.println(); } } private static void playerMove() { Scanner sc = new Scanner(System.in); System.out.println("请输入你的落子坐标,例如:1 2"); int x = sc.nextInt() - 1; int y = sc.nextInt() - 1; chessBoard[x][y] = 'O'; } private static void AIMove() { // AI随机落子 int x = (int) (Math.random() * ROWS); int y = (int) (Math.random() * COLS); chessBoard[x][y] = 'X'; } private static boolean checkWin() { // 判断是否有人获胜,这里只是一个简单的例子,没有实现完整的判断逻辑 return false; } } ### 回答2: 五子棋是一种古老的棋类游戏,也是一种策略类游戏。编写一个Java五子棋游戏可以通过以下步骤完成: 1.首先,创建一个棋盘类ChessBoard,其中包含一个二维数组表示棋盘上的各个位置。在构造方法中,初始化棋盘为一个空白状态。 2.为棋盘类添加方法,用于判断某个位置是否可下棋、下棋并判断游戏是否结束、判断某种颜色是否获胜等。 3.创建一个游戏类Game,其中包含一个ChessBoard对象和两个Player对象。通过构造方法初始化对象,并设定游戏规则,例如棋盘的大小、玩家的顺序等。 4.为游戏类添加方法,用于显示棋盘、获取玩家输入、切换玩家等。 5.在游戏类中使用循环,使得游戏在玩家未获胜或棋盘未下满的情况下持续进行。每轮游戏中,显示棋盘->获取当前玩家输入->下棋->判断游戏是否结束->切换玩家,循环执行。 6.当游戏结束时,显示获胜玩家或平局的信息。 以上是编写一个简单的五子棋游戏的步骤,你可以根据这些步骤进行具体的代码实现。要注意处理边界情况,并使用面向对象的思想来设计和编写程序,以提高代码的可读性和可维护性。 ### 回答3: 编写一个Java五子棋游戏需要遵循以下步骤: 1. 创建一个五子棋游戏类,命名为GomokuGame。该类应该包括主方法以及管理游戏流程的功能。 2. 创建一个棋盘类Board。该类包含一个二维数组用于表示棋盘上的状态,以及相关操作方法。例如,初始化棋盘、绘制棋盘、落子、判断胜负等。 3. 创建一个玩家类Player,用于管理玩家的操作。该类可以包括玩家名称、落子位置选择等属性和方法。 4. 在GomokuGame类中,创建两个Player对象,分别表示黑子和白子。并通过交替调用两个Player的落子方法来进行游戏。 5. 在GomokuGame类的主方法中,控制游戏的进行。首先,创建一个Board对象作为棋盘,然后使用循环来不断获取玩家输入的落子位置,交替调用两个Player的落子方法并判断胜负。当游戏结束时,输出获胜方或平局的信息。 6. 还可以增加一些额外的功能,如判断禁手、悔棋、重玩等,以增加游戏的趣味性和可玩性。 编写完成后,你可以将代码编译并通过命令行或集成开发环境运行。在游戏开始时,你会看到一个空白的棋盘,并且可以根据提示进行玩家输入。游戏会根据玩家的选择在棋盘上绘制黑子或白子,直到有一方获得五子连珠或棋盘填满平局。在游戏结束时,会显示胜利者或平局的信息。 希望这个简单的指南对你编写Java五子棋游戏有所帮助。祝你编写成功并玩得开心!

最新推荐

java GUI实现五子棋游戏

主要为大家详细介绍了java GUI实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

300122智飞生物财务报告资产负债利润现金流量表企业治理结构股票交易研发创新等1391个指标(2007-2022).xlsx

包含1391个指标,其说明文档参考: https://blog.csdn.net/yushibing717/article/details/136115027 数据来源:基于上市公司公告数据整理 数据期间:从具体上市公司上市那一年开始-2022年度的数据,年度数据 包含各上市公司股票的、多年度的上市公司财务报表资产负债表、上市公司财务报表利润表、上市公司财务报表现金流量表间接法、直接法四表合在一个面板里面,方便比较和分析利用 含各个上市公司股票的、多年度的 偿债能力 披露财务指标 比率结构 经营能力 盈利能力 现金流量分析 风险水平 发展能力 每股指标 相对价值指标 股利分配 11类财务指标分析数据合在一个面板里面,方便比较和分析利用 含上市公司公告的公司治理、股权结构、审计、诉讼等数据 包含1391个指标,如: 股票简称 证券ID 注册具体地址 公司办公地址 办公地址邮政编码 董事会秘书 董秘联系电话 董秘传真 董秘电子邮箱 ..... 货币资金 其中:客户资金存款 结算备付金 其中:客户备付金 .........

Teaching interactive web platform - PHP教学互动平台构建(毕业设计项目).zip

Teaching interactive web platform - PHP教学互动平台构建(毕业设计项目)

毕业设计(医疗问答系统).zip

毕业设计(医疗问答系统)

帮大学同学做的毕业设计,农产品溯源系统.zip

帮大学同学做的毕业设计,农产品溯源系统

DAC简介及参考电路PPT学习教案.pptx

DAC简介及参考电路PPT学习教案.pptx

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

OceanBase数据库简介及原理解析

# 1. OceanBase数据库概述 ## 1.1 OceanBase数据库的发展历程 OceanBase数据库是由阿里巴巴集团自主研发的一款分布式关系型数据库系统,起源于阿里集团的业务需求和技术挑战。自2010年开始研发,经过多年的迭代和优化,OceanBase已经成为阿里巴巴集团重要的核心数据库产品之一。在实际的业务场景中,OceanBase已经被广泛应用于金融、电商、物流等各个领域。 ## 1.2 OceanBase数据库的特点和优势 OceanBase数据库具有以下特点和优势: - **分布式架构**:OceanBase采用多副本分布式架构,可以实现高可用和数据容灾。 -

python的pandas读取excel怎么将excel表里的列从1开始而不是0

在 Pandas 中,数据框的列默认从0开始编号,但我们可以通过自定义函数来进行数据列的转换。可以先将读取的数据框列的第一个值设为1,然后对后续列进行递增处理。 以下是示例代码: ```python import pandas as pd # 读取 Excel 文件 df = pd.read_excel('your_excel_file.xlsx') # 定义函数将列从1开始 def reset_column(x): return str(int(x) + 1) # 应用函数到所有列名 df = df.rename(columns=reset_column) # 打印数据框

第三章薪酬水平、薪酬系统的运行与控制.pptx

第三章薪酬水平、薪酬系统的运行与控制.pptx