javaFX遊戲開發實戰:從零開始開發和實現自娛自樂小遊戲:奧賽羅(黑白棋、翻轉棋),支持可落子位置提示,原創翻轉算法,基於JavaFX2.0的Canvas畫板,界面邏輯與算法分離結構

前言:

這次是從前就特別喜歡玩的“奧賽羅”,但是國內玩的人不多,後來也就慢慢淡忘了。偶然想起來,覺得還是挺有意思的,就着手開發了。之前已經寫過兩三個小遊戲,所以開發起來也很順暢,原以爲利用業餘時間幾天應該能寫完的,斷斷續續寫了兩三個星期。中間覺得不好又推翻重寫了一次。目前只完成了java版本,後面有空的話,應該還會繼續完善。

本遊戲圖形界面使用javaFX的Canvas畫板實現:javaFX系列之Canvas畫板繪製組件:最簡單的畫板繪製圖形實現

 

開發歷程

原本想法是通過加載一些靜態圖片資源來繪製棋盤和棋子,不過後來自己做的圖片效果不是太滿意,網上也沒有找到合適的圖片資源,就把這個想法給pass掉了,改成全部由canvas進行繪製。

原來設計是使用三個canvas,分別是:最底部是棋盤畫板,中間是落子畫板,最上層是提示落子位置畫板。後來覺得三個canvas太浪費,所以把落子位置給挪到最底層棋盤畫板上,每次落子完就會重繪一次棋盤和提示落子位置。爲什麼不適用同一個canvas進行繪製呢?因爲重繪實在太耗硬件資源了,最後開發出來的遊戲運行時資源佔用可以說是非常少的。

以前玩就覺得8x8棋盤太小,所以開發的時候就保留了棋盤的可擴展性,可以支持任意格子數量的棋盤,比如正常的8x8棋盤,也可以9x9,10x10,16x16棋盤等等

原先考慮是需要多線程的,後來沒有用到。因爲幾乎所有計算都在幾毫秒之內就完成了,也沒必要非要多線程了。但是還是使用了兩個線程,一個窗口線程和一個後臺保活線程,後臺線程暫時只有監控窗口線程運行狀態和打打日誌這樣的功能。

遊戲截圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章