c++實現貪喫蛇詳解(附代碼)

前言

經過一個多月的學習,又加深了對c++的理解,所以接下來,就和大家分享一下,一個月學習c++的成果,控制檯貪喫蛇,大佬勿噴。

一、運行界面

  1. 進入界面
    在這裏插入圖片描述
  2. 單人遊戲界面
    在這裏插入圖片描述
  3. 難度選擇界面

在這裏插入圖片描述
4. 自定義地圖界面
在這裏插入圖片描述
5. 雙人對戰界面
在這裏插入圖片描述
6. 地圖選擇界面
在這裏插入圖片描述
7. 存檔讀取界面
在這裏插入圖片描述

功能很多,就不一一列舉了,大致就是存檔,存地圖,讀地圖這些功能。

二、類的大致抽象

注:由於每個人對遊戲的理解不一樣,所以這裏我僅僅提供我個人的想法,如果有更好的想法,歡迎告知作者,也請各位大佬勿噴。

  1. 遊戲基礎頭文件

    在此包含關於遊戲的所有基礎功能操作,比如設置窗口大小,設置背景音效,以及對控制檯的一些操作

    • 功能函數:
      • ChangeEnglish():切換輸入法爲英文
      • PlayMusic():播放背景音樂
      • ConsoleInit():控制檯大小初始化
      • ShowCursor():隱藏光標
      • WriteChar():在屏幕指定行row,指定列col 處,用顏色color,打印字符串szInfo
  2. CSnake類

    • 大致功能:保存蛇的基本信息和蛇的一些操作

    • 數據:

      • 蛇的座標數組
      • 蛇的運動方向
      • 蛇的長度
      • 蛇的顏色
      • 蛇的存活狀態
      • 蛇的分數
      • 蛇的移動速度
    • 操作:

      • 設置上述所有數據的接口
      • 蛇的移動
  3. CFood類

    • 大致功能:能夠保存食物信息,在地圖上隨機創建食物
    • 數據:
      • 食物狀態
    • 操作:
      • 隨機生成食物
  4. CArea類

    • 大致功能:能夠設置遊戲難度,管理遊戲狀態
    • 數據:
      • 蛇類對象
      • 一個二維數組的遊戲地圖
      • 一個食物對象
      • 遊戲模式選擇標誌
      • 當前選擇的地圖編號
    • 操作:
      • 選擇遊戲模式
      • 畫出地圖
      • 獲取用戶輸入
      • 開始遊戲
      • 暫停遊戲
      • 遊戲過程處理
      • 在側邊欄顯示遊戲數據
      • 難度選擇,僅限單人
      • 創建地圖,設置後可保存
      • 加載地圖至緩衝區
      • 讀取存檔,僅限單人

三、關於一些問題的思考

  1. 如何實現蛇的移動?

    • 在一個循環裏,根據蛇的方向,調用move,讓蛇自己一定時間畫自己即可
  2. 如何實現選項的高亮選擇?

    • 根據用戶的按鍵輸入,更改當前的遊戲狀態標識,根據該標識更改選項界面的顏色,從而達到選擇的效果
  3. 如何實現雙蛇的僞多線程移動?

    • 在蛇的移動循環裏,使用一個計數器和Sleep函數,計數器每加到一定值的時候,響應一條蛇的移動,加到另一個值的時候,響應另一條蛇的移動。
  4. 如何實現地圖數據的存取,遊戲狀態的存取?

    • 將地圖和蛇與食物的數據分別保存在不同的文件裏,使用的時候讀取即可。

四、最後一些想說的

​ 第一次發帖,有一點小激動。另外,代碼裏面有一些小bug,還有一些功能沒有實現,各位大佬輕點噴,也歡迎各位大佬指正。

五、代碼

  1. 編譯環境:vs2017 + win10
  2. 編譯即可運行
  • csdn下載:https://download.csdn.net/download/peng1874/11987227
  • 百度網盤下載:鏈接:https://pan.baidu.com/s/17eL3wbKWljWZgi6WH4S50Q
    提取碼:hnqd
    複製這段內容後打開百度網盤手機App,操作更方便哦
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章