貪吃蛇C語言課程設(shè)計_第1頁
貪吃蛇C語言課程設(shè)計_第2頁
貪吃蛇C語言課程設(shè)計_第3頁
貪吃蛇C語言課程設(shè)計_第4頁
貪吃蛇C語言課程設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本科課程設(shè)計論文 題 目 用c語言實現(xiàn)貪吃蛇 系 別 信息科學與技術(shù)系專業(yè)班級 姓 名 學 號指導教師 年 月 日信息科學與技術(shù)系目 錄摘 要- 2 -第一章 緒 論- 3 -第二章 需求分析- 4 -2.1 功能需求- 4 -2.2 性能需求-4-第三章 程序設(shè)計- 5 -3.1 總體設(shè)計- 5 -3.2 詳細設(shè)計- 5 -第四章 調(diào)試與測試- 15 -第五章 總結(jié)與心得- 25 -附 錄- 26 -摘 要 貪吃蛇游戲是一個深受人們喜愛的游戲,一條在密閉的圍墻內(nèi),在圍墻內(nèi)隨機出現(xiàn)一個食物,通過按鍵盤上四個光標鍵控制蛇向上下左右四個方向移動,蛇頭撞到食物,則表示食物被蛇吃掉,這時蛇的身體長一節(jié)

2、,同時計10分,接著又出現(xiàn)食物,等待被蛇吃掉,如果蛇在移動過程中,撞到墻壁或身體交叉蛇頭撞到自己的身體游戲結(jié)束。 經(jīng)過分析,我使用c語言開發(fā)工具,通過tc軟件來實現(xiàn),在掌握c語言的基礎(chǔ)知識:數(shù)據(jù)類型(整型.實型.字符型.指針.數(shù)組.結(jié)構(gòu)等);運算類型(算術(shù)運算.邏輯運算.自增自減運算.賦值運算等);程序結(jié)構(gòu)(順序結(jié)構(gòu).判斷選擇結(jié)構(gòu).循環(huán)結(jié)構(gòu));大程序的功能分解方法(即函數(shù)的使用)等.進一步掌握各種函數(shù)的應用以及文件的讀寫操作等.關(guān)鍵字:貪吃蛇 光標鍵 數(shù)據(jù)類型 運算類型 程序結(jié)構(gòu) tc軟件第一章 緒 論 貪吃蛇游戲是一個深受人們喜愛的游戲,一條在密閉的圍墻內(nèi),在圍墻內(nèi)隨機出現(xiàn)一個食物,通過按鍵

3、盤上四個光標鍵控制蛇向上下左右四個方向移動,蛇頭撞到食物,則表示食物被蛇吃掉,這時蛇的身體長一節(jié),同時計10分,接著又出現(xiàn)食物,等待被蛇吃掉,如果蛇在移動過程中,撞到墻壁或身體交叉蛇頭撞到自己的身體游戲結(jié)束。程序關(guān)鍵在于表示蛇的圖形及蛇的移動。用一個小矩形快表示蛇的一節(jié)身體,身體每長一節(jié),增加一個矩形塊,蛇頭用倆節(jié)表示。移動時必須從蛇頭開始,所以蛇不能向相反的方向移動,如果不按任意鍵,蛇自行在當前方向上前移,但按下有效方向鍵后,蛇頭朝著該方向移動,一步移動一節(jié)身體,所以按下有效方向鍵后,先確定蛇頭的位置,而后蛇的身體隨蛇頭移動,圖形的實現(xiàn)是從蛇頭新位置開始畫出蛇,這時,由于未清屏的原因,原來的

4、蛇的位置和新蛇的位置差一個單位,所以看起來蛇多一節(jié)身體,所以將蛇的最后一節(jié)用背景色覆蓋。食物的出現(xiàn)與消失也是畫矩形塊和覆蓋矩形塊。為了便于理解,定義兩個結(jié)構(gòu)體:食物與蛇。表示食物與蛇的矩形塊設(shè)計為10*10個像素單位,食物的基本數(shù)據(jù)域為他所出現(xiàn)的位置,用x和y座標表示,則矩形塊用函數(shù)rectangle(x,y,x+10,y+10)或rectangle(x,y,x+10,y-10)可以畫出。由于每次只出現(xiàn)一個食物,所以設(shè)定yes表示是否要出現(xiàn)食物。蛇的一節(jié)身體為一個矩形塊,表示矩形塊只需起點座標x,y。身體不斷增長,用數(shù)組存放每節(jié)座標,最大設(shè)定為n=200,node表示當前節(jié)數(shù)。保存蛇的移動方向

