貪吃蛇設計報告

2023-02-11 01:12:05 字數 2557 閱讀 4175

摘要貪吃蛇遊戲作為一款簡單遊戲,是手機遊戲的代表,在十多年前風靡全世界,時至今日,貪吃蛇遊戲任然活躍的網路的各個角落。本次編寫的便是一款經典的貪吃蛇遊戲,任務確定為實現貪吃蛇遊戲過程。作為遊戲的組成,通過必要的圖形,文字介面來引導遊戲者參與到這款遊戲中,更有效的吸引遊戲者的興趣,為了拓展遊戲者對高分和刺激的追求,設定各種難度的關卡也成為了遊戲的必需品,貪吃蛇遊戲的編寫共有八個類,其中,主要包括遊戲的控制與遊戲介面的建立兩個方面,對於前者,需要通過控制台來獲取輸入,而對於後者,要求應用合適的資料結構和演算法,通過編寫本次課程設計,對理論知識與實際作品之間的關係有了更加深刻影響。

關鍵字:貪吃蛇,介面,難度控制,資料結構

本次設計為貪吃蛇遊戲,一款遊戲就必須要與使用者擁有良好的互動介面,使用c++對dos介面顯示的處理需要細緻和精細,在遊戲過程中,那麼就會有遊戲載入介面,遊戲進行介面,和結束介面,在輸入方面,這款遊戲採用上下左右四個按鍵進行控制,需要用到回車鍵進行選擇確定,而遊戲的目標,則是獲取更高分數,挑戰更高難度。

功能設計框圖

1.1.1 軟體選擇

本次編寫軟體為codeblocks 16.01

1.1.2 設計選擇

通過分析,將遊戲分為輸入,遊戲執行,輸出三大部分,對於每個部分需要用不同的類進行實現和聯絡,大概將其分為五個類,分別為工具類,載入類,蛇體類,遊戲介面類和執行類。

系統模組-功能表

2.1 理論分析

2.1.1 演算法設計分析

(1)在載入介面時,在介面上設計顯示出乙個英文單詞snake,為了美觀,便將其出現的方式進行改變,不再是按照行列進行單調的輸出,採用隨機在螢幕上打點的方式進行輸出,為了實現這一目標,需要將snake點陣的所有的座標點儲存到**中,在輸出時,隨機取點,隨機取顏色進行輸出,通過控制延時,使整個單詞顯得遊戲而且漂亮的輸出,使遊戲顯得更有獨特性。

載入動畫流程圖控制方向流程圖

(2)在遊戲選擇難度和控制方面,選用了通過鍵盤讀取輸入字元的方式來獲得使用者的輸入,如何顯示出被選擇的專案,通過用->標記以外,還使用了改變其背景底色的方式,明顯且符號使用者的習慣。通過上下左右四個按鍵來控制選單欄,是在各個程式都常用的方式。

(3)如何控制蛇的移動,仔細分析蛇的移動可以看出,在蛇的每一次移動中,蛇頭向前拓展乙個單位,而後所有的蛇體都向前拓展乙個單位,再把蛇尾去掉,倘若吃掉乙個食物,那麼就不用再把蛇尾去掉,蛇體的長度就又長了乙個單位,為了描述當前蛇頭的運動方向,還要用乙個變數來儲存,用其值表示當前蛇頭的運動方向。

(4)用迴圈來實現蛇的移動,假設當前不對蛇體進行轉向,那麼在介面上蛇就會按照當前運動方向進行移動,如果通過鍵盤輸入了方向,也將其指令分為三種類別,第一種是與當前蛇的運動相同,那麼就加速,使蛇更快的朝著當前方向運動,第二種就是與當前蛇的運動相反,此時應該忽略掉這種指令,不能進行實現,第三種就是剩下的方向,那麼就按照輸入的方向,對現在蛇的方向進行修改。

