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

NetBeans平台開發J2ME遊戲實戰講解(三):悔棋功能與智能移動優化

     編輯:Java 程式設計入門

功能一:歷史步驟記錄與悔棋實作

引入 History 類別封裝 Vector,每步記錄 5 元素位元組陣列:[x, y, width, height, direction]。關鍵點在於 addStep() 必須 新建陣列實例,避免同一引用被後續修改導致歷史數據污染(Java 參數傳遞為引用傳值)。

public class History {
    private static Vector steps = new Vector();
    public static void addStep(Object step) { steps.addElement(step); }
    public static void removeLastStep() { steps.removeElement(steps.lastElement()); }
    public static Object getLastStep() { return steps.lastElement(); }
    // ... getStepAt, getSize, clear 略
}

移動結束時記錄:

byte[] step = new byte[5];
step[0] = this.SelectArea[0]; step[1] = this.SelectArea[1];
step[2] = this.SelectArea[2]; step[3] = this.SelectArea[3];
step[4] = this.getMoveDirection(); // 1上 2下 3左 4右
history.addStep(step);

悔棋邏輯 unMove():取出最後一步,反向恢復 SelectArea、MoveArea、光標位置 loc,並將棋盤數據 MyMap.Grid 回滾。最後交換 SelectArea 與 MoveArea,重置 selected=false 並 repaint()。MIDlet 層新增 CMD_UNDO 命令觸發 logic.unMove()。

功能二:智能移動邏輯重構

原版需玩家先選取方塊再指定目標位置,操作繁瑣。新版引入 currentCursor、nextCursor 取代原有選取/移動區域,玩家只需將光標移至目標方塊,系統自動判斷該方塊可移動方向(上下左右)並直接執行移動。核心改進:

  • 引入方向常數 DIRECTION_UP/DOWN/LEFT/RIGHT。
  • 移除「選取→移動」兩階段,改為光標定位即觸發合法移動檢測。
  • 加入「防反彈」邏輯:禁止 A→B→A 往復,若有其他合法路徑優先選擇,大幅簡化程式碼並提升操作直觀度。

ControlLogic 建構子新增 gameLevel 參數,nbInit() 取代舊版 jbInit(),初始化流程更清晰。

智能移動示意圖

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