5、的變量direction和生命的變量life,一旦life為1,表示蛇死,結(jié)束。本系統(tǒng)的主要功能主要有:1. 初始圖形系統(tǒng)2. 開始畫面3. 玩游戲的具體過程4. 游戲結(jié)束后5. 關(guān)閉圖形系統(tǒng)6. 結(jié)束程序 第二章 需求分析2.1 功能需求:根據(jù)主界面顯示內(nèi)容進行選擇并進一步執(zhí)行相應操作。一、 初始圖形: 通過函數(shù)init(),初始畫面、二、開始畫面: 通過函數(shù)drawk(),主界面是一個封閉的圍墻,用兩個循環(huán)語句分別在水平和垂直方向輸出連續(xù)的寬度和高度的矩形方塊。三、玩游戲的具體過程:通過函數(shù)gameplay(),通過按鍵盤上四個光標鍵控制蛇向上下左右四個方向移動,蛇頭撞到食物,則

6、表示食物被蛇吃掉,這時蛇的身體長一節(jié),接著又出現(xiàn)食物,等待被蛇吃掉,小蛇繼續(xù)運動。四、游戲結(jié)束:通過函數(shù)gameover(),蛇碰到墻壁或者碰蛇身,游戲結(jié)束,清除屏幕,輸出分數(shù)顯示游戲結(jié)束信息。五、關(guān)閉圖形系統(tǒng):通過函數(shù)close(),關(guān)閉圖形界面。六、結(jié)束程序七、退出系統(tǒng)2.2 性能需求:具有良好的可靠性和安全性。對于系統(tǒng)要求比較低。使用范圍比較廣。需在tc下運行。 第三章 程序設(shè)計3.1 概要設(shè)計將此系統(tǒng)化分為如下模塊:1、 初始圖形模塊:可用函數(shù)init()函數(shù)來實現(xiàn)此操作。  2、開始畫面模塊:用drawk()函數(shù)來實現(xiàn)。出現(xiàn)運行界面。3、玩游戲的具體過程模塊:可用

7、gameplay()函數(shù)來實現(xiàn)。通過按鍵盤上四個光標鍵控制蛇向上下左右四個方向移動,小蛇在移動的過程中吃食。4、游戲結(jié)束后模塊:用gameover()函數(shù)來實現(xiàn)。5、輸出分數(shù)模塊:用prscore()函數(shù)來實現(xiàn)。輸出游戲的得分。6、 關(guān)閉圖形系統(tǒng)模塊:用close()函數(shù)來實現(xiàn)。關(guān)閉圖形運行界面。7、結(jié)束程序模塊:用close()函數(shù)來實現(xiàn)。結(jié)束程序。8、退出系統(tǒng):可用一個函數(shù)exit()來實現(xiàn),首先將信息保存到文件中,釋放動態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。數(shù)據(jù)結(jié)構(gòu)設(shè)計:     程序設(shè)計中用到的結(jié)構(gòu)體類型:int str。 

8、0; 3.2 詳細設(shè)計1. 主函數(shù) main() 主函數(shù)是程序的住流程,首先定義使用到得常數(shù)、全局變量及函數(shù)原型說明,然后初始圖形系統(tǒng),調(diào)用函數(shù)drawk()畫出開始畫面,調(diào)用gameplay(),即玩游戲的具體過程,游戲結(jié)束后調(diào)用close()關(guān)閉圖形系統(tǒng),結(jié)束程序。編碼:void main(void) init();/*圖形驅(qū)動*/ drawk();/*開始畫面*/ gameplay();/*玩游戲具體過程*/ close();/圖形結(jié)束對應流程圖: 開 始 圖形驅(qū)動 開始畫面 玩游戲具體過程 圖形結(jié)束 結(jié)束 系統(tǒng)流程圖1開 始蛇吃到食物?蛇 長 大死 亡?繼 續(xù)?退出界面初始界面和蛇身游

