五子棋人人对战实现

本文介绍了如何实现五子棋的人人对战功能,包括棋子落点的确定、棋子存储和绘制、棋盘状态的判断。通过Vector存储棋子坐标或二维数组记录棋盘信息,支持悔棋功能,同时详细阐述了胜负判断的逻辑,涉及对角线及横向、纵向的连续棋子检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



在十字交差点画棋子,有几种方法,第一种:获取当前鼠标点击的x,y值,

遍历整个棋盘所有的交叉点坐标,与其在一定误差范围内的交叉点坐标即

为落子的坐标点。第二种:直接将获取的x,y坐标减去棋盘外围宽度然后

再除以棋盘每格的宽度,即可得到此坐标位于棋盘的那一行那一列,然后

即可将此点为落子的点。不过这个方法不好判断在哪个交叉点。



棋子可存储,不会因为界面变化而消失,我使用的是Vector集合存储的,

因此我还另外新建了一个棋子的类,每个棋子都保存这坐标,遍历Vector

集合,取出棋子中保存的x,y值即可在棋盘上画出棋子了。另外也可以用

二维数组来存储,里面可以用1代表白棋,2代表黑棋,遍历整个数组,

碰到1则画出白棋,碰到2则画出黑棋,数组的下标即为棋子的坐标,这

样更为简便!不过二维数组在悔棋的时候不方便,因为你只能得到当前

位置的坐标,不能得到上一步棋子的坐标,故你只能悔一步棋。



点击开始才可以下棋,设置一个flag_start的标志,一旦按了开始则

flag_start=true;就可以开始画棋子了。



点击重新开始就可以重新下棋,repaint()棋盘即可,记得要把存储棋子

的数组或者集合要清空!还有存储棋盘信息的数组也要清空。



可以悔棋(我设置的是最多悔一步,黑白各可以悔一步),设置一个

back_chess用来控制要悔几个棋子。我设置的是可以悔两个,即黑

白可以各悔一个棋子。悔棋要注意悔的什么颜色的棋子接下来就应该是什么

颜色下子。



用二维数组存储整个棋盘的信息,来判断下棋输赢。获取当前落子的

棋盘坐标,以此棋子为中心,向上搜索连续的4个棋盘坐标,如果都

与其相等(即都为1或者都为2),则判断1(白棋)胜利或者2(黑棋)

胜利,如果上面只有n(n&l

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值