标签:
只实现了最基本的功能,玩家下棋和电脑随机下棋。缺乏输入检查,重复下棋检查,判断输赢,人工智能算法等等。
待完善。
1 import java.io.BufferedReader; 2 import java.io.InputStreamReader; 3 4 // GoBang(五子棋) 5 class GoBang { 6 // 二维数组来模拟一个棋盘 7 private String[][] board; 8 // 表示棋盘的长、宽度 9 private static int BOARD_SIZE = 15; 10 public void initBoard() { 11 // String类可以直接使用,因为java.lang.String包是默认导入的 12 // 直接调用构造器 初始化了长度 确认了15行15列 13 board = new String[BOARD_SIZE][BOARD_SIZE]; 14 //为数组赋值"+" 15 for (int i = 0; i < BOARD_SIZE; i++) { 16 for (int j = 0; j < BOARD_SIZE; j++) { 17 board[i][j] = "╋";//输入法的特殊字符可以找到 18 } 19 } 20 } 21 //输出在控制台上的方法 22 public void printBoard(){ 23 for(int i = 0;i<BOARD_SIZE;i++){ 24 for(int j = 0;j<BOARD_SIZE;j++){ 25 System.out.print(board[i][j]); 26 } 27 System.out.println(); 28 } 29 } 30 //此处不处理任何异常 31 public static void main(String[] args) throws Exception{ 32 GoBang gb = new GoBang(); //创建一个棋盘对象 33 gb.initBoard(); //初始化棋盘 34 gb.printBoard(); //打印出来 一个由"+"组成的15*15的棋盘出来了 35 //之后通过算法实现下棋功能,获取键盘输入的方法,首先引入一个i o的包 36 //字符、包装流建立在字符流之上 转换流 把 字节流 转换成 字符流 37 BufferedReader br = new BufferedReader( //创建一个BufferedReader对象 38 new InputStreamReader(System.in)); 39 String inputStr = null; //一个字符串变量 //默认是null,用于循环 40 System.out.println("以 x,y 的格式输入坐标:"); 41 while((inputStr = br.readLine())!=null) //对象的方法:读取一行字符串 赋给inputStr 42 { 43 //定义一个字符串数组,把以,为分隔符的字符串变成两个 字符串 形成数组 44 String[] posStrArr = inputStr.split(","); 45 int xPos = Integer.parseInt(posStrArr[0]); 46 int yPos = Integer.parseInt(posStrArr[1]);//至此main方法一直在处理输入数据 47 //玩家根据输入给棋盘的相应位置下棋 48 gb.board[xPos-1][yPos-1]="●"; 49 int aPos = (int)(15*Math.random()); 50 int bPos = (int)(15*Math.random()); 51 //if(xPos-1==aPos&&yPos-1==bPos)//如果重合,数组赋null,重新赋值。跳出,避免给电脑赋值 52 //{gb.board[xPos-1][yPos-1] = null ; break;} 53 54 gb.board[aPos][bPos]="★"; 55 gb.printBoard();//每下一步都要重新绘制棋盘 56 System.out.println("以 x,y 的格式输入坐标:"); 57 } 58 } 59 }
标签:
原文地址:http://www.cnblogs.com/mengdejia/p/4306376.html