五子棋是来华信做的第一个项目。在做这个项目的过程中,我学到了很多,编程能力也有了些许进步。以前写代码,即使是照着敲,也会有很多的错误,而且还看老半天也不会改。做五子棋的时候,犯的错误减少了。因为是用的eclipse,大多情况下,也能根据提示即时改错,编译时的错误大都解决了,运行时的异常又出现了,有时能自己解决,有时有不得不向斌哥和左哥请教。也许改错对很多人来说根本不是什么问题,可是对于相当菜鸟的我来说是很头痛的 ,很开心,自己有了这样的进步。
下面来说一下我做五子棋的一些收获。
我们这次先写的是界面。界面没什么难以理解的,不过,要记得画布一定记得写在窗体可见的后面。判断输赢,比如判断横向的时候,要记得以最后下的一个棋子为起点,然后,先向左边或右边判断,然后向另一边判断。部分代码如下:
public void win(int i, int j) {
int count[] = { 1, 1, 1, 1 };
int m = 1;
while (j - m >= 0 && chess[i][j] == chess[i][j - m]) {
m++;
count[0]++;
}
m = 1;
while (j + m <= 9 && chess[i][j + m] == chess[i][j]) {
m++;
count[0]++;
}
然后比较头痛的是做悔棋这个功能。这时要用到一个和paint相关的repaint方法,后者是前者自带的一个用的很广泛的方法,后者的方法的实现和前者一模一样。但是前者是重绘所有的棋子方法,所以,这时我们要用到List里的remove方法,它是移除List中最后一个元素的方法(我们是用List保存棋子的特征的,包括行数,列数和棋子的颜色)。悔棋后,要把要把下棋标识(我们用数组保存下过棋子的行列数)和棋子的颜色设置为下期之前的状态,否则,悔棋过的地方会下不了棋,下得了的棋颜色也会不对。设置标识是编程里用得很多的一种方法,一定要学会灵活地运用。