c語言貪吃蛇課程設(shè)計(jì)報(bào)告_第1頁
c語言貪吃蛇課程設(shè)計(jì)報(bào)告_第2頁
c語言貪吃蛇課程設(shè)計(jì)報(bào)告_第3頁
c語言貪吃蛇課程設(shè)計(jì)報(bào)告_第4頁
c語言貪吃蛇課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、.c語言課程設(shè)計(jì)報(bào)告貪吃蛇專業(yè)學(xué)生姓名班級學(xué)號完成日期精品.一、游戲規(guī)則需求1、 在打開程序后,出現(xiàn)選擇界面,里面包含難度選擇,其中難度選擇能夠使程序出現(xiàn)相應(yīng)的游戲難度。2、 開始游戲后,w a s d鍵控制貪吃蛇的移動方向。3、 當(dāng)貪吃蛇向一個方向移動時,不能立刻向反方向移動。4、 貪吃蛇撞到的自己的身體或者撞到墻時,游戲結(jié)束,并輸出“game over!”。5、 貪吃蛇吃到一個食物后,出現(xiàn)白色閃爍一次,身體隨之增加一個單位長度。二、所需數(shù)據(jù)結(jié)構(gòu)分析1、所需函數(shù)模塊void begin(); /登陸界面void start(); /鼠標(biāo)移動事件void init();/ 初始化游戲void

2、setfoodcrd();/ 設(shè)置食物要出現(xiàn)的坐標(biāo)void showfood();/ 在相應(yīng)的坐標(biāo)畫出食物void snakemove();/ 移動蛇,實(shí)際就是改變蛇各節(jié)的坐標(biāo)void judgeslod();/ 判斷蛇是否撞墻或者撞到自己 void judgesef();/ 判斷蛇是否吃到食物了void showsnake();/ 在屏幕上畫出蛇void changeskdir();/ 接受用戶輸入,改變蛇的前進(jìn)方向void gameover();/ 游戲結(jié)束2、蛇及食物數(shù)據(jù)結(jié)構(gòu)typedef struct/ 定義一個結(jié)構(gòu)體表示坐標(biāo)int x;int y;coor; struct food/

