二維數組的題做了有幾個了,感覺很有趣,随後想到想做一個五子棋的遊戲.
因為前端知識匮乏,但感覺隻是Java中去用二維數組做的話還是不太難的.
首先生成15*15的棋盤,(先不考慮前後端互動),其後HashMap作為棋盤資料容器,用來接收黑棋或者白棋的設定.
比如說:
HashMap<String,String> goBang = new HashMap<>();
其後 15A 與 白棋 分别作為 key 和 value ,put到goBang
/////* snapshot
public static void main(String[] args) {
HashMap<String,String> goBangMap = new HashMap<>();
goBangMap.put("15A","白棋");
}
15A是棋盤坐标系.如圖:
随後,白棋下子完成,這時候應該是設定一個裁判來檢測棋盤的下子,是否有連成5個子的,也就是說,每一步棋之後(或者在先手的執行完第五步開始進入該裁判方法)
該裁判類應該去周遊整個棋盤,檢視是否有連5個子的,該裁判應該去周遊整個棋盤,是否已無位置可以下子,或者說再怎麼下子也無一方會獲勝,則裁定程式結束(勝出 / 平局)
難點還在于判定每個角與邊.(與細胞自動機不同的是,這個棋子(細胞)要判定的不再僅僅是周圍的8個元素了,而是可能很多個以及位置不再像CellMachine那樣固定.
比如說,最後黑棋落子形成了5連子,其他4個的位置連在它的左上方,這時候該如何判定?)
也許可以漸進性地去推斷: 當有兩個相連接配接時,判定兩個子分别兩端+1位置(+1指的是恰能組成5連子的位置的下個位置) 是否還有該顔色棋子.如果首端沒有+1的,那麼判斷尾端是否有+1,如果true,
再判定+1位置的+1位置是否有該顔色棋子.直到這個true不滿足5個,則取消該首尾棋子的判定,并且,如果該首尾列兩端+1位置均為另一顔色,或者一端無法放置棋子,沒有形成5連子,則應再下次裁定時
取消對該首尾列的判定(去除)
待續
2018.07.27整體的背景Java代碼加判斷棋子5連勝出的裁判類都做好了,那麼應該再就是前端的棋盤生成以及棋子生成和Web端的事件監聽和資料傳導了
将程式設計看作是一門藝術,而不單單是個技術。
敲打的英文字元是我的黑白琴鍵,
思維圖紙畫出的是我編寫的五線譜。
當美妙的華章響起,現實通往二進制的大門即将被打開。