想到以前不懂物件導向,連 function 都不懂的時候,用又臭又長的判斷是寫出西洋棋,每個按鈕裡都放了相同的程式碼ww
- 主題選擇
大一有堂課叫「物件導向程式設計」,配合這堂課的內容,我們基礎程式設計課(下)有期末專題,大概就是要我們學了物件導向的觀念後去實作出一些作品。不過說實在的,我其實期待物件導向課會出現像是 SOLID 原則,這種我比較不熟的概念,但是貌似沒有,大部分時間都在講 c++ 語言的一些語法,大概講完封裝、繼承、多型、抽象的概念就沒了,覺得有些可惜。倒是實作的部分挺多的,兩個禮拜一個小專題,後面甚至都在銜接資料結構的東西,二元樹、鏈結串列、佇列,堆疊等,感覺嘉大比較偏實作。
這門課的專題是從老師給的主題中挑一個出來做,我們這組是選西洋棋,而我選的時候是完全不懂西洋棋的,連規則是什麼都不知道,當初想說「練習寫 code 還可以學怎麼玩西洋棋,應該不錯吧」就選了 :D,不過事實是,我還是下得跟大便一樣,但至少我學會怎麼玩了,也稍微認識了一下西洋棋的環境,也能看懂一些迷因了 XD
像這個我就笑很久 ( Hikaru 錯愕了眼神真的有夠好笑
- SFML - 圖形化介面
SFML 之所以輕量就是因為他除了幫你弄好畫面顯示、各種事件、音效等基本的東西外就沒了,連 Button 那些都要自己刻,算是滿麻煩的一個點吧。整體邏輯大概就是每一幀都一直 poll event,有什麼 event 就做什麼事,跟 Python 的 pygame 其實差不多。
- 遊戲畫面
倫敦系統?
- 心得
不過坦白來說,我覺得 MVC 對於遊戲程式設計來說不是很好用,不知道怎麼說,就是寫起來卡手卡腳的,好險西洋棋的 GUI 化寫起來的概念跟網頁還算是滿像的,大致上還算 OK。
然後 Undo 的功能是我自己加的,原本想說要來做做看簡單的 AI,利用 min-max algorithm 配上 alpha-beta 剪枝,但是時間問題加上我不知道怎麼評分棋盤,還有 undo 功能的小 bug,就沒繼續做了,可能以後有空再回來做。應該是不會再回來了啦
Github 的連結,程式碼很大便,我就廢。