亚洲一级免费看,特黄特色大片免费观看播放器,777毛片,久久久久国产一区二区三区四区,欧美三级一区二区,国产精品一区二区久久久久,人人澡人人草

貪吃蛇實(shí)習(xí)報(bào)告

時(shí)間:2022-08-03 15:58:49 實(shí)習(xí)報(bào)告 我要投稿
  • 相關(guān)推薦

貪吃蛇實(shí)習(xí)報(bào)告

一.功能說明

貪吃蛇實(shí)習(xí)報(bào)告

1.1總體功能說明

概況: 一條蛇在密閉的圍墻內(nèi),在圍墻內(nèi)出現(xiàn)食物,通過按鍵控制蛇向上下左右四個(gè)方向移動(dòng),蛇撞到食物,則食物被吃掉,蛇的身體增加一節(jié)。如果蛇在移動(dòng)的過程中,撞到墻壁或身體的交叉(蛇頭撞到自己的身體),則游戲結(jié)束。

特色:①暫停功能:能隨時(shí)通過按鍵來暫停游戲,再按一次則繼續(xù)游戲。

②速度調(diào)節(jié)功能:當(dāng)分?jǐn)?shù)達(dá)到某個(gè)值后,對蛇的移動(dòng)速度進(jìn)行一定的提升。 ③毒果:增加另一種的毒果食物,蛇吃到該種食物后gameover。

④音效功能:吃掉食物、撞墻、在游戲結(jié)束時(shí)有不同的音效。

1.2用戶界面

主要是在圍墻可以控制蛇吃到果實(shí),同時(shí)分?jǐn)?shù)就會(huì)升一分。側(cè)邊欄標(biāo)出了主要的功能鍵和等級,積分。

1.3使用方法

上下左右鍵控制蛇的運(yùn)動(dòng),還有任意鍵控制游戲開始,空格鍵控制暫停,當(dāng)游戲的得分超過一定數(shù),蛇的速度就會(huì)加快,

二.程序設(shè)計(jì)說明2.1 總體設(shè)計(jì)框架

2.2 關(guān)鍵算法描述

算法一:

自定義函數(shù):

void movesnake(HANDLE hOutput,int snakex[],int snakey[],int len,WORD wColors[]); 移動(dòng)蛇的函數(shù),參數(shù)主要是蛇的坐標(biāo)

void fruit(HANDLE hOutput,int snakex[],int snakey[],int *x ,int *y,WORD wColors[]); 產(chǎn)生水果的函數(shù),參數(shù)主要是蛇的坐標(biāo),和水果的坐標(biāo)。使用了數(shù)組和指針

void p_fruit(HANDLE hOutput,int snakex[],int snakey[],int *x ,int *y,WORD wColors[]); void put_fruit(int *x,int *y,int len,int snakex[],int snakey[]);

放置果實(shí)的函數(shù)

int level(HANDLE handle,int s,int p,char buf[],WORD wColors[]);

等級判斷函數(shù),傳遞了一個(gè)存放分?jǐn)?shù)的數(shù)組,速度,分?jǐn)?shù)參數(shù)

算法二:

系統(tǒng)函數(shù)

textout(HANDLE handle,int x,int y,WORD Wcolors[],” “)

專門用來輸出一些字符,圖案,主要參數(shù)就是字符的橫縱坐標(biāo)

_kbhit()

檢測是否有按鍵按下

_getch()

獲取按鍵的值

Sleep(n)

是程序休眠n毫秒

srand( (unsigned)time( NULL ));

隨機(jī)數(shù)的種子函數(shù),以時(shí)間做參數(shù)

rand()

產(chǎn)生偽隨機(jī)數(shù)序列,后面一般會(huì)跟%n,代表取0到n的整數(shù)。

2.3 程序設(shè)計(jì)的難點(diǎn)和關(guān)鍵點(diǎn)

⑴ 蛇的圖形的輸出及蛇的移動(dòng)方向。蛇頭要用一個(gè)二維數(shù)組表示,身體要隨蛇頭一起運(yùn)動(dòng)。移動(dòng)時(shí)必須從蛇頭開始,所以蛇不能向相反的方向移動(dòng),而且轉(zhuǎn)彎的時(shí)候會(huì)出現(xiàn)斷裂。

⑵ 檢測蛇有無撞到食物、圍墻或是自己的身體。當(dāng)蛇開始移動(dòng)之后,需要判斷蛇頭情況,然后根據(jù)位置是空白、食物、圍墻還是蛇的身體來做出相應(yīng)的反應(yīng)?梢杂靡粋(gè)二維數(shù)組來表示整個(gè)場景,對不同的地方賦予不同的值。

