freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

貪吃蛇小游戲的vc設(shè)計與實現(xiàn)(編輯修改稿)

2026-01-08 19:47 本頁面
 

【文章內(nèi)容簡介】 到手機系統(tǒng),貪吃蛇的操作按鍵要求與手機按鍵的完美匹配,使貪吃蛇游戲風靡起來。 開 發(fā)環(huán)境 開發(fā)工具和軟件運行環(huán)境 開發(fā)工具 : Inter( R) Pentium(R) 4 CPU ,512MB 內(nèi)存, 80GB 硬盤 Microsoft(R) Windows(R) XP Microsoft(R) Visual C++ 軟件運行環(huán)境 : 處理器無要求, 32MB 以上內(nèi)存,硬盤 1GB 以上 Microsoft(R) Windows(R) 系列所有操作系統(tǒng) 800*600 或以上的屏幕分辨率 貪吃蛇小游戲的 VC++設(shè)計與實現(xiàn) 8 VC++ VC++ 集成開發(fā)環(huán)境是集程序文件的輸入、編輯、編譯、連接、運行等各種操作為一體的、具有 Windows 窗口界面特色的環(huán)境。 利用 VC++ 集成開發(fā)環(huán)境開發(fā) C++程序的步驟大致為: 1. 根據(jù)實際應(yīng)用問題分析出編程思路,即程序的模塊結(jié)構(gòu)和文件結(jié)構(gòu),包含有哪些函數(shù)模塊和哪些文件,函數(shù)之間的調(diào)用關(guān)系如何; 2.按照 C++語言的語法規(guī)則編寫出 C++程序; 3.在 VC++集成開發(fā)環(huán)境下,分別輸入、編輯每個程序文件 (.cpp); 4.分別運行 C++系統(tǒng)中的編譯程序使每個程序文件編譯生成相應(yīng)的目標文件 (.obj); 5.運行 C++系統(tǒng)中的連接程序把編譯后的所有目標文件連接生成一個可執(zhí)行的文件 (.exe) 6.選擇菜單中的執(zhí)行程序選項運行連接后生成的可執(zhí)行文件,得到處理結(jié)果。 創(chuàng)建 游戲 的主框架 和 操作特性分析 創(chuàng)建游戲的主框架 首先建立一個 Win32 Console Application 工程,命名為 SnakeGame,并在,選擇一個空的工程,然后單擊完成。其項 目的架構(gòu)類視圖信息如圖 31 所示: 在構(gòu)架類視圖中: snake_segment是定義的關(guān)于蛇身的數(shù)據(jù)結(jié)構(gòu),包括 2 個數(shù)據(jù)元素:橫坐標 row,縱坐標 col; Globals是游戲中定義的所以全局變量和定義的構(gòu)造函數(shù) 。 圖 31 貪吃蛇的游戲類 操作特性分析 貪 吃 蛇的操作是通過鍵盤中的 “W”, “A”, “S”, “D”控制蛇頭部的轉(zhuǎn)向的,但是不可向相反方向按鍵,例如,假設(shè)蛇正向右方向行進的時候,不可以按向左貪吃蛇小游戲的 VC++設(shè)計與實現(xiàn) 9 的方向以期其反轉(zhuǎn)向行進。在游戲進行中當玩家想要 強行退出時,提供了 “X”這個按鍵的控制,可令玩家隨心所欲。當游戲結(jié)束時,玩家可以通過按下按鍵 “Y”,繼續(xù)進行游戲;或是按下 “N”,來結(jié)束游戲。 貪吃蛇的功能描述 對于貪 吃 蛇,其功能描述如下: 一、 功能描述 食物一次隨機在游戲區(qū)域產(chǎn)生一個,每當被吃掉就自動在隨機生成一個。玩家通過控制蛇的運動,在游戲安全區(qū)域(圍墻里面屬安全區(qū))尋找食物,每吃到一個食物,蛇的長度就會增長一節(jié)。隨著蛇的成長,蛇的行進速度也會變快,此時游戲難度隨之加大,直到蛇頭碰到圍墻或是碰到自己身體的某部分,則游戲結(jié)束。 二、游戲界面 描述 : 游戲界面簡單,有關(guān)于分數(shù)的顯示。整個游戲是在控制臺里完成的,蛇身、食物、圍墻等可以用不同的顏色顯示。蛇身用 “oooo”顯示,食物用 “*”顯示,圍墻用一系列 “= = =”顯示。美感談不上,只有簡單。 如圖 32 所示。 圖 32游戲畫面 貪吃蛇小游戲的 VC++設(shè)計與實現(xiàn) 10 第四章 用 VC++設(shè)計 貪 吃 蛇 的 具體 實現(xiàn) 寫在設(shè)計前的構(gòu)思 設(shè)計前的游戲分析 在具體設(shè)計游戲之前,先來分析一下整個游戲的大體上的實現(xiàn)。貪 吃 蛇這個游戲,程序的主體可以大致分為: 生這 3 個部分。采用分 治算法的思想對游戲進行分析。第一項蛇的移動,就是在玩家沒有對蛇進行操作的時候,蛇會自動地往某個固定方向進行移動,直至蛇頭碰到圍墻。這一項可采用動畫片設(shè)計的思想,通過連續(xù)切換有變化的圖片,圖片上的蛇就會動起來了?;谶@個構(gòu)想,確定出 2 個時時刻刻都在變化的點,一個是蛇的頭部,一個是蛇的尾部。蛇的頭部和尾部在時刻 1 的位置,到了時刻 2蛇的頭部要向前伸長一節(jié),蛇的尾部也要向前伸長一節(jié),同時時刻 1 的尾部也要消除掉。第二項蛇的頭部方向的改變,就是在游戲和玩家交互的時候,當游戲玩家按下操控改變蛇頭部的按鍵,此時蛇身會按玩家 的意愿,做出相應(yīng)的動作。要完成這一個,第一要接受玩家的按鍵,第二要做出相應(yīng)的反應(yīng)。第三項食物的產(chǎn)生,蛇的成長是依靠不斷地吞掉食物一節(jié)一節(jié)生長的,游戲區(qū)域每吃掉一個食物,要在游戲區(qū)域自動產(chǎn)生另一個食物,同時出現(xiàn)食物的位置是隨機的。這個可以設(shè)置隨機數(shù)生成函數(shù),注意到屏幕上的點是和矩陣聯(lián)系在一起的,因此每個點都是有橫縱坐標的,想要在屏幕上的某個點顯示什么這就變的很容易了。最后游戲的退出設(shè)計可以通過設(shè)置循環(huán)來完成。這里,先分析游戲的特點,把整個游戲的核心數(shù)據(jù)結(jié)構(gòu)提取出來,再根據(jù)數(shù)據(jù)結(jié)構(gòu)的特點提取核心功能模塊的關(guān)聯(lián), 然后對這些功能一一進行細化,從而完成整個游戲的設(shè)計。 定義蛇身的數(shù)據(jù)結(jié)構(gòu) 對于蛇身在某一瞬間的位置標識,我們采用一個一維的數(shù)組來標識出來 ,即用動態(tài)增長的數(shù)組來存儲每一節(jié)蛇身的位置(包括蛇頭和蛇尾), 也就是說,用存儲單位空間存儲當前蛇身某部位的位置來對整個蛇身的位置進行標識,因此每個存儲空間的內(nèi)容就是一個點的坐標值 (row,col),而蛇身以從左到右的方式進行編號,最左邊是蛇的尾部,最右邊是蛇的頭部。如表 41 為三節(jié)蛇的數(shù)據(jù)結(jié)構(gòu)。 貪吃蛇小游戲的 VC++設(shè)計與實現(xiàn) 11 表 41 三節(jié)蛇的數(shù)據(jù)結(jié)構(gòu) snake[0].row 和 snake[0].col 是第 0號蛇身也就是蛇尾的橫坐標 row 和縱坐標 col ;依此類推, snake[2].row 和 snake[2].col 則是第 2 號蛇身也就是蛇頭的橫坐標 row和縱坐標 col。 算法設(shè)計 與程序流程圖 貪吃蛇算法設(shè)計 Snake Game: ====================================================================== 1:初始化游戲,游戲界面的繪制、游戲速度的設(shè)置、食物產(chǎn)生 2: while 玩家不按退出鍵 3: if 玩家按下某方向鍵 4: 蛇身按照玩家按下方向移動 5: else 蛇身按照默認方向(右)移動 6: end if 7: if 蛇頭碰到墻壁 8: 游戲結(jié)束 9: end if 10: if 蛇頭碰到自身 11: 游戲結(jié)束 12: end if 13: if 蛇頭碰到食物 14: 蛇身增長、分數(shù)增加、產(chǎn)生新食物 15: end if 16: end while 17:游戲結(jié)束 程序流程圖 (snake[0].row, snake[0].col) (snake[1].row, snake[1].col) (snake[2].row, snake[2].col) 貪吃蛇小游戲的 VC++設(shè)計與實現(xiàn) 12 圖 41 程序流程圖 游戲初始化 界面繪制、產(chǎn)生食物 方向鍵按下 蛇行進方向為按下方向鍵 蛇正常移動 碰壁 撞到自己 碰到食物 蛇身增長、分數(shù)增加、再產(chǎn)生食物 玩家沒有按退出鍵 游戲結(jié)束 貪吃蛇小游戲的 VC++設(shè)計與實現(xiàn) 13 光標移動 的 設(shè)計與 實現(xiàn) 在游戲過程中,對于光標的移動相當重要。首先,食物的產(chǎn)生是隨機的,可能出現(xiàn)在游戲界面的任何一個地方,因此生成隨機坐標后,就要將光標移動到該坐標,然后進行顯示食物操作。其次,游戲界面的顯示也需要移動光標。 譬如,縱向的圍欄的顯示。再次,就是蛇身的移動了,蛇尾部要不斷清空,這樣蛇就動起來了。其中 x 為縱坐標, y 是橫坐標,( x, y)對應(yīng)于屏幕上的像素點。 COORD 這個數(shù)據(jù)結(jié)構(gòu)、 SetConsoleCursorPosition()、 GetStdHandle()這 2 個函數(shù)都是頭文件 里的。其中 SetConsoleCursorPosition()將光標位置設(shè)為指定位置, GetStdHandle()得到標準輸入輸出的句柄。 Gotoxy()這個函數(shù)是布爾型的,返回真或假。 bool gotoxy( short x, short y ) //移動光標 { COORD coord = { x, y }。 if( !SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ) ) return false。 if( !SetConsoleCursorPosition( GetStdHandle( STD_ERROR_HANDLE ), coord ) ) return false。 return true。 } 下面將光標移動應(yīng) 用到貪吃蛇游戲中。 顯示水平圍墻的實現(xiàn) 水平圍墻就是在游戲區(qū)域中,限制蛇行動的上下界,即活動的最大邊界。這里用一系列 “= = =”連續(xù)顯示,直到設(shè)定的最大活動范圍。 void drawline(int col, int row) { gotoxy(col,row)。 for (int i=0。imaxcol+2。i++) cout=。 } 貪吃蛇小游戲的 VC++設(shè)計與實現(xiàn) 14 水平圍墻如圖 42 所示 。 圖 42 水平圍墻 顯示分數(shù)的實 現(xiàn) 對于玩家的得分,是在游戲當中,玩家控制貪吃蛇每當吞掉一個食物,相應(yīng)的分數(shù)就會增加一分。游戲結(jié)束時,分數(shù)會清零,再下一盤游戲中從 0 分開始計數(shù)。 void showscore() { gotoxy(20,maxrow+3)。 coutScore: score。 } 玩家的分數(shù)顯示如圖 43 所示,初始分數(shù)為 0。 圖 43 分數(shù)的顯示 接收玩家按鍵信息的實現(xiàn) 為了接收來自鍵盤的信息,這里用到了 這個頭文件。通過 一個布爾函數(shù) kbhit()的真假來判斷是否有按鍵被敲擊,如果沒有,游戲正常運行;否則通過 getch()得到那個 char 變量的按鍵信息,然后修改蛇的運動方向。 游戲結(jié)束時顯示信息的實現(xiàn) 當游戲介紹時,屏幕上要顯示 “Game Over”的字樣,還有 Another Game (y/n)? 的字樣來讓玩家選擇繼續(xù)游戲還是退出游戲。這里是通過使用 gotoxy()函數(shù),使上述的字樣在想要顯示的位置出現(xiàn)的。游戲結(jié)束的顯示信息如圖 44 所示 。 圖 44 游戲結(jié)束的顯示 貪吃蛇小游戲的 VC++設(shè)計與實現(xiàn) 15 貪吃蛇游戲主干 的設(shè)計 游戲的初始化與加載的實現(xiàn) 游戲開始的時候,初始化蛇的長度為 4 節(jié),行進方向為向右。并定義一個 2維數(shù)組 screengrid[row][col],該數(shù)組的作用是產(chǎn)生食物用。蛇開始移動的坐標是( 2, 2)。然后繪制圍墻橫的圍墻用一排 “=”顯示,縱的圍墻用一列 “|”顯示,這樣游戲的框架就出來了。初始化游戲分數(shù),并顯示游戲的一些幫助,如按鍵設(shè)置等。 游戲初始化,包括蛇的初始長度,蛇初始行進的方向,游戲區(qū)域的顯示。 void loadgame(){ int row,col。 snake_length=4。
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1