發一下本身開發的自娛自樂小遊戲:奧賽羅(黑白棋、翻轉棋),支持可落子位置提示,原創翻轉算法

前言:java

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

 

開發歷程github

本來想法是經過加載一些靜態圖片資源來繪製棋盤和棋子,不事後來本身作的圖片效果不是太滿意,網上也沒有找到合適的圖片資源,就把這個想法給pass掉了,改爲所有由canvas進行繪製。算法

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

之前玩就以爲8x8棋盤過小,因此開發的時候就保留了棋盤的可擴展性,能夠支持任意格子數量的棋盤,好比正常的8x8棋盤,也能夠9x9,10x10,16x16棋盤等等多線程

原先考慮是須要多線程的,後來沒有用到。由於幾乎全部計算都在幾毫秒以內就完成了,也不必非要多線程了。可是仍是使用了兩個線程,一個窗口線程和一個後臺保活線程,後臺線程暫時只有監控窗口線程運行狀態和打打日誌這樣的功能。優化

遊戲截圖ui

遊戲中提示下一步能夠落子的位置
結束遊戲能夠選擇從新開始

項目維護地址線程

https://github.com/eguid/Othello設計

 

目前開發進程

已完成

1.0版本更新 一、增長贏棋提示和從新開始遊戲 二、優化代碼結構

0.3版本更新 一、輸贏邏輯判斷 二、落子位置算法優化和越界bug修復

0.2版本更新 一、落子位置預測算法實現

0.1版本實現 一、界面、棋盤、棋子繪製 二、棋子翻轉算法實現

待完成

一、悔棋(悔棋真的很討厭,因此一直沒加這個功能)

二、人機對戰

三、聯網對戰

 

若是有興趣的小夥伴也能夠參與開發

相關文章
相關標籤/搜索