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

正文內(nèi)容

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

2025-01-08 19:47 本頁(yè)面
 

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