java實現的簡單的五子棋小遊戲
阿新 • • 發佈:2018-11-03
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; } } }
}