在上一篇文章中几经讲了关于五子棋棋盘和棋子的问题,在这一篇中就继续讲述关于五子棋的其他问题。
三,棋盘和棋子的重绘
在我们上一次做的五子棋程序中虽然可以进行下棋,但是当你将界面拖动或者让它最小化在打开时,你会发现棋盘和棋子消失不见了,如何将它们保存下来,就是要将五子棋游戏进行重绘。
我们首先需要在MyPanel类中重写paint方法,再绘制绘制棋盘和棋子
四,.设置判断输赢,悔棋,复盘等功能;
判断输赢:需要在八个方向上判断棋子连续的情况,每两个相对的方向为一组,一共就需要判断四组就可以了,首先定义4个count来记录四组棋子的连续情况,在count后加上数字便于区分。
棋子颜色如果相同,就将count++,如果不同就跳出循环,另外三组也是一样。
如果最后count小于5,就返回一个false值,反之返回true值。
在每次下完一颗棋子之后都要进行判断,如果为false,则游戏继续;如果为true则结束游戏,并判断哪方获得胜利
悔棋:在悔棋功能中我们需要记录双方下棋的顺序,所以要定义两个一维数组记录棋子交点值,先将chesscount--,获取棋子x,y值,清空对应chessArr中保存的数据,这样就可以将棋子消除了,然后再重复一次悔棋就完成了,但是要判断当chesscount小于2时,无法悔棋,最后将棋子进行重绘就完成了。
复盘:首先要将棋盘清空,在按照下棋顺序绘制棋子。在清空棋盘前要将棋子数据保存在一个新数组中,
再将棋盘清空,重新绘制棋子,每绘制一颗棋子后进行延时操作,