简单的五子棋(人人对战)

本文介绍了一个简单的五子棋游戏的实现,主要功能包括:点击棋盘落子、棋子位置判断、禁止重复落子、胜负判断。通过使用棋盘图片和坐标计算来简化开发,利用二维数组记录棋盘状态,用奇偶数判断交替下黑白棋。此外,游戏在每次落子后都会检查是否形成五子连珠,以决定胜负。
摘要由CSDN通过智能技术生成

这是一个简单的五子棋游戏,目前只实现了简单的人人对战,就是自己跟自己下。。。具体效果如下:


实现这个效果也很简单,主要功能是:

1、点击棋盘能下棋子、棋子位置在棋盘点、点击点和下子点近似判断、黑白棋子交替出现

2、某个棋盘点下了棋子后不能被覆盖

3、判断输赢条件

4、分胜负之后不能再下


一般来说做这个棋盘应该用十几条直线交替画出来,我是用一张图片代替,所以省去了画直线的方法,然后主要的是计算图片中的棋盘点了

所以选用图片一定要选棋盘隔是均匀的矩形,这样方便我们计算每个交点的坐标。计算坐标时当然要考虑到这个图片的规格了,有个经验是用QQ的截图功能(ctrl+alt+A),去选取那个区域,上面会显示区域的长和宽,就可以得到坐标了,像这样:

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Java五子棋人人对战的示例: ```java import java.util.Scanner; public class Gomoku { private static final int SIZE = 15; private static final int EMPTY = 0; private static final int BLACK = 1; private static final int WHITE = 2; private int[][] board; private int currentPlayer; public Gomoku() { board = new int[SIZE][SIZE]; currentPlayer = BLACK; } public void play() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("当前玩家: " + (currentPlayer == BLACK ? "黑棋" : "白棋")); System.out.print("请输入要下棋的位置(x y): "); int x = scanner.nextInt(); int y = scanner.nextInt(); if (isValidMove(x, y)) { makeMove(x, y); printBoard(); if (isWinningMove(x, y)) { System.out.println("恭喜玩家 " + (currentPlayer == BLACK ? "黑棋" : "白棋") + " 获胜!"); break; } currentPlayer = (currentPlayer == BLACK ? WHITE : BLACK); } else { System.out.println("无效的移动,请重新输入!"); } } scanner.close(); } private boolean isValidMove(int x, int y) { return x >= 0 && x < SIZE && y >= 0 && y < SIZE && board[x][y] == EMPTY; } private void makeMove(int x, int y) { board[x][y] = currentPlayer; } private boolean isWinningMove(int x, int y) { int count = 1; // 检查水平方向 for (int i = x - 1; i >= 0 && board[i][y] == currentPlayer; i--) { count++; } for (int i = x + 1; i < SIZE && board[i][y] == currentPlayer; i++) { count++; } if (count >= 5) { return true; } // 检查垂直方向 count = 1; for (int i = y - 1; i >= 0 && board[x][i] == currentPlayer; i--) { count++; } for (int i = y + 1; i < SIZE && board[x][i] == currentPlayer; i++) { count++; } if (count >= 5) { return true; } // 检查左上到右下的对角线 count = 1; for (int i = x - 1, j = y - 1; i >= 0 && j >= 0 && board[i][j] == currentPlayer; i--, j--) { count++; } for (int i = x + 1, j = y + 1; i < SIZE && j < SIZE && board[i][j] == currentPlayer; i++, j++) { count++; } if (count >= 5) { return true; } // 检查右上到左下的对角线 count = 1; for (int i = x - 1, j = y + 1; i >= 0 && j < SIZE && board[i][j] == currentPlayer; i--, j++) { count++; } for (int i = x + 1, j = y - 1; i < SIZE && j >= 0 && board[i][j] == currentPlayer; i++, j--) { count++; } if (count >= 5) { return true; } return false; } private void printBoard() { for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { if (board[i][j] == EMPTY) { System.out.print("- "); } else if (board[i][j] == BLACK) { System.out.print("● "); } else if (board[i][j] == WHITE) { System.out.print("○ "); } } System.out.println(); } } } public class Main { public static void main(String[] args) { Gomoku game = new Gomoku(); game.play(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值