3、 定義結(jié)構(gòu)體,來存儲食物的相關(guān)信息coor crd;/ 食物出現(xiàn)的坐標(biāo)int flag;/ 食物的狀態(tài),1表示食物還沒被吃,0表示食物被吃了精品.food; struct snake/ 定義結(jié)構(gòu)體,來存儲蛇的相關(guān)信息coor crdsizemax;/ 保存蛇的每個結(jié)數(shù)的坐標(biāo),最多有100節(jié)int node;/ 保存蛇當(dāng)前節(jié)數(shù)dir dir;/ 當(dāng)前蛇行進(jìn)的方向snake;3、 游戲流程圖開始圖形界面初始化進(jìn)入游戲難度選擇界面進(jìn)入游戲界面各類消息判斷并作相應(yīng)的處理關(guān)閉游戲,結(jié)束從鍵盤讀入操作信息蛇是否存活三、所需核心算法分析1.主函數(shù)精品.void main() /主函數(shù) initgraph(6

4、40, 640);loadimage(&img0, denglu3.jpg); /導(dǎo)入圖片loadimage(&img1, a1.jpg);loadimage(&img2, a2.jpg);loadimage(&img3, b1.jpg);loadimage(&img4, b2.jpg);loadimage(&img5, c1.jpg);loadimage(&img6, c2.jpg);loadimage(&img7, beijing.jpg); begin(); /登陸界面 init(); / 初始化游戲while(1)while(!kbhit()if (!food.flag)setfood

5、crd();showfood(); judgeslod();judgesef(); snakemove();sleep(speed);changeskdir();精品.2.圖形初始化void init() / 初始化游戲putimage(0, 0, &img7);setbkcolor(rgb(124,107,7);food.flag = 0;snake.crd0.x = 80+ snakelen;snake.crd0.y = 155;snake.crd1.x = 80;snake.crd1.y = 155;snake.node = 2;snake.dir = right; 3.讀入操作信息的處

6、理 void snakemove() int i; for (i=snake.node; i0; i-)snake.crdi.x = snake.crdi-1.x;snake.crdi.y = snake.crdi-1.y; switch (snake.dir)case up:snake.crd0.y -= snakelen;break; case down:snake.crd0.y += snakelen;break;case left:snake.crd0.x -= snakelen;break;case right:snake.crd0.x += snakelen;精品. showsna

7、ke();四、關(guān)鍵函數(shù)介紹1.貪吃蛇鏈表用鏈表的節(jié)點(diǎn)表示蛇,移動的時候增加一個頭節(jié)點(diǎn)隱藏一個尾節(jié)點(diǎn),吃食物只需增加一個頭節(jié)點(diǎn)。2.putimage()函數(shù)用數(shù)組讀入圖片信息,loadimage()函數(shù)載入圖片,然后用putimage函數(shù)顯示圖片,實(shí)現(xiàn)圖形界面 。3.getmousemsg() 函數(shù)鼠標(biāo)經(jīng)過響應(yīng),改變按鈕的狀態(tài),美化圖形界面。4.mklbutton函數(shù)實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊響應(yīng),使游戲從登陸界面跳轉(zhuǎn)到游戲界面。5. rectangle()函數(shù) 功 能: 畫出蛇身和食物用 法: rectangle(food.crd.x,food.crd.y,food.crd.x,food.crd.y);6.

8、outtextxy() 功 能: 在指定位置顯示一字符串 用 法: void far outtextxy(int x, int y, char *textstring);五、測試與調(diào)試1.最初的時候,不知到要怎么編寫有圖形界面的貪吃蛇,在網(wǎng)上找了一些關(guān)于圖形界面編程的教案,發(fā)現(xiàn)還要裝一個easyx的函數(shù)庫。裝上去后,花了一段時間去學(xué)習(xí)函數(shù)庫里的函數(shù)應(yīng)用。2.一開始只實(shí)現(xiàn)了簡單的蛇的運(yùn)動,還有很多bug,但經(jīng)過調(diào)試,特別是怎么吃到食物,并且蛇身增長的地方花了好多時間,后來bug基本被找出,蛇能吃到食物了。3.接下去新建了一個文件,實(shí)現(xiàn)蛇的難度選擇界面,這個比較簡單,實(shí)現(xiàn)其來不是很難。但是要把兩個

9、文檔連接起來毫無頭緒。4.和同年級的同學(xué)交流了一下,終于知道應(yīng)該重新加載圖形界面,通過查閱技術(shù)文檔,還是解決了這個難題。心情大好o(_)o六、心得與體會精品.通過一個多月的學(xué)習(xí),對c語言有了更深一步的了解。從一開始的什么都不會,自己一點(diǎn)點(diǎn)慢慢的摸索。發(fā)現(xiàn)書本上學(xué)到的東西還是很不夠的,還有好多東西需要我課外的學(xué)習(xí)。對于貪吃蛇,知道了它的實(shí)現(xiàn)原理,學(xué)會了對程序的模塊設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的簡單分析。并通過源碼分析講述了各個模塊的實(shí)現(xiàn)方法。在幾個模塊的實(shí)現(xiàn)過程中滲透了部分圖形功能函數(shù)。通過本文的編寫過程 ,掌握了以下幾點(diǎn)知識點(diǎn):(1) 圖形系統(tǒng)的初始化和關(guān)閉(2) 各種畫圖函數(shù)的使用(3) 結(jié)構(gòu)體的定義(4) 數(shù)組定義及應(yīng)用(5) 函數(shù)嵌套及調(diào)用(6) 鍵盤操作總的來說,編程還是一個很需要耐心的工作,特別是有bug找

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論