Java怎麼實作簡單無介面五子棋
專案介紹:
本次設計是基於知識點Java類別和物件以及陣列開發的一個小型五子棋遊戲程式。遊戲開始時,選擇黑棋、白棋開局,將一枚棋子落在棋盤一坐標上,然後輪番落子,如此輪流下子,直到某一方首先在棋盤的豎、橫或兩斜四方向上的五子連成線,則該方該局獲勝。
專案實現想法:
1、棋盤設計為10*10格,棋盤類型Chess[][] 二維數組,所含屬性String chessType; 棋盤首先chessType值是」➕ 」。
2、初始化二維陣列
3、玩家選擇黑白圈後,開始下棋。輸入要下棋子的行列座標,黑白棋子輪流落子,當一方連成五子或下滿棋盤時,遊戲結束(連成五子的一方獲勝,下滿棋盤為和棋)。
4、每一次落子成功後,馬上判斷以該位置為中心的八個方向:上、下、左、右、左上、左下、右上、右下是否有相同顏色的棋子連成五子,如果連成五子,則遊戲結束,輸出對應的訊息。
5、當遊戲一方勝利後顯示勝利訊息。從程式表面看,這是一個二維平面圖,所以資料用二維數組來表示,數組兩個下標可以表示棋盤上的位置,數組元素的值代表棋格上的狀態,共有三種情況,分別是,⭕代表白棋,●代表黑棋,➕代表格子。
原始碼
1.棋子
/** * @author hudongsheng * @date 2020/10/29 - 9:28 */ public class ChessType { private String chessType; private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public ChessType() { } public String getChessType() { return chessType; } public void setChessType(String chessType) { this.chessType = chessType; } }
2.下棋##
/** * @author hudongsheng * @date 2020/10/29 - 9:27 */ public class Gobang { private int size = 1; private ChessType[][] chessTypes; private int row; private int colum; private int x; private int y; //创建一个棋盘 public Gobang(int row,int colum){ this.row = row; this.colum = colum; chessTypes = new ChessType[row][colum]; } //初始化棋盘 public void initChessType(){ for(int i = 0; i< chessTypes.length; i++){ for (int j = 0; j< chessTypes[i].length; j++){ chessTypes[i][j] = new ChessType(); chessTypes[i][j].setChessType("➕"); } } } //下白棋 public void setWhiteChess(int x,int y){ chessTypes[x][y].setChessType("⭕"); } //下黑棋 public void setBlackChess(int x,int y){ chessTypes[x][y].setChessType("●"); } //判断是否胜利 public boolean checkWin(int i,int j) { // TODO Auto-generated method stub boolean flag = false; //判断纵向是否有五个棋子是相同的颜色 int count1 = 1;//相同颜色棋子的个数 String color = chessTypes[i][j].getChessType(); //刚下的棋子的颜色 int a = 1; //棋子索引的增量 while((i+a)<row && color == chessTypes[i+a][j].getChessType()){ count1++; a++; } a = 1; while((i-a)>=0 && color == chessTypes[i-a][j].getChessType()){ count1++; a++; } if(count1 >= 5){ flag = true; } //判断纵向是否有五个棋子是相同的颜色 int count2 = 1; a = 1; while((j+a)<colum && color == chessTypes[i][j+a].getChessType()){ count2++; a++; } a = 1; while((j-a)>=0 && color == chessTypes[i][j-a].getChessType()){ count2++; a++; } if(count2 >= 5){ flag = true; } //右上 左下 是否有五个棋子是相同的颜色 int count3 = 1; a = 1; while((i+a)<row && (j-a)>=0 && color == chessTypes[i+a][j-a].getChessType()){ count3++; a++; } a = 1; while((i-a)>=0 && (j+a)<colum && color == chessTypes[i-a][j+a].getChessType()){ count3++; a++; } if(count3 >= 5){ flag = true; } //左上 右下 是否有五个棋子是相同的颜色 int count4 = 1; a = 1; while((i-a)>0 && (j-a)>=0 && color == chessTypes[i-a][j-a].getChessType()){ count4++; a++; } a = 1; while((i+a)<row && (j+a)<colum && color == chessTypes[i+a][j+a].getChessType()){ count4++; a++; } if(count4 >= 5){ flag = true; } return flag; } //落子后打印棋盘 public void print(){ for(int i = 0; i< chessTypes.length; i++){ for (int j = 0; j< chessTypes[i].length; j++){ System.out.print(chessTypes[i][j].getChessType()); } System.out.println(); } } }
3.測試
** * @author hudongsheng * @date 2020/10/29 - 9:27 */ public class Test { public static void main(String[] args) { boolean flag = true; int x; int y; Gobang gobang = new Gobang(10,10); Scanner scanner = new Scanner(System.in); gobang.initChessType(); //下棋 System.out.println("黑棋执先"); while (true){ gobang.print(); System.out.println("请输入下黑棋的坐标:"); x = scanner.nextInt(); y = scanner.nextInt(); gobang.setBlackChess(x,y); if(gobang.checkWin(x,y)){ gobang.print(); System.out.println("黑棋胜!"); break; } gobang.print(); System.out.println("请输入下白棋的坐标:"); x = scanner.nextInt(); y = scanner.nextInt(); gobang.setWhiteChess(x,y); if(gobang.checkWin(x,y)){ gobang.print(); System.out.println("白棋胜!"); break; } } } }
以上是Java怎麼實作簡單無介面五子棋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
