总结
一、目的:
1、 完成疯狂java讲义第四章作业
2、 提升代码能力
3、 熟悉java语言
二、环境:
Windows8.1系统、jdk1.8、记事本(需要把文件扩展名改成java)
三、遇到的问题:
1、 错误需要为class、interface或enum的问题
这个问题,经调试发现是因为注释的时候使用了嵌套注释,即在跨行注释/* */里面添加了跨行注释
2、 如何提取控制台输入的问题
这个问题,根据书上例子,采用bufferedreader解决,具体可以参见api文档.
3、 斜方向棋子的检测问题
这个问题,解决它所需要的算法,着实让我头疼了一下.因为我是以棋盘左边第一列为基准进行斜上方和斜下方的检测,以及以棋盘最后一列为基准进行斜上方和斜下方的检测.第一列的检测会好做很多,因为只需要两层嵌套for循环的i和j相加或相减就可以实现斜方向的递进.而以最后一列的,则需要让两层嵌套for循环i和j的初始值设定为棋盘大小,然后递减.这就导致无法直接用i和j相加或相减来实现递进.我的解决办法是引入额外的变量reduce(具体详见源码),从0开始递增,这样就可以用i和reduce的相加或相减来实现递进.
四、所做的内容:
和大多数五子棋游戏代码一样,我也是采用一个二维数组board来作为棋盘.同时采用一个全局变量boardsize来指定这个二维数组的大小,类似于这样:board[boardsize][boardsize].然后使用水平、竖直、斜方向来检测游戏是否出现结果。
有棋盘初始化函数,对二维数组board[][]进行赋值.
有棋盘打印函数实现棋盘的显示.
一个棋子输入函数.
一个胜负检测函数.
一个信息输出函数.
然后在main函数里面采用while循环实现游戏的流程.
列举几个很有用的变量:
Board[][];//字符串型,作为棋盘的二维数组,是全局变量
…… …… 余下全文