9、戲者按鍵選擇放置食物蛇開始運動 y nyynyyn 系統(tǒng)流程圖2 2. 圖形驅(qū)動函數(shù)init()編碼:void init(void) int gd=detect,gm; initgraph(&gd,&gm,"c:tc"); cleardevice();對應流程圖: int gd=detect,gm3. 畫界面函數(shù)drawk() 主界面是一個封閉的圍墻,用兩個循環(huán)語句分別在水平和垂直方向輸出連續(xù)的寬度和高度的矩形方塊,表示圍墻,為了設(shè)計醒目,可設(shè)置自己所需顏色。 編碼:void drawk(void) setbkcolor(lightgreen); /*設(shè)置當

10、前背景顏色(為淡綠色)*/*界面的顏色,界面顏色為明亮的綠色。*/ setcolor(11); /*設(shè)置當前畫線顏色*/ setlinestyle(solid_line,0,thick_width);/*設(shè)置線型*/ for(i=50;i<=600;i+=10)/*畫圍墻*/*小蛇每走一步,得10分。*/ rectangle(i,40,i+10,49); /*上邊*/ rectangle(i,451,i+10,460);/*下邊*/ for(i=40;i<=450;i+=10) rectangle(50,i,59,i+10); /*左邊*/*運用 rectangle函數(shù)求出矩形大小

