实现过程:
一、棋盘类Chessboard
1.初始化棋盘时,给每个元素赋值“十”,下棋时把“十”替换成棋子即可。
2.输出棋盘时,System.out.print()是只输出不换行的,System.out.println()是输出后自动换行的,所以应使用前者,使用循环嵌套语句,输出完一行后使用System.out.print(“\n”)来换行一次。
3.获取棋盘,定义数组时只需要在类型名后加[ ]即可。
二、枚举类Chessman
构造器必须是私有的,以保证只能在内部创建,保证此对象只有黑子和白子两种类型。
还可以建立棋子接口,是程序具有更好的扩展性,
三、游戏类
先构造一个空参构造器和一个参数为Chessboard的构造器。
1.验证输入合法性:isValid()
输入格式是否正确,是否超出棋盘范围,此位置是否已经有棋子。
注:1.split的功能是将一个字符串分割为子字符串,然后将结果作为字符串数组返回。可用任何符号作为分隔符,有些需要转义,如:split("\\*"),也可用多个分隔符,用|隔开,如:split("\\@|*|#")。
2. Integer.parseInt()的功能是把String型转化为int型。不能装换时则抛NumberFormatException异常。
2.判断输赢:isWon()
每下一颗棋子就从左到右,从上到下,从左上到右下遍历棋盘是否有连成五子。循环嵌套问题。是整个程序的难点之一。
3.计算机随机下棋:computerDo()
使用Math.random方法产生0.0到1.0之间的double数组,再用该值乘以棋盘的大小,即可产生随机坐标。
4.是否重新开始游戏:isReplay()
s1.equals(s2) :判断两个对象的引用是否相等,即是否指向同一个对象。
与==的区别如下:==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同;==是指对内存地址进行比较,equals()是对字符串的内容进行比较;==指引用是否相同,equals()指的是值是否相同。简单讲就是==是看左右是不是一个东西,equals()是看左右是不是相同。
5.游戏过程:start()
获取键盘输入:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
br.readLine() 每当键盘输入一行按下回车键,输入的内容就被 br 读取。