今天1024哇,正好這會不想看書,寫一篇文章表示一下,其實這篇文章早就該寫了。9月初做的課程設計實驗,過了兩周后老師才有空檢查,國慶期間寫了1w多字實驗報告,到今天寫在博客上。時間線拉的有點太長了,不應該總是看著過去,應該向前看哇!
因為自己確實想通過這段時間學一學怎么做UI,所以選擇了這個題目,經(jīng)大佬推薦,我選擇了Qt來編寫這個程序。所以我自己完全是從零開始學習,邊學邊做的。編寫程序前后大概花了10天時間叭,前兩天各種找入門資料,開1.5倍速看教學視頻。然后花了3天時間編寫核心代碼,最后幾天時間在擴展游戲的功能,優(yōu)化界面。
學習不難,難在開始,更難在深入。
一、引言
這篇文章以展示為主吧,會放代碼鏈接(CSDN上),所以有需要的小伙伴可以去下載源代碼,直接讀程序即可。這里就不具體介紹如何如何實現(xiàn)的了,界面都是使用的Qt的各種類去實現(xiàn)的,界面以外的就比較簡單了。想學習Qt的話最好跟著教程學,視頻文字都可以。先去了解Qt的特點,框架,用法和機制,等需要具體設計時,再去針對性地查找資料,去詳細地了解。
二、界面展示
那就直接放圖吧,這種有UI的程序,直接看圖應該就能了解大致的功能了。
1.界面



2.棋盤界面點擊按鈕的對話框


3.消息對話框



三、功能介紹
直接抄實驗報告。
1.基本功能
本游戲設置有圖形化交互界面,游戲模式為人人對戰(zhàn)。游戲開始后,會顯示一個帶有行列號的19×19的棋盤,玩家根據(jù)執(zhí)棋方(下一步由哪一方走)的提示知曉該輪到哪一方下棋,玩家可通過鼠標來控制棋子在棋盤中的擺放位置。
落子后,黑棋或白棋會顯示在棋盤上。當有至少五個相同顏色的棋子相連成線時,游戲會彈框顯示哪方獲勝。當棋盤已下滿卻未能分出勝負,會彈框顯示游戲和局。
2.計時功能
計時雙方下棋時的等待時間,并在用戶界面的右上角顯示。玩家1落子后,在玩家2落子前會記錄玩家2所用時間。
3.重新開始
清空棋盤,重置執(zhí)棋方,重置雙方時間。
4.鍵盤輸入
除了鼠標點擊下棋,玩家也可以通過鍵盤輸入所下棋子在棋盤中的橫縱坐標來確定棋子在棋盤中的擺放位置。根據(jù)棋盤行列號,依次輸入落子位置的x和y坐標。
5.悔棋
玩家落子后,可悔棋清除已下棋子,以重新選擇落子位置。棋盤無子時悔棋無效,且玩家只能悔棋到上一步。
6.存檔讀檔
游戲進行中,可存檔,保存當前棋盤信息,執(zhí)棋方和雙方的用時時間。在主界面中可以選擇讀檔開始游戲,游戲會還原最近一次的存檔情況,包括棋盤信息,執(zhí)棋方和雙方的用時時間。
7.游戲設置
a.棋盤大小默認為19×19,玩家可選擇棋盤大小,游戲根據(jù)用戶輸入的數(shù)字可以重新繪制新的規(guī)模的棋盤。b.游戲默認先手執(zhí)白棋,玩家可選擇先手執(zhí)白棋還是黑棋。c.游戲默認背景為無背景,玩家可選擇喜歡的背景來開始游戲。
游戲設置完成,會清空棋盤上的棋子,重置雙方用時,按照所設置的棋盤大小,執(zhí)棋方和背景圖片重新顯示游戲界面。
8.聲音功能
落子時會播放“啪”的聲音,玩家勝利時會播放勝利音頻,和局時會播放失敗音頻。
四、程序不足
界面跳轉(zhuǎn)是非模態(tài)的,即打開新窗口后,仍然可以操作原窗口,會影響程序性能。
界面設計是代碼和ui結(jié)合的,有點混亂。
調(diào)整棋盤大小的設計不太合理,而且調(diào)整后的顯示不合理。
信號和槽函數(shù),我只會用connect的lambda表達式,比較局限。
讀檔界面,雖然有三個存檔窗口,但只有第一個可以用。
五、最后
因為是邊學邊編,所以等到后面學到新的內(nèi)容后,某些設計的不太合理的東西也不太方便更改了。
然后你所看到的界面都是用Qt做出來的,包含了挺多內(nèi)容的,我也沒有太多時間去一一介紹,也不太方便直接把實驗報告貼出來,所以我還是建議直接去看源代碼吧哈哈,其實就是賺賺積分嘿嘿。
源代碼下載地址:https://download.csdn.net/download/jason_tbwh/11916149
如果哈,如果,以后會更多學習Qt開發(fā)的話,再來看更多的博客內(nèi)容吧。