package com.wh.Arrays; import java.util.Arrays; import java.util.Scanner; /** * @author 王恒 * @datetime 2017年4月27日 下午11:37:57 * @description * */ public class TestPlayChart { private static TestPlayChart p; private static Scanner sc=new Scanner(System.in); private static int boardSize = 10; private String[][] board; private String x="●"; private String y="○"; private TestPlayChart(){ } public static TestPlayChart getInstance(){ if(p==null){ p=new TestPlayChart(); } return p; } // 初始化棋盘 public void initBoard() { board = new String[boardSize][boardSize]; for (int i = 0; i < board.length; i++) { // Arrays.fill(board[i], "十"); Arrays.fill(board[i], "+"); } } // 打印输出棋盘 public void printBoard() { for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { System.out.print(board[i][j]); } System.out.println(); } } //人下棋 public void personPlays(){ System.out.println("请输入你下棋的坐标(x,y):"); String person=sc.next(); String[] ps=person.split(","); int pX=Integer.parseInt(ps[0]); int pY=Integer.parseInt(ps[1]); if(isPlays(pX,pY)){ System.out.println("你输入的棋子坐标有误,请重新输入!"); personPlays(); } //p.board[pX][pY]=p.x; p.board[pX][pY]="●"; } //机器下棋 public void machinePlays(){ System.out.println("机器人下棋的坐标为(x,y):"); int mX=(int)(Math.random()*boardSize); int mY=(int)(Math.random()*boardSize); if(isPlays(mX,mY)){ machinePlays(); } //p.board[mX][mY]=p.y; p.board[mX][mY]="○"; System.out.println(mX+","+mY); } //判断某一位置上是否有棋子 public boolean isPlays(int x,int y){ //if(!"十".equals(board[x][y])){ if(!"+".equals(board[x][y])){ return true; } return false; } /** * 还差一个判断输赢的方式,即横、竖、左斜、右斜是否有五个在一起的棋子 * */ //问题1:为什么将变量名赋值给常量,再将这个常量赋值比int小的基本数据类型,会报错??? int i=10,final int i2=i;byte b=i2; public static void main(String[] args) { TestPlayChart p2 =TestPlayChart.getInstance(); p2.initBoard(); while(true){ p2.personPlays(); p2.machinePlays(); p2.printBoard(); } } }