1. 程式人生 > >Java Swing實現的人機對戰三子棋

Java Swing實現的人機對戰三子棋

1.照例,先來看看執行結果吧。

這裡寫圖片描述

2.演算法思想:

1.普通情況下,當玩家先下時,演算法根據當前情況判斷自己是否能贏。若可以,則直接選擇該情況,否則開始判斷玩家是否有可以贏的位置,若有,則堵死玩家,,若仍沒有,選擇當前最合適的走法,走法較多時,使用隨機。這種模式下,依照三子棋必勝演算法,人可能下贏電腦。
2.高階AI模式,此時電腦先下,而且佔中間位置。三子棋必勝演算法內容為:(1)當電腦選擇先下並且選擇中間位置時,若玩家選擇兩個對角線的四個位置時,最好結局為平局:(2)當選擇上下左右四個位置時,玩家必輸,而且走法多樣,如下圖紅叉的位置。

這裡寫圖片描述

3.演算法實現:

1.將上述演算法思想用java語言寫出來,並將AI部分實現為單個檔案,作為工具類,與UI部分分離,以介面形式提供呼叫,在介面繪製部分只需要一行程式碼呼叫即可滿足要求。
2.程式碼實現部分較為通用,為了有一定的可拓展性,主要目的是為了以後同類模式開發,只要傳遞相應引數,並且在各種不同類遊戲下,更改邏輯控制部分,就能時演算法框架可以複用。

4.不足之處

1.java swing部分對事件監聽,寫得較為麻煩,重複程式碼太多,顯得較為噁心,有待改進。
2.程式偶爾出現bug,由於演算法主體部分沒有問題,已經滿足要求了,筆者太懶,沒有作出修改,如果有需要,可以自己檢查錯誤,問題也比較簡單,橫容易就找出來。