前言
經過一個多月的學習,又加深了對c++的理解,所以接下來,就和大家分享一下,一個月學習c++的成果,控制檯貪喫蛇,大佬勿噴。
一、運行界面
- 進入界面
- 單人遊戲界面
- 難度選擇界面
4. 自定義地圖界面
5. 雙人對戰界面
6. 地圖選擇界面
7. 存檔讀取界面
功能很多,就不一一列舉了,大致就是存檔,存地圖,讀地圖這些功能。
二、類的大致抽象
注:由於每個人對遊戲的理解不一樣,所以這裏我僅僅提供我個人的想法,如果有更好的想法,歡迎告知作者,也請各位大佬勿噴。
-
遊戲基礎頭文件
在此包含關於遊戲的所有基礎功能操作,比如設置窗口大小,設置背景音效,以及對控制檯的一些操作
- 功能函數:
- ChangeEnglish():切換輸入法爲英文
- PlayMusic():播放背景音樂
- ConsoleInit():控制檯大小初始化
- ShowCursor():隱藏光標
- WriteChar():在屏幕指定行row,指定列col 處,用顏色color,打印字符串szInfo
- 功能函數:
-
CSnake類
-
大致功能:保存蛇的基本信息和蛇的一些操作
-
數據:
- 蛇的座標數組
- 蛇的運動方向
- 蛇的長度
- 蛇的顏色
- 蛇的存活狀態
- 蛇的分數
- 蛇的移動速度
-
操作:
- 設置上述所有數據的接口
- 蛇的移動
-
-
CFood類
- 大致功能:能夠保存食物信息,在地圖上隨機創建食物
- 數據:
- 食物狀態
- 操作:
- 隨機生成食物
-
CArea類
- 大致功能:能夠設置遊戲難度,管理遊戲狀態
- 數據:
- 蛇類對象
- 一個二維數組的遊戲地圖
- 一個食物對象
- 遊戲模式選擇標誌
- 當前選擇的地圖編號
- 操作:
- 選擇遊戲模式
- 畫出地圖
- 獲取用戶輸入
- 開始遊戲
- 暫停遊戲
- 遊戲過程處理
- 在側邊欄顯示遊戲數據
- 難度選擇,僅限單人
- 創建地圖,設置後可保存
- 加載地圖至緩衝區
- 讀取存檔,僅限單人
三、關於一些問題的思考
-
如何實現蛇的移動?
- 在一個循環裏,根據蛇的方向,調用move,讓蛇自己一定時間畫自己即可
-
如何實現選項的高亮選擇?
- 根據用戶的按鍵輸入,更改當前的遊戲狀態標識,根據該標識更改選項界面的顏色,從而達到選擇的效果
-
如何實現雙蛇的僞多線程移動?
- 在蛇的移動循環裏,使用一個計數器和Sleep函數,計數器每加到一定值的時候,響應一條蛇的移動,加到另一個值的時候,響應另一條蛇的移動。
-
如何實現地圖數據的存取,遊戲狀態的存取?
- 將地圖和蛇與食物的數據分別保存在不同的文件裏,使用的時候讀取即可。
四、最後一些想說的
第一次發帖,有一點小激動。另外,代碼裏面有一些小bug,還有一些功能沒有實現,各位大佬輕點噴,也歡迎各位大佬指正。
五、代碼
- 編譯環境:vs2017 + win10
- 編譯即可運行
- csdn下載:https://download.csdn.net/download/peng1874/11987227
- 百度網盤下載:鏈接:https://pan.baidu.com/s/17eL3wbKWljWZgi6WH4S50Q
提取碼:hnqd
複製這段內容後打開百度網盤手機App,操作更方便哦