前往
大廳
主題

程式作品【西洋棋】

魔化鬼鬼 | 2021-07-04 02:35:37 | 巴幣 2104 | 人氣 2252

  • 主題選擇
        大一有堂課叫「物件導向程式設計」,配合這堂課的內容,我們基礎程式設計課(下)有期末專題,大概就是要我們學了物件導向的觀念後去實作出一些作品。不過說實在的,我其實期待物件導向課會出現像是 SOLID 原則,這種我比較不熟的概念,但是貌似沒有,大部分時間都在講 c++ 語言的一些語法,大概講完封裝、繼承、多型、抽象的概念就沒了,覺得有些可惜。倒是實作的部分挺多的,兩個禮拜一個小專題,後面甚至都在銜接資料結構的東西,二元樹、鏈結串列、佇列,堆疊等,感覺嘉大比較偏實作。

        這門課的專題是從老師給的主題中挑一個出來做,我們這組是選西洋棋,而我選的時候是完全不懂西洋棋的,連規則是什麼都不知道,當初想說「練習寫 code 還可以學怎麼玩西洋棋,應該不錯吧」就選了 :D,不過事實是,我還是下得跟大便一樣,但至少我學會怎麼玩了,也稍微認識了一下西洋棋的環境,也能看懂一些迷因了 XD

像這個我就笑很久 ( Hikaru 錯愕了眼神真的有夠好笑

  • SFML - 圖形化介面
        由於老師大概只跟我們一些必要功能和要用 C++ 寫,剩下都可以自由發揮,於是我想說找找看 C++ 有沒有那種 GUI 的套件可以用,找來找去感覺就找到 QT 跟 SFML,接著又看了一下,感覺 SFML 比較符合遊戲程式設計的概念,而且輕量很多,所以就選了 SFML 這個函式庫了。

        SFML 之所以輕量就是因為他除了幫你弄好畫面顯示、各種事件、音效等基本的東西外就沒了,連 Button 那些都要自己刻,算是滿麻煩的一個點吧。整體邏輯大概就是每一幀都一直 poll event,有什麼 event 就做什麼事,跟 Python 的 pygame 其實差不多。

  • 遊戲畫面
倫敦系統?




  • 心得
        這應該是我第一次用 C++ 寫的規模較大的程式吧,感覺 C++ 沒有以前覺得的那麼麻煩,可能是我太久沒寫 Python 了吧 XD,然後這次程式碼也模擬了 MVC 的概念,說模擬是因為寫到後面已經越來越大便 code 了,不敢說是完全照著 MVC 的設計模式去走的 XD。

        不過坦白來說,我覺得 MVC 對於遊戲程式設計來說不是很好用,不知道怎麼說,就是寫起來卡手卡腳的,好險西洋棋的 GUI 化寫起來的概念跟網頁還算是滿像的,大致上還算 OK。

        然後 Undo 的功能是我自己加的,原本想說要來做做看簡單的 AI,利用 min-max algorithm 配上 alpha-beta 剪枝,但是時間問題加上我不知道怎麼評分棋盤,還有 undo 功能的小 bug,就沒繼續做了,可能以後有空再回來做。應該是不會再回來了啦


Github 的連結,程式碼很大便,我就廢。

創作回應

薯條控
<(_ _)>
2021-07-04 05:13:20
魔化鬼鬼
我是大便
2021-07-04 11:55:01
樂小呈
想到以前不懂物件導向,連 function 都不懂的時候,用又臭又長的判斷是寫出西洋棋,每個按鈕裡都放了相同的程式碼ww
2021-07-05 15:30:18

更多創作