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();
}
}
}