目录
- 一、界面
- 二、按钮
- 三、加棋子
- 四、实现棋子的移动
- 五、判断胜负
- 六、按钮“开始游戏”和“重新开始”的实现
- 七、加规则
- 八、轮次
- 九、悔棋
- 十、背景 及 提示
本文实例为大家分享了Java实现中国象棋游戏的具体代码,供大家参考,具体内容如下
实现一个小游戏需要知道从哪里下手,一步步实现和完善,对于一个中国象棋的小游戏,我们可以按这样的顺序展开:
下棋的棋盘首先要准备好,这就是一个合适大小合适比例合适位置的界面,然后在窗体上画上(没错drawLine的那种画上)n条直线和斜线,具体数值根据你的界面大小设置。这样画出的界面整齐好看~
画好棋盘之后加上功能按钮,这个时候的功能暂时不考虑实现,可以根据喜好随意添加。这里推荐将按钮类型设置成数组,便于及时增删。
这个时候你会发现在加按钮的地方贴的十分紧凑,我的解决办法是在这一块面板上再加一个面板设置为白色覆盖在上面,这样根据面板的流式布局按钮就会下移,调整空白面板的宽度可以改变按钮的位置。
1.创建一个10行9列的整数数组,用来存储每个位置的数据;
2.创建一个长度为14的Image数组,用来与棋子类型对应;
3.遍历整数数组画出对应的棋子;
这是棋盘的直观图,也就是我们的整数数组的初始值:
将Image与棋子图片对应:
遍历画图:
通过函数获得鼠标拖动前后两个点所代表的棋盘上的位置,并将这两个位置的二维数组的值交换,然后重新绘图实现棋子的移动。
这个时候遇到的状况就是你每次移动一次之后,整个界面都要重绘一次,而画面是直接画在窗体上的,数据会直接传到电脑硬件,这样一来画图速度就慢了,所以会出现每走一步界面就闪烁一次的情况,这种情况下,我们可以将画面先存在缓存中,就不经过硬件直接画出来,这样效率就可以明显提高。
加动作监听器
这里的init函数是给整数二维数组初始化为开局后遍历可以加上棋子的状态。
长长的一大串,这里对于炮和将需单独考虑,炮有直行和隔一个两种走法,需分开考虑,而将就更是麻烦
难免会有失误,加上悔棋功能更合适。
我们在交换两个点的值时(或者吃子的情况)需记录下之前的值,然后当动作监听器监听到点击悔棋时又交换回来。
一次只能悔棋一次,且刚开始时棋子没有移动不能悔棋。
加上自己挑的背景,并为了方便下棋,标注轮到哪一方。
加背景可以用到画棋子同样的方法,所以要画在棋盘前面,防止被覆盖住。
这样加上去又有一个很明显的问题,就是你每操作一次右边的按钮都会消失,被你的背景图覆盖了,这怎么办呢?
于是乎,又总结出了三种方法:
1.重写按钮的paint方法;
2.将按钮以菜单的形式加在左上角;
3.将按钮直接p在背景图上(截图),再画就可以了;
每下一子,count×(-1),以此标记是哪一方并画图。
附一张成果图:
最后导出到电脑上,这样就完成了一个中国象棋的小游戏。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/9457.html