Java控制臺版五子棋的簡單實現方法
設計一個10*10的棋盤:
行號、列號單獨輸出
package yu; import java.util.Scanner; public class WuZiQi { /*● 棋子1 ○ 棋子2 * */ public static void main(String[] args) { // TODO Auto-generated method stub String [] [] qipan=new String [10] [10]; //初始化棋盤: for(int k=0;k<qipan.length;k++){ for(int q=0;q<qipan[k].length;q++){ qipan[k][q]="+ "; } } //輸出棋盤: System.out.print(" "); for(int i=0;i<10;i++){ System.out.print(i+" "); } System.out.println(); for(int k=0;k<qipan.length;k++){ System.out.print(k+" "); for(int q=0;q<qipan[k].length;q++){ System.out.print(qipan[k][q]); } System.out.println(); }
輸入坐標下棋(x,y),並作容錯處理:
- 保證輸入的坐標是(x,y);
- 下標越界處理;
- 判斷此坐標有無棋子;
- 確保坐標輸入為數字。
int x,y;//儲存下棋坐標: Scanner sc=new Scanner(System.in); boolean flag=true;//區分黑白棋; while(true){ System.out.println("請輸入坐標下棋,坐標格式(x,y)"); String str=sc.nextLine(); String [] str1=str.split(","); //容錯處理1 if(str1.length!=2){ System.out.println("坐標輸入錯誤,請重新輸入!!"); }else{ //容錯處理3 try{ x=Integer.parseInt(str1[0]); y=Integer.parseInt(str1[1]); }catch(Exception e){ System.out.println("坐標輸入錯誤,請重新輸入!!"); continue; } //容錯處理2--下標越界 if(x>=10||y>=10){ System.out.println("坐標輸入錯誤,請重新輸入!!"); }else{ //容錯處理--判斷當前位置是否有棋子: //黑白棋: if(qipan[x][y].equals("+ ")){ if(flag){ qipan[x][y]="● "; }else{ qipan[x][y]="○ "; } flag=!flag; }else{ System.out.println("當前位置已有棋子,請重新輸入坐標!!"); continue; } //輸出棋盤: System.out.print(" "); for(int i=0;i<10;i++){ System.out.print(i+" "); } System.out.println(); for(int k=0;k<qipan.length;k++){ System.out.print(k+" "); for(int q=0;q<qipan[k].length;q++){ System.out.print(qipan[k][q]); } System.out.println(); }
判斷是否五子連珠:
8個方向,4條線
- 上方&下方
- 左方&右方
- 左斜上&右斜下
- 右斜上&左斜下
//判斷是否五子連珠: int count=1; String currentZiQi=qipan[x][y];//儲存當前下的棋子; //判斷上方: for(int k=x-1;k>=0;k--){ if(qipan[k][y].equals(currentZiQi)){ count++; }else{ break; } } if(count>=5){ System.out.println(currentZiQi+"獲勝!!!"); break; } //判斷下方: for(int k=x+1;k<10;k++){ if(qipan[k][y].equals(currentZiQi)){ count++; }else{ break; } } if(count>=5){ System.out.println(currentZiQi+"獲勝!!!"); break; } count=1;//重置count; //判斷左邊: for(int k=y-1;k>=0;k--){ if(qipan[x][k].equals(currentZiQi)){ count++; }else{ break; } } if(count>=5){ System.out.println(currentZiQi+"獲勝!!!"); break; } //判斷右邊: for(int k=y+1;k<10;k++){ if(qipan[x][k].equals(currentZiQi)){ count++; }else{ break; } } if(count>=5){ System.out.println(currentZiQi+"獲勝!!!"); break; } count=1; //判斷左上斜邊: for(int k=x-1,j=y-1;k>=0&&j>=0;k--,j--){ if(qipan[k][j].equals(currentZiQi)){ count++; }else{ break; } } if(count>=5){ System.out.println(currentZiQi+"獲勝!!!"); break; } //右下斜方: for(int k=x+1,j=y+1;k<10&&j<10;k++,j++){ if(qipan[k][j].equals(currentZiQi)){ count++; }else{ break; } } if(count>=5){ System.out.println(currentZiQi+"獲勝!!!"); break; } count=1; //左下斜方: for(int k=x-1,j=y+1;k>=0&&j<10;k--,j++){ if(qipan[k][j].equals(currentZiQi)){ count++; }else{ break; } } if(count>=5){ System.out.println(currentZiQi+"獲勝!!!"); break; } //右上斜方: for(int k=x+1,j=y-1;k<10&&j>=0;k++,j--){ if(qipan[k][j].equals(currentZiQi)){ count++; }else{ break; } } if(count>=5){ System.out.println(currentZiQi+"獲勝!!!"); break; } count=1; } } } } }
總結
到此這篇關於Java控制臺版五子棋的簡單實現方法的文章就介紹到這瞭,更多相關Java控制臺版五子棋內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!