溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

用JAVA實現(xiàn)五子棋游戲的方法

發(fā)布時間:2020-06-22 16:48:19 來源:億速云 閱讀:209 作者:清晨 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細講解有關(guān)如何用JAVA去寫五子棋游戲,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

編寫一個簡易五子棋,棋盤在控制臺中繪制,棋盤每一個點都有對應(yīng)的坐標,下棋者輸入對應(yīng)坐標落棋子,運行效果如圖所示。兩位數(shù)字表示的坐標中,第一個數(shù)字表示橫坐標,第二個數(shù)字表示縱坐標,運行結(jié)果如圖所示。

用JAVA實現(xiàn)五子棋游戲的方法

代碼:

package Test;

import java.util.Scanner;

public class Test4 {
public static void main(String[] args) {
int flag = 0; //偶數(shù)玩家一操作,奇數(shù)玩家二操作
int works=0; //判斷是否勝利,若勝利則為4
int works_x=0; //勝利時最后一步的x值
int works_y=0; //勝利時最后一步的y值

 String list[][] = start(); //棋盤的生成,和顯示
 for (int i = 0; i < list.length; i++) {
 for (int j = 0; j < list[i].length; j++) {
 System.out.print(list[i][j]);
 }
 System.out.println();
 }

 while (true) { //循環(huán)操作和顯示結(jié)果,勝利時跳出
 Scanner sc = new Scanner(System.in);
 System.out.print("位置:");
 String temp = sc.next(); //棋手輸入的x值和y值(此方法中為0-9的數(shù))
 int x = Integer.parseInt(temp.substring(0,1));
 int y = Integer.parseInt(temp.substring(1));
 
 if (flag % 2 == 0){//玩家一操作,此位置為" - "時可操作,否則重新輸入
 if (list[x+1][y+1]==" - ")
 list[x+1][y+1] = " O ";
 else
 flag--;
 }
 else{  //玩家二操作,此位置為" - "時可操作,否則重新輸入
 if (list[x+1][y+1]==" - ")
 list[x+1][y+1] =" X ";
 else
 flag--;
 }
 flag++; //每次操作成功+1,下一玩家操作
 
 for (int i = 0; i < list.length; i++) {//顯示操作結(jié)果
 for (int j = 0; j < list[i].length; j++) {
 System.out.print(list[i][j]);
 ///*
 if (list[i][j]!=" - "){//判斷是否勝利,只有非“ - ”時判斷
  if(work(list,i,j)==4){
  works=work(list,i,j);
  works_x=x;
  works_y=y;
  }
 }
 //*/
 }
 System.out.println();
 }
 
 if(works!=0){//最后值為“ O ”時,玩家一勝出;最后值為“ X ”時,玩家二勝出。
 if(list[works_x][works_y]==" O ")
 System.out.println("玩家一勝出");
 else
 System.out.println("玩家二勝出");
 System.out.println("結(jié)束");
 break;
 }
 }
}

public static String[][] start() { //生成一個10*10的空棋盤
 String list[][] = new String[11][11];
 for (int i = 0; i < list.length; i++) {
 for (int j = 0; j < list[i].length; j++) {
 if(i == 0 && j==0)
 list[i][j] = " ";
  else if (i == 0 && j!=0)
 list[i][j] = " "+(j-1)+" ";
 else if (j==0 && i!=0)
 list[i][j] = " "+(i-1)+" ";
 else
 list[i][j] = " - ";
 }
 }
 return list;
}

public static int work(String list[][],int x,int y) {//判斷是否勝利
 //if(x-5>0 || y-5>0 ||x+5<list.length ||y+5<list[x].length)
 int temp=0;
 if(x-4>0 ){
 if(y-4>0 ){  //左上角是否五子連線
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x-5+i][y-5+i])
  temp++;
 else
  break;
 }
 }
 else if(y+4<list[x].length){//右上角是否五子連線
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x-4+i][y+4-i])
  temp++;
 else
  break;
 }
 }
 else{
 for(int i=0;i<4;i++){ //正上角是否五子連線
 if (list[x][y]==list[x-4+i][y])
  temp++;
 else
  break;
 }
 }
 }
 else if(x+4<list.length ){ //左下角是否五子連線
 if(y-4>0 ){
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x+4-i][y-4+i])
  temp++;
 else
  break;
 }
 }
 else if(y+4<list[x].length){//右下角是否五子連線
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x+4-i][y+4-i])
  temp++;
 else
  break;
 }
 }
 else{
 for(int i=0;i<4;i++){ //正下角是否五子連線
 if (list[x][y]==list[x+4-i][y])
  temp++;
 else
  break;
 }
 }
 }
 else{
 if(y-4>0 ){
 for(int i=0;i<4;i++){ //正左角是否五子連線
 if (list[x][y]==list[x][y-4+i])
  temp++;
 else
  break;
 }
 }
 else if(y+4<list[x].length){//正右角是否五子連線
 for(int i=0;i<4;i++){
 if (list[x][y]==list[x][y+4-i])
  temp++;
 else
  break;
 }
 }
 }
 return temp;
 }

}

關(guān)于如何用JAVA去寫五子棋游戲就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI