- 博客(0)
- 资源 (4)
空空如也
生产者消费者问题 Java
用 GUI 实现生产者消费者问题,很直观,CMD 下也有显示
不是用 eclipse 编写,所有不是工程文件,在 CMD 下运行 Main.java 即可
2014-07-07
疯狂Java讲义 控制台五子棋游戏
疯狂Java讲义课后题 自己编写的
对于这个程序,最关键的在于判断是否连成5个棋子
一般的棋盘大小为15*15,
用大小为[15][15]的二维数组来盛放棋盘
要判断是否连成5个棋子,就要对棋子的周围进行遍历
这里规定遍历的方式为(左,右),(上,下),(左上,右下),(右上,左下)
4种最特殊的情况:
左上角:只进行右,下,右下
左下角:只进行右,上,右上
右上角:只进行左,下,左下
右下角:只进行左,上,左上
4种特殊情况(不含4个角):
上边界:不进行上遍历
下边界:不进行下遍历
左边界:不进行左遍历
右边界:不进行右遍历
对其他位置的遍历则为(左,右),(上,下),(左上,右下),(右上,左下)
每下一个棋子,都要判断它所处的位置来选择遍历的方式且每次遍历时都要判断是否到达边界,以防数组越界
这样的话,现实起来就会挺复杂
所以改进的方法是这样的:
用大小为[17][17]的二维数组来盛放棋盘
这样就可对每个位置的棋子用相同的遍历方式来遍历,即(左,右),(上,下),(左上,右下),(右上,左下)。并且不需要判断是否到达边界,大大降低了复杂性。
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
棋盘为如图所示的那么大。而实际上程序中规定的“棋盘”为中间的部分(即棋子只能摆在从1-15的位置上,否则会被程序告知摆放的位置不对),这样一来,不管棋子位于“棋盘”中的哪个位置,都可以采用(左,右),(上,下),(左上,右下),(右上,左下)的方式遍历而不会发生数组越界的错误,且无需判断是否到达边界。
2013-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人