(5)遊戲結束的判斷,貪吃蛇遊戲結束存在兩種判斷,第一種是蛇頭撞到障礙物比如地圖邊界,那麼遊戲結束,第二種是蛇頭撞到自己的蛇體,遊戲也會結束,那麼就在蛇移動後判斷,蛇頭的座標與障礙物和自己蛇體的所有點是否相同,如果存在乙個相同的點,那麼遊戲結束,反之,遊戲繼續。

(6)遊戲難度控制,如何控制遊戲的難度,是使用者有不同的刺激體驗,為此,結合了許多貪吃蛇遊戲,我將難度控制放在了蛇移動速度和地圖障礙物上面,蛇體的移動速度越快,那麼留給遊戲者的反應時間也就越短,而新增地圖障礙物,則使得難度加大,地圖不在是普通的長方形地圖,存在與地圖的障礙物也是遊戲者需要用心注意,於是將簡單難度控制為普通速度,在普通難度時,會增加速度,在困難難度時會在增加速度的同事,增加障礙物。

(7) 食物和障礙物的控制,食物的出現必須在遊戲開始介面,或者當蛇吃掉前乙個食物的時候,才會生成下乙個食物,也就是說整個地圖只會有乙個食物,這裡引入隨機,讓下乙個食物隨機出現在地圖的每乙個地方,而障礙物的出現,便是在難度選擇之後進行出現,且在這一局遊戲中改變。但是食物和障礙物都會出現衝突,比如下乙個食物的出現,用隨機生成了乙個座標,但是這個座標卻是蛇體的一部分或者是某個障礙物,那麼這就不合理,於是在隨機的前提下,要確保生成資料的合理性,同時為了使障礙物更加規範,障礙物也不一定是乙個點,可能是一堵牆,或者兩堵牆挨在一起,這些都需要通過細節控制。

障礙物生成流程圖

2.1.2 資料結構分析

在本次設計中,蛇需要有合適的資料結構進行儲存和使用,為了方便對蛇的移動進行處理,蛇的移動會對蛇頭和蛇尾頻繁操作,而且為了更形象的描述蛇,需要資料結構有著線性結構,而為了儲存地圖,障礙物載入動畫,需要對該資料結構有著較高讀取方便的要求。

2.1.3 流程框圖

2.2 **編寫

2.2.1 工具類

在工具類中,為了編寫適用整個程式的工具,將需要的函式分為控制游標等七個子函式,其中使用到的大多數是對dos介面的操作,主要函式為控制游標位置和修改輸出格式。

(1)控制游標位置

呼叫計算機函式setconsolecursorposition,通過定義coord pos,修改和的值就可以實現游標的位置控制

(2)修改字元顏色

使用setconsoletextattribute,這是乙個可以在應用程式程式設計介面中設定控制視窗字型演示和背景色的計算機函式。

原型:bool setconsoletextattribute(handke hconsoleoutput,word wattributes);功能表

貪吃蛇課程設計報告 C語言版

院系 計算機科學技術學院 班級 軟體11 2 姓名 張萌 學號 20111702010235 指導教師賀薪宇 2013年11月10日 kmp演算法對於任何模式和目標序列,都可以 性時間內完成匹配查詢,而不會發生退化,是乙個非常優秀的模式匹配演算法。但是由於kmp演算法在構造跳轉表next過程中進行了...

貪食蛇課程設計課題報告

目錄一 設計要求 2 二 設計的作用 目的 2 三.課題分析 2 1 貪吃蛇遊戲功能分析 2 2 遊戲介面分析 3 3 設計思路分析 3 四 設計的具體實現 3 1 系統組成模組結構及功能 3 1 函式定義 3 2 主函式main 4 3 畫介面函式drawk 5 4 遊戲具體過程函式gamepla...

貪食蛇遊戲設計

電路設計與 結課 基於8 8點陣貪吃蛇遊戲的設計 學院 資訊工程學院 專業 電腦科學與技術 班級 計算機18 4班 姓名 徐昇陽 學號 5011214402 指導老師 孟洪兵 8 8點陣貪吃蛇遊戲 8 8點陣貪吃蛇遊戲基於at89c51微控制器與8 8點陣的貪吃蛇遊戲機開發。本設計利用微控制器把乙個...