PHP
·
发表于 5年以前
·
阅读量:8296
package homework;
import java.util.ArrayList;
import java.util.Scanner;
public class 井字游戏{
//构建棋盘
static ArrayList bulidLine(int n){
ArrayList line = new ArrayList();
for(int i =0;i<2*n+1;i++)
line.add("-");
return line;
}
static ArrayList bulidBlanks(int n){
ArrayList blanks= new ArrayList();
for(int i=0;i<n;i++){
blanks.add("|");
blanks.add(" ");
}
blanks.add("|");
return blanks;
}
static ArrayList bulidPlaste(int n){
ArrayList plate = new ArrayList();
for (int i =0;i<n;i++){
plate.add(bulidLine(n));
plate.add(bulidBlanks(n));
}
plate.add(bulidLine(n));
return plate;
}
static void show(ArrayList plate){
for (int i = 0;i<plate.size();i++){
ArrayList row=(ArrayList)plate.get(i);
for(int j=0;j<row.size();j++)
System.out.print(row.get(j));
System.out.println();
}
}
//下棋
static boolean drop(ArrayList plate,int r,int c,String piece) {
r = 2 * r - 1;
c = 2 * c - 1;
ArrayList row = (ArrayList) plate.get(r);
if (row.get(c) == " "){
row.set(c, piece);
return true;
}
return false;
}
//判定胜负
public static boolean judge(ArrayList plate,int n,String piece){
//判断行
int r;
int count;
for(r=1;r<2*n+1;r+=2) {
//判断行
count=0;
ArrayList row = (ArrayList) plate.get(r);
for (int j = 1; j < 2 * n + 1; j += 2) {
if (row.get(j) == piece) {
count += 1;
if (count == n)
return true;
}
}
}
//判断列
for(int i=1;i<2*n+1;i+=2){
count=0;
ArrayList row=(ArrayList)plate.get(i);
for(int j=1;j<2*n+1;j+=2) {
if (row.get(j) == piece) {
count += 1;
if (count == n)
return true;
}
}
}
//判断捺
for(int i=1;i<2*n+1;i+=2){
count=0;
ArrayList row=(ArrayList)plate.get(i);
if (row.get(i)==piece){
count+=1;
if (count==n)
return true;
}
}
//判断撇
for (int i= 2*n-1;i>0;i-=2){
count=0;
ArrayList row=(ArrayList)plate.get(i);
if(row.get(i)==piece){
count+=1;
if(count==n)
return true;
}
}
return false;
}
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("输入棋盘阶数");
int n=reader.nextInt();
ArrayList plate= bulidPlaste(n);
show(plate);
String piece = "x";
int s=0;
while (true) {
System.out.println("请输入落子的行号");
int row = reader.nextInt();
System.out.println("请输入落子的列号");
int col = reader.nextInt();
if (!drop(plate, row, col, piece)){
System.out.println("该处已有棋子,重新落子");
continue;
}
s++;
if(s==n*n){
if(judge(plate,n,piece)){
System.out.println(piece+" win");
break;
}
else
System.out.println("平局");
break;
}
show(plate);
if(judge(plate,n,piece)){
System.out.println(piece+" win");
break;
}
piece=piece=="x"?"o":"x";
}
}
}