1. 程式人生 > >微信小程式(遊戲)----五子棋(總結)

微信小程式(遊戲)----五子棋(總結)

思路分析

  1. 繪製棋盤:

    計算橫線和豎線的起始、終結點座標,繪製棋盤網格;

  2. 棋盤交叉點座標:

    計算每格寬高,迴圈儲存棋盤所有點座標,並初始化狀態為0,表示此位置沒有棋子,形成“棋盤座標陣列”;

  3. 獲取點選位置的精確座標:

    獲取當前點選位置的橫縱座標,然後獲取精確座標方法:
    1、由於知道每格寬高,可以通過當前座標計算出棋盤中離點選點最近座標;
    2、通過迴圈“棋盤座標陣列”,查詢最近座標;

  4. 繪製棋子:

    通過獲取的精準座標,以該點為圓心,每格寬高的三分之一為半徑繪製棋子;

  5. 判斷持棋方:

    定義變數黑方棋子“落子座標陣列”和白方棋子“落子座標陣列”:
    定義變數isWho = true;表示黑色棋子方持棋,對弈進行反轉(isWho = !isWho );
    注意:
    1、新增落子座標的狀態,1為黑色方在該座標落子,-1為白色方在該座標落子;
    2、同時將該座標在“棋盤陣列”刪除,新增對應方的“落子座標陣列”;

  6. 判斷勝利方:

    1、判斷勝利,只需要判斷當前棋子的“橫向、縱向、右斜方、左斜方”這四個方向是否形成五子連珠;
    2、減少判斷次數:必須在黑方棋子“落子座標陣列”和白方棋子“落子座標陣列”的length大於等於才開始檢查;
    3、在檢查過程中只要有一方滿足五子連珠,則該方勝利,直接返回。

  7. 悔棋操作:

    1、由於對每方棋子進行了記錄(黑方棋子“落子座標陣列”和白方棋子“落子座標陣列”),只需要判斷當前悔棋方;
    2、對其“落子陣列”的最後一個座標刪除,將其新增到“棋盤座標陣列”中;
    3、對棋盤進行重新繪製,雙方棋子進行重新繪製;
    注意:
    在悔棋座標的狀態一定要初始化為0,代表該座標為空,可以落子。

  8. 重新開始:

    對遊戲進行初始化:棋盤、“棋盤座標陣列”、雙方“落子座標陣列”、初始持棋方。

  9. AI操作:

    1、建立獲取“勝利方法的陣列”(棋盤中能夠形成五連珠的所有方法);
    2、建立雙方在每種方法的“落子個數陣列”,初始化都為0;
    3、建立雙方在每個座標的“記分陣列”,初始化都為0;
    4、對“棋盤座標陣列”(由於在落子時,已將落子座標刪除,所以此時剩餘座標為空位座標)進行遍歷;
    5、判斷每個空位在“勝利方法的陣列”中的重要性,如果人落子該座標,形成五連珠:落子1個記10分,落子為2個記20分,落子3個記40分,落子4個記80分;如果AI在該座標落子,形成五連珠:落子1個記15分,落子為2個記25分,落子3個記45分,落子4個記85分;
    6、統計完所有空位的得分後,獲取其中最大分數的座標,讓其和人落子的最大分座標進行比較,取最大分數的座標,電腦在該座標落子;
    7、反轉人持棋。

注意

  1. 每次落子座標的記錄,方便悔棋,同時改變狀態;
  2. 持棋方的判斷,方便悔棋和落子;
  3. AI落子座標的查詢,需要通過“勝利方法的陣列”來記分;
  4. 該AI的缺點不能判斷該座標形成的棋的型別(活三、死四等),導致很容易進行製造陷阱贏得勝利。

其他

遊戲列表