11、。*/*/ rectangle(601,i,610,i+10);/*右邊*/ 對應流程圖: i+=10 i<=450 rectangle(50,i,59,i+10); i +=10i=50 i <=6000 rectangle(i,40,i+10,49) i=404. 游戲具體過程函數(shù)gameplay()這是游戲的主要組成部分,它采用將前一節(jié)的坐標賦給后一節(jié)的坐標,用背景顏色將最后節(jié)去除,當蛇頭的坐標與食物相等時,表示食物被吃掉了。編碼:void gameplay()/玩游戲的具體過程/ randomize();/*隨機數(shù)發(fā)生器*/ food.yes=1;/*1表示需要出現(xiàn)新食物,

12、0表示已經(jīng)存在食物*/ snake.life=0;/*活著*/ snake.direction=1;/*方向往右*/ snake.x0=100;snake.y0=100;/*蛇頭*/ snake.x1=110;snake.y1=100;/*蛇的第二節(jié)*/ snake.node=2;/*節(jié)數(shù)(蛇的節(jié)數(shù)為2)*/ prscore();/*輸出得分*/ while(1)/*可以重復玩游戲,壓esc鍵結(jié)束*/ while(!kbhit()/*在沒有按鍵的情況下,蛇自己移動身體*/ if(food.yes=1)/*需要出現(xiàn)新食物*/ food.x=rand()%400+60; food.y=rand()

13、%350+60;/* 食物坐標x=隨機數(shù)/400+60,食物坐標y=隨機數(shù)/350+60.時,才可確保食物出現(xiàn)在整格內(nèi)*/ while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/ food.x+; while(food.y%10!=0) food.y+; food.yes=0;/*畫面上有食物了*/ if(food.yes=0)/*畫面上有食物了就要顯示*/ setcolor(orange);/*食物的顏色*/ rectangle(food.x,food.y,food.x+10,food.y-10); for(i=snake.node-1;i&g

14、t;0;i-)/*蛇的每個環(huán)節(jié)往前移動,也就是貪吃蛇的關(guān)鍵算法*/ snake.xi=snake.xi-1;/*小蛇向左移動一步*/ snake.yi=snake.yi-1;/*小蛇向上移動一步*/ /*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/ switch(snake.direction) case 1:snake.x0+=10;break; /*蛇向右移動一步,蛇身長為初值后,x0=x0+10返回*/ case 2: snake.x0-=10;break; /*蛇向左移動一步,蛇身長為初值后,x0=x0+10返回*/ case 3: snake.y0-=10;b

15、reak; /*蛇向上移動一步,蛇身長為初值后,y0=y0+10返回*/ case 4: snake.y0+=10;break; /*蛇向下移動一步,蛇身長為初值后,y0=y0+10返回*/ for(i=3;i<snake.node;i+)/*從蛇的第四節(jié)開始判斷是否撞到自己了,因為蛇頭為兩節(jié),第三節(jié)不可能拐過來*/*若xi和x0的坐標一致且yi和y0的坐標也一致則判斷蛇頭已撞到自己,結(jié)束游戲。*/ if(snake.xi=snake.x0&&snake.yi=snake.y0)/*蛇是否撞到墻壁*/ gameover();/*顯示失敗*/ snake.life=1;/*

16、蛇死了*/ break; if(snake.x0<55|snake.x0>595|snake.y0<55|snake.y0>455)/*蛇是否撞到墻壁(如果蛇的坐標滿足橫坐標小于55或橫坐標大于595或縱坐標小于55或縱坐標大于455)*/ gameover();/*本次游戲結(jié)束*/ snake.life=1; /*蛇死*/ if(snake.life=1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始*/ break; if(snake.x0=food.x&&snake.y0=food.y)/*吃到食物以后*/ setcolor(0);/*把畫面

17、上的食物東西去掉(即畫面中的食物為背景顏色,即黑色)*/ rectangle(food.x,food.y,food.x+10,food.y-10);/*運用rectangle函數(shù)畫出一個食物矩形邊框線*/ snake.xsnake.node=-20;snake.ysnake.node=-20; /*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/ snake.node+;/*蛇的身體長一節(jié)*/ food.yes=1;/*畫面上需要出現(xiàn)新的食物*/ score+=10;/*(吃到食物后)分數(shù)加10分*/ prscore();/*輸出新得分*/ setcolor(4);/*畫出蛇*/ fo

18、r(i=0;i<snake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10, snake.yi-10);/*運用rectangle函數(shù)畫出一個食物矩形邊框線*/ delay(gamespeed);/*延遲游戲速度*/ setcolor(0);/*用黑色去除蛇的的最后一節(jié)*/ rectangle(snake.xsnake.node-1,snake.ysnake.node-1, /*運用rectangle函數(shù)來計算小蛇尾部的位置 */ snake.xsnake.node-1+10,snake.ysnake.node-1-10);/*小蛇尾部的

19、橫坐標就等于小蛇頭部的橫坐標減去一再加上10,小蛇我尾部的縱坐標就等于小蛇頭部的縱坐標減去加上10(即表示尾巴長一節(jié))*/ if(snake.life=1)/*如果蛇死就跳出循環(huán)*/ break; key=bioskey(0);/*接收按鍵*/ if(key=esc)/*按esc鍵退出*/ break; else if(key=up&&snake.direction!=4)/*如果小蛇的接收按鍵為向上且小蛇所指向的方向不是4(即小蛇不指向下)*/*判斷是否往相反的方向移動*/ snake.direction=3;/*小蛇向上轉(zhuǎn)*/ else if(key=right&&

20、amp;snake.direction!=2)/*如果小蛇的接收按鍵為向右且小蛇所指向的方向不是向2(即小蛇不指向左)*/ snake.direction=1; /*小蛇向右轉(zhuǎn)*/ else if(key=left&&snake.direction!=1)/*如果小蛇的接收按鍵為向左且小蛇的所指向的 方向不是1(即小蛇不指向下)*/ snake.direction=2;/*小蛇向左轉(zhuǎn)*/ else if(key=down&&snake.direction!=3)/*如果小蛇的接收按鍵為向下且小蛇所指向的方向不是3(即小蛇不指向上)*/ snake.directi

21、on=4;/*小蛇向下轉(zhuǎn)*/ /*endwhile(1)*/流程圖:break;key=bioskey(0);snake.life=1!kbhit()multiplex 1multiplexclearderice();charstr10;geth(); 結(jié)束5. 游戲結(jié)束函數(shù)gameover() 游戲結(jié)束,清除屏幕,輸出分數(shù)顯示游戲結(jié)束信息。編碼:void gameover(void) cleardevice(); prscore(); setcolor(red); settextstyle(0,0,4); outtextxy(200,200,"game over"); g

22、etch();/*輸出成績*/ cleardevice()對應流程圖:6. 輸出成績函數(shù)prscore()編碼:void prscore(void) char str10;/*char類型的字符串變量str,長度為10個char*/ setfillstyle(solid_fill,blue);/*設(shè)置線型*/ bar(50,15,220,35);/*畫一個二維條形圖*/ setcolor(6); settextstyle(0,0,2);/*為圖形輸出設(shè)置當前的文本屬性*/ sprintf(str,"score:%d",score);/*輸出score為多少(即輸出分數(shù))*/

23、 outtextxy(55,20,str);/*進行輸出一個整型數(shù)據(jù)(定下輸出分數(shù)的位置為x=55,y=20)*/對應流程圖: char str107. 圖形結(jié)束函數(shù)close()編碼:void close(void) getch(); closegraph();對應流程圖: getch() 第四章 程序代碼#define n 200#include <graphics.h>/*圖形頭文件*/#include <stdlib.h>/*包含rand等函數(shù)*/#include <dos.h>/*包含bios函數(shù)*/#define left 0x4b00/*光標左

24、鍵值*/#define right 0x4d00/*光標右鍵值*/#define down 0x5000/*光標下鍵值*/#define up 0x4800/*光標上鍵值*/#define esc 0x011b/*esc的ascll碼*/#define n 200 /*定義全局變量*/int i,key;int score=0;/*得分*/int gamespeed=50000;/*游戲速度自己調(diào)整*/struct food int x;/*食物的橫坐標*/ int y;/*食物的縱坐標*/ int yes;/*判斷是否要出現(xiàn)食物的變量*/food;/*食物的結(jié)構(gòu)體*/struct snake

25、 int xn; int yn; int node;/*蛇的節(jié)數(shù)*/ int direction;/*蛇移動方向*/ int life;/* 蛇的生命,0活著,1死亡*/snake;void init(void);/*圖形驅(qū)動*/void close(void);/*圖形結(jié)束*/void drawk(void);/*開始畫面*/void gameover(void);/*結(jié)束游戲*/void gameplay(void);/*玩游戲具體過程*/void prscore(void);/*輸出成績*/*主函數(shù)*/void main(void) init();/*圖形驅(qū)動*/ drawk();/*開

26、始畫面*/ gameplay();/*玩游戲具體過程*/ close();/*圖形結(jié)束*/*圖形驅(qū)動*/void init(void) int gd=detect,gm; initgraph(&gd,&gm,"c:tc"); cleardevice();/*開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍墻*/*游戲畫面的大小區(qū)域在左上角坐標為(50,40),右下角坐標為(610,460)內(nèi)。*/*/*開始畫面時,小蛇的初始運動點(即小蛇的運動起點)在左上角坐標為(50,40),右下角坐標為(610,460)的圍墻內(nèi)。同時在本游戲中小

27、蛇都是在左上角坐標為(50,40),右下角坐標為(610,460)的圍墻內(nèi)運動。*/*/void drawk(void) setbkcolor(lightgreen); /*設(shè)置當前背景顏色(為淡綠色)*/ setcolor(11); /*設(shè)置當前畫線顏色*/ setlinestyle(solid_line,0,thick_width);/*設(shè)置線型*/ for(i=50;i<=600;i+=10)/*畫圍墻*/*小蛇每走一步,得10分。*/ rectangle(i,40,i+10,49); /*上邊*/ rectangle(i,451,i+10,460);/*下邊*/ for(i=40

28、;i<=450;i+=10) rectangle(50,i,59,i+10); /*左邊*/*運用 rectangle函數(shù)求出矩形大小。*/ rectangle(601,i,610,i+10);/*右邊*/ void gameplay()/玩游戲的具體過程/ randomize();/*隨機數(shù)發(fā)生器*/ food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/ snake.life=0;/*活著*/ snake.direction=1;/*方向往右*/ snake.x0=100;snake.y0=100;/*蛇頭*/ snake.x1=110;snake.y1=100;/*

29、蛇的第二節(jié)*/ snake.node=2;/*節(jié)數(shù)(蛇的節(jié)數(shù)為2)*/ prscore();/*輸出得分*/ while(1)/*可以重復玩游戲,壓esc鍵結(jié)束*/ while(!kbhit()/*在沒有按鍵的情況下,蛇自己移動身體*/ if(food.yes=1)/*需要出現(xiàn)新食物*/ food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/ food.x+; while(food.y%10!=0) food.y+; food.yes=0;/*畫面上有食物了*

30、/ if(food.yes=0)/*畫面上有食物了就要顯示*/ setcolor(orange);/*食物的顏色*/ rectangle(food.x,food.y,food.x+10,food.y-10); for(i=snake.node-1;i>0;i-)/*蛇的每個環(huán)節(jié)往前移動,也就是貪吃蛇的關(guān)鍵算法*/ snake.xi=snake.xi-1;/*小蛇向左移動一步*/ snake.yi=snake.yi-1;/*小蛇向上移動一步*/ /*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/ switch(snake.direction) case 1:snake

31、.x0+=10;break; /*蛇向右移動一步,返回*/ case 2: snake.x0-=10;break; /*蛇向左移動一步,返回*/ case 3: snake.y0-=10;break; /*蛇向上移動一步,返回*/ case 4: snake.y0+=10;break; /*蛇向下移動一步,返回*/ for(i=3;i<snake.node;i+)/*從蛇的第四節(jié)開始判斷是否撞到自己了,因為蛇頭為兩節(jié),第三節(jié)不可能拐過來*/ if(snake.xi=snake.x0&&snake.yi=snake.y0)/*如果蛇的坐標為x=0,y=0*/ gameove

32、r();/*顯示失敗*/ snake.life=1;/*蛇死了*/ break; if(snake.x0<55|snake.x0>595|snake.y0<55|snake.y0>455)/*蛇是否撞到墻壁(如果蛇的坐標滿足橫坐標小于55或橫坐標大于595或縱坐標小于55或縱坐標大于455)*/ gameover();/*本次游戲結(jié)束*/ snake.life=1; /*蛇死*/ if(snake.life=1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始*/ break; if(snake.x0=food.x&&snake.y0=food.y)

33、/*吃到食物以后*/ setcolor(0);/*把畫面上的食物東西去掉(即畫面中的食物為背景顏色,即黑色)*/ rectangle(food.x,food.y,food.x+10,food.y-10);/*運用rectangle函數(shù)計算食物的坐標位置*/ snake.xsnake.node=-20;snake.ysnake.node=-20; /*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/ snake.node+;/*蛇的身體長一節(jié)*/ food.yes=1;/*畫面上需要出現(xiàn)新的食物*/ score+=10;/*(吃到食物后)分數(shù)加10分*/ prscore();/*輸出新得

34、分*/ setcolor(4);/*畫出蛇*/ for(i=0;i<snake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10, snake.yi-10); delay(gamespeed); setcolor(0);/*用黑色去除蛇的的最后一節(jié)*/ rectangle(snake.xsnake.node-1,snake.ysnake.node-1, /*運用rectangle函數(shù)來計算小蛇尾部的位置 */ snake.xsnake.node-1+10,snake.ysnake.node-1-10);/*小蛇尾部的橫坐標就等于小蛇頭部的橫

35、坐標減去一再加上10,小蛇我尾部的縱坐標就等于小蛇頭部的縱坐標減去加上10(即表示尾巴長一節(jié))*/ if(snake.life=1)/*如果蛇死就跳出循環(huán)*/ break; key=bioskey(0);/*接收按鍵*/ if(key=esc)/*按esc鍵退出*/ break; else if(key=up&&snake.direction!=4)/*如果小蛇的接收按鍵為向上且小蛇所指向的方向不是4(即小蛇不指向下)*/*判斷是否往相反的方向移動*/ snake.direction=3;/*小蛇向上轉(zhuǎn)*/ else if(key=right&&snake.di

36、rection!=2)/*如果小蛇的接收按鍵為向右且小蛇所指向的方向不是向2(即小蛇不指向左)*/ snake.direction=1; /*小蛇向右轉(zhuǎn)*/ else if(key=left&&snake.direction!=1)/*如果小蛇的接收按鍵為向左且小蛇的所指向的 方向不是1(即小蛇不指向下)*/ snake.direction=2;/*小蛇向左轉(zhuǎn)*/ else if(key=down&&snake.direction!=3)/*如果小蛇的接收按鍵為向下且小蛇所指向的方向不是3(即小蛇不指向上)*/ snake.direction=4;/*小蛇向下轉(zhuǎn)

37、*/ /*endwhile(1)*/*游戲結(jié)束*/void gameover(void) cleardevice(); prscore();/*輸出新的得分*/ setcolor(red);/*/ settextstyle(0,0,4); outtextxy(200,200,"game over"); getch();/*輸出成績*/void prscore(void) char str10;/*char類型的字符串變量str,長度為10個char*/ setfillstyle(solid_fill,blue);/*設(shè)置線型*/ bar(50,15,220,35);/*畫一個二維條形圖*/ setcolor(6); settextstyle(0,0,2);/*為圖形輸出設(shè)置當前的文本屬性*/ sprintf(str,"score:%d",score);/*輸出score為多少(即輸出分數(shù))*/ outtextxy(55,20,str);/*進行輸出一個整型數(shù)據(jù)(定下輸出分數(shù)的位置為x=55,y=20)*/*圖形

溫馨提示

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

評論

0/150

提交評論