⑶ 果實(shí)的隨機(jī)產(chǎn)生。當(dāng)食物被吃掉后,要重新隨機(jī)產(chǎn)生。利用隨機(jī)函數(shù)rand產(chǎn)生隨機(jī)數(shù)并將該隨機(jī)數(shù)布置到符合場景大小的范圍中來,而且不能和蛇身重疊了,所以要判斷蛇身后在出現(xiàn)果實(shí),以此作為食物位置的橫縱坐標(biāo)。

2.4 調(diào)試的方法

問題一: 蛇頭吃到果實(shí)的表示,起初簡單認(rèn)為只要果實(shí)和蛇頭初始坐標(biāo)重合,就代表吃到了果實(shí),可是忽略了任何圖形和文字在c++中橫坐標(biāo)都占兩格,也就是果實(shí)和蛇頭都有兩個(gè)橫坐標(biāo),但蛇頭從果實(shí)的邊緣擦過,他也會(huì)吃了果實(shí),但是坐標(biāo)沒有重合,下一個(gè)果實(shí)也就不會(huì)出現(xiàn),然后我就想到把它們的坐標(biāo)都變成偶數(shù)就可以實(shí)現(xiàn)了重合。

問題二:當(dāng)撞到墻或者自己之后,蛇不會(huì)停下,而是繼續(xù)往前走,然后我就用了一個(gè)停止函數(shù)getch()。

問題三:果實(shí)出現(xiàn)的時(shí)候,不能和蛇身重合,所以需要從蛇頭一節(jié)一節(jié)的判斷之后,才可以出現(xiàn)果實(shí)。

2.5 程序性能評價(jià)

從運(yùn)行效果來看,優(yōu)點(diǎn)主要是蛇運(yùn)動(dòng)順暢,屏幕初始化美觀,不足是蛇的長度,屏幕的長寬度有限,只能玩幾關(guān)就不可以玩了。

從程序設(shè)計(jì)上來說,優(yōu)點(diǎn)主要有簡潔,明了,音樂的設(shè)置,速度升級,毒果的設(shè)置難度,各種文字移動(dòng)和色彩的閃耀,不足是沒有獎(jiǎng)勵(lì)機(jī)制,沒有更多的功能。

三.心得體會(huì)

剛開始時(shí),一直失敗,好多錯(cuò)誤,其實(shí)就是些基本的錯(cuò)誤,比如變量的定義,整型變量的范圍,結(jié)構(gòu)體的運(yùn)用,指針的定義,函數(shù)的調(diào)用等等,通過這些問題才發(fā)現(xiàn)自己學(xué)習(xí)的知識(shí)是那么不牢固。再有就是些更深難度的函數(shù),自己以前沒有學(xué)過,比如textout,getch(),rand()等等,都需要自己學(xué)習(xí)老師給的范例,而且我發(fā)現(xiàn)要是編寫一個(gè)稍大的程序,必須先畫一個(gè)流程圖,否則自己是不會(huì)知道怎么下手的,而且一個(gè)大程序是需要漸進(jìn)編寫的,邊寫邊改的,不可能一步就能考慮周全。

當(dāng)時(shí)蛇出現(xiàn)并且能動(dòng)時(shí),我的心情激動(dòng)無比,雖然里面也借鑒了老師給的例子一部分,可是畢竟是自己自學(xué),編出來的,所以沒有什么是不能做的,起初想想都覺得自己是不可能編出那么復(fù)雜的游戲,可是當(dāng)自己真的編出來的時(shí)候,才會(huì)相信自己是有能力的。

而且我們這次所學(xué)的函數(shù),還有一些其它的小技巧,我想對以后的編程都會(huì)有幫助的。

【貪吃蛇實(shí)習(xí)報(bào)告】相關(guān)文章:

貪吃蛇作文(通用57篇)11-19

大學(xué)實(shí)習(xí)報(bào)告實(shí)習(xí)報(bào)告01-07

保險(xiǎn)公司實(shí)習(xí)報(bào)告 保險(xiǎn)公司實(shí)習(xí)報(bào)告 實(shí)習(xí)報(bào)告10-14

大學(xué)實(shí)習(xí)報(bào)告實(shí)習(xí)報(bào)告5篇02-17

實(shí)習(xí)報(bào)告12-06

實(shí)習(xí)的報(bào)告06-17

實(shí)習(xí)律師實(shí)習(xí)報(bào)告08-04

金工實(shí)習(xí)的實(shí)習(xí)報(bào)告09-01

社會(huì)實(shí)習(xí)實(shí)習(xí)報(bào)告12-01

頂崗實(shí)習(xí)的實(shí)習(xí)報(bào)告02-05