import java.util.Scanner;
public class Five{
String [][] arr=new String[16][16];
int[] arr1=new int[16];
//函数:给二维数组赋值为*
void show1(){
for(int i=0;i<=15;i++){
arr1[i]=i;
}
for(int i=0;i<=15;i++){
for(int j=0;j<=15;j++){
arr[i][j]="* ";
}
System.out.println();
}
}
//函数:二维数组的显示
void show(){
for(int i=0;i<=15;i++){
System.out.print(" "+Integer.toHexString(arr1[i]));
}
System.out.println();
for(int i=0;i<=15;i++){
System.out.print(Integer.toHexString(arr1[i])+"");
for(int j=0;j<=15;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
}
//函数:改变二维数组的显示的成员
int change(int i,int x,int y,int j){
j=0;
if(arr[x][y].equals("* ")&&i%2==0){
arr[x][y]="E ";
show();
}
else if(arr[x][y].equals("* ")&&i%2!=0){
arr[x][y]="O ";
show();
}else{
System.out.println("输入有误,请重新输入!!");
j++;
}
return j;
}
//函数:一个棋子每当一方下棋后判断是否获胜
int PanDuan(int x,int y,int j1){
j1=0;
//如果该点和它y轴上的相邻的相等的话就继续往下进行
int yNum=0;
//实现纵纵坐标上的统计
for(int i=1;y-i>=0;i++){
if(arr[x][y].equals(arr[x][y-i]))
yNum++;
else
break;
}
for(int i=1;y+i<=16;i++){
if(arr[x][y].equals(arr[x][y+i]))
yNum++;
else
break;
}
//如果该点和它x轴上的相邻的相等的话就继续往下进行
int xNum=0;
//实现横坐标上的统计
for(int i=1;x-i>=0;i++){
if(arr[x][y].equals(arr[x-i][y]))
xNum++;
else
break;
}
for(int i=1;(x+i)<=16;i++){
if(arr[x][y].equals(arr[x+i][y]))
xNum++;
else
break;
}
//如果该点和它撇轴上的相邻的相等的话就继续往下进行
int pNum=0;
//实现撇坐标上的统计
for(int i=1;x-i>=0&&y+i<=16;i++){
if(arr[x][y].equals(arr[x-i][y+i]))
pNum++;
else
break;
}
for(int i=1;x+i<=16&&y-i>=0;i++){
if(arr[x][y].equals(arr[x+i][y-i]))
pNum++;
else
break;
}
//如果该点和它捺轴上的相邻的相等的话就继续往下进行
int nNum=0;
//实现捺坐标上的统计
for(int i=1;y-i>=0&&x-i>=0;i++){
if(arr[x][y].equals(arr[x-i][y-i]))
nNum++;
else
break;
}
for(int i=1;y+i<=16&&x+i<=16;i++){
if(arr[x][y].equals(arr[x+i][y+i]))
nNum++;
else
break;
}
if(xNum>=4||yNum>=4||pNum>=4||nNum>=4)
j1=1;
return j1;
}
public static void main(String[] args){
Scanner input=new Scanner(System.in);
Five f=new Five();
int[][] arr=new int[256][2];
f.show1(); //给棋盘中的元素赋值
f.show(); //显示棋盘
System.out.println("请您选择先后手!!");
int x1=0;
int y1=0;
int x2=0;
int y2=0;
int j=0;
int j1=0;
boolean flag=true;
for(int i=0;i<arr.length;i++ ){
if(i%2==0){
do{
System.out.println("请输入棋手1下的位置:");//请输入你要下的位置
x1=input.nextInt();
y1=input.nextInt();
j=f.change(i,x1,y1,j);
}while(j==1);
j=0;j1=0;
arr[i][0]=x1;
arr[i][1]=y1;
for(int k=0;k<=i;k++){
j1=f.PanDuan(arr[k][0],arr[k][1],j1);
if(j1==1){
System.out.println("E方胜利!!!");
flag=false;
break;
}
}
}else{
do{
System.out.println("请输入棋手2下的位置:");//请输入你要下的位置
x2=input.nextInt();
y2=input.nextInt();
j=f.change(i,x2,y2,j);
}while(j==1);
j=0;j1=0;
arr[i][0]=x2;
arr[i][1]=y2;
for(int k1=0;k1<=i;k1++){
j1=f.PanDuan(arr[k1][0],arr[k1][1],j1);
if(j1==1){
System.out.println("O方胜利!!!");
flag=false;
break;
}
}
}
if(!flag){
break;
}
}
}
}