首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 實戰:黑白棋(Othello)完整實現與算法詳解

     編輯:Java 相關知識

遊戲規則

黑白棋又稱 Othello。8×8 棋盤,雙方輪流下子。下子位置必須在八個方向(橫、豎、斜)上夾住對方棋子,被夾住的棋子翻轉顏色。無合法落子則跳過。棋盤滿或雙方無子可下時結束,子多者勝。

黑白棋棋盤

架構設計

  • Chess 類(繼承 JFrame):界面繪製、棋盤狀態數組 chess[8][8](1=黑、-1=白、0=空)、鼠標事件註冊、重新開始/切換先手按鈕
  • ChessListener 類(繼承 MouseAdapter):核心邏輯——落子合法性檢測、八方向翻子算法、勝負判定、UI 更新

核心算法:八方向翻子檢測

落子後,向八個方向掃描:

  1. 遇空位或邊界 → 該方向無效
  2. 遇同色棋子且中間有異色子 → 有效,記錄端點
  3. 所有有效方向的中間異色子全部翻轉

代碼結構:

  • hengYou/hengZuo/hengShang/hengXia:四直線方向檢測
  • xieyouS/xieyouX/xiezuoS/xiezuoX:四斜線方向檢測
  • paintChess/paintChess1-4:直線/斜線翻子實現

關鍵邏輯節點

// 落子處理片段
if (Chess.chess[i][j] == 0) { // 空位
    Chess.chess[i][j] = -stata; // 暫放當前玩家棋子
    // 檢測八方向
    if (allDirectionsInvalid()) {
        Chess.chess[i][j] = 0; // 回滾
        JOptionPane.showMessageDialog(null, "不能放子");
    } else {
        flipAllValidDirections(i, j); // 翻子
        updateUI(); // 重繪、更新計數、切換玩家
        checkWinOrDraw(); // 判斷勝負
    }
}

勝負判定

  • 一方棋子為 0 → 對方勝
  • 棋盤滿 → 子多者勝,相同則平局
  • 雙方連續無子可下(te==2) → 遊戲結束

項目結構

源碼包含完整界面繪製(雙緩衝思路)、圖片資源加載、狀態管理。附件提供 image.zip(棋盤、棋子、按鈕圖標)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved