Java五子棋小程序

记录一下这两天写的一个Java五子棋小程序,比较简单的一个纯Java项目。没有复杂的功能,只是简单的人机下棋然后判断胜负。
1.画棋盘
2.实现在棋盘上画棋子
3.玩家下棋,监听鼠标点击事件,实现玩家落子
4.根据算法,实现电脑落子
5.判断胜负

1 下面先简单说一下第一步画棋盘:
首先设置了一个背景图片:

 
绘制图片,通过Graphics的drawImage()方法就可以。
然后绘制横线,竖线

 
这里主要有一点,就是这些绘制代码写在paintComponent()中,在paintComponent方法中,实现JPanel加背景,画线等功能。此方法是自动执行的,执行完构造函数后,自动执行。   当java认为需要重新绘制组件的时候由java调用。例如在程序中repaint();或者程序窗口最小化,然后恢复。或者程序窗口被遮挡,又显现的时候。

2 首先建立一个棋子类,有如下属性

 
然后通过一个二维数组 ChessFlag[][]来记录整个棋盘情况。

通过g.setColor(Color.BLACK);//画笔颜色设置成黑色,g.drawOval(); g.fillOval()来完成棋子的绘制。

先假定假定坐标,可以看一下是否在棋盘上绘制出了棋子。

3    玩家点击落子

mouseClicked(),获取鼠标点击坐标,判断是否合理,然后将chessFlag[][]数组的相应位置进行记录。然后重绘该组件



其中computerDo()是电脑落子,会根据算法来选择位置。

4    电脑落子算法

实现思路:设置棋盘上每个空点的权重,将权重最大的点作为电脑的落子位置。

记录所有的获胜情况,例如19*19时有1020种获胜方式,遍历棋盘,根据下棋情况,初始化所有的获胜情况,将不能再获胜的情况标记,一个空点上,有一种获胜方式加一分,如果这种获胜方式的五个位置上已经有了两子,三子,甚至四子,可以给五个位置中剩余的空点设置更高的权重。


这里加多少分是自己设置的,并不一定。

看到这里也发现如果连珠数Num==5就胜利了,第五步也很容易就解决了。至于searchKeyNum()就是查找一个数组中某一key的个数,addScore()是对某一点进行权重设置


运行效果:


完整项目代码:https://github.com/shiwt/Gobang

猜你喜欢

转载自blog.csdn.net/qq_25523095/article/details/80866900