C語言課程設計報告小熊尋寶_第1頁
C語言課程設計報告小熊尋寶_第2頁
C語言課程設計報告小熊尋寶_第3頁
C語言課程設計報告小熊尋寶_第4頁
C語言課程設計報告小熊尋寶_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、小熊尋寶學 號_10072127_姓 名_指導教師_ _2010年12月1需求分析.31.1功能與數(shù)據(jù)需求.31.2界面需求.41.3開發(fā)與運行環(huán)境需求.52概要設計.52.1主要數(shù)據(jù)結構.52.2程序總體結構.63詳細設計.64測試.265用戶手冊.276總結提高.281 需求分析我所做的課程設計是小熊尋寶,是一款可以放松人心情的游戲程序,并且可以鍛煉人的反應能力1.1 功能與數(shù)據(jù)需求基本功能:用戶控制小熊,小熊共有三條命,地圖上會出現(xiàn)墻和4種隨機出現(xiàn)的物品,有三種物品是加分的(分別為1,2,3分),還有一種是障礙物,小熊通過用戶按上下左右鍵在地圖范圍內移動,根據(jù)位置是空白,寶物,圍墻,還是

2、障礙物做出相應操作,當生命值為0時game over,游戲退出。擴展功能:暫停功能,調節(jié)速度功能1.1.1提供圖形界面游戲主界面為一封閉的圍墻,屏幕右上角顯示生命值和分數(shù),圍墻為矩形小方塊(中間畫有橫線),初始化小熊,寶物,障礙物的位置,小熊為粉紅色實心圓,三種寶物分別為綠色實心圓,黃色實心圓和藍色實心圓,障礙物為灰色實心圓1.1.2鍵盤控制游戲及計分機制用上下左右鍵控制小熊,如果碰到寶物(障礙物),寶物(障礙物)消失,更新分數(shù)和生命值,并在其他位置隨機產生寶物(障礙物),如果不按任何鍵,小熊自行在當前方向上移動,當游戲者按有效的方向鍵后,小熊根據(jù)指示進行移動。1.1.3寶物(障礙物)的隨機產

3、生利用random()函數(shù)定時產生隨機數(shù)并將隨機數(shù)縮小到符合場景大小的范圍中,以此作為寶物(障礙物)位置的橫縱坐標。若隨機產生的位置和小熊的身體有沖突,則重新產生1.1.4結束判斷如果生命值降為0,則游戲結束,出現(xiàn)game over圖形界面,隨之關閉圖形系統(tǒng)1.1.5暫停功能在游戲中,如果玩家按下f1鍵,則進入暫停模式,若玩家再按一下26個字母的其中一個鍵,則恢復游戲1.1.6速度調節(jié)功能當玩家的得分超過10分時,小熊移動速度會加快一倍,若玩家得分繼續(xù)超過50分時,小熊移動速度又會加快一倍1.2 界面需求(四號字、黑體)第一個圖形界面上方介紹了4種寶物(障礙物)的特征,下方為游戲名稱“xiao

4、 xiong xun bao”,背景色為黑色第二個圖形界面為游戲界面,小熊的移動區(qū)域分為8*8的方格,背景色為黑色,字符顏色為紅色,圍墻的長度為10個方格的長度第三個圖形界面為游戲結束界面,背景色為黑色,中央顯示出game over字樣1.3 開發(fā)與運行環(huán)境需求tc3.0,運行環(huán)境為windows xp2 概要設計2.1 主要數(shù)據(jù)結構struct foodint x4;/*4種食物的橫坐標*/int y4;/*4種食物的縱坐標*/int flag;/*是否需要出現(xiàn)新食物*/food;/*食物的結構體/struct bearint x1;/*熊的橫坐標*/int y1;/*熊的縱坐標*/int

5、dir;/*熊的方向*/int life;/*熊的生命*/int grade;/*分數(shù)*/bear;/*熊的結構體*/2.2 程序總體結構void gameover()/*游戲結束函數(shù)*/void dwall()/*畫地圖函數(shù)*/void tishijiemian()/*顯示提示界面函數(shù)*/void play()/*游戲函數(shù)*/3詳細設計#include#include#include#include#include#include#include#include#define left 0x4b00#define right 0x4d00#define up 0x4800#define do

6、wn 0x5000#define f1 0x3b00int key;/*接受返回鍵碼的變量*/struct foodint x4;int y4;int flag;food;struct bearint x1;int y1;int dir;int life;int grade;bear;char buf100;/*顯示字符所需的字符型數(shù)組*/char word220=game over!;char word320=grade+1;char word420=hp:;char word520=grade:;char word620=grade+2;char word720=grade+3;char

7、word820=grade-1,life-1;char word920=xiao xiong xun bao;void gameover()settextstyle(0,0,3);/*字符顯示模式*/outtextxy(200,200,word2);/*輸出字符*/delay(1000);/*延遲1000后退出*/void dwall()int a;setbkcolor(black);/*設置黑色背景色*/setcolor(red);/*設置紅色前景色*/settextstyle(0,0,1);rectangle(0,0,710,510);/*畫一個長710,寬510的矩形*/for(a=50

8、;a550;a=a+50)line(a,0,a,500);/*每隔50長度畫一個豎線*/for(a=10;a50;a=a+10)line(a,0,a,500);/*每隔10長度畫一個豎線*/for(a=50;a500;a=a+50)line(0,a,500,a); /*每隔50長度畫一個橫線*/for(a=10;a50;a=a+10)line(0,a,500,a); /*每隔10長度畫一個橫線*/for(a=460;a500;a=a+10) line(a,0,a,500); /*每隔10長度畫一個豎線*/for(a=460;a500;a=a+10) line(0,a,500,a); /*每隔1

9、0長度畫一個橫線*/void tishijiemian()setbkcolor(black);settextstyle(0,0,3);setcolor(red);setfillstyle(solid_fill,yellow);/*用黃色實心填充*/circle(30,30,20);/*畫一個圓心(30,30),半徑20的圓*/floodfill(31,31,red);/*將圓填充為黃色*/outtextxy(55,30,word3);/*輸出word3的字符*/setfillstyle(solid_fill,blue);circle(30,100,20);floodfill(31,101,re

10、d);outtextxy(55,100,word6);setfillstyle(solid_fill,green);circle(30,170,20);floodfill(31,171,red);outtextxy(55,170,word7);setfillstyle(solid_fill,darkgray);circle(30,220,20);floodfill(31,221,red);outtextxy(55,220,word8);settextstyle(0,0,2);outtextxy(120,320,word9);delay(4000);cleardevice();/*將圖形全部清空

11、*/void play()int a,b=0,c1,c2,c3,c4,d=1,x=200;char z;dotextcolor(red);/*將字符顏色設置為紅色*/textbackground(blue);/*將背景顏色設置為藍色*/outtextxy(515,15,word4);outtextxy(515,35,word5);bar(530,12,540,22);/*填充一個矩形*/sprintf(buf,%2d,bear.life);/*顯示熊的生命*/outtextxy(530,15,buf);bar(560,30,575,40);sprintf(buf,%2d,bear.grade)

12、; /*顯示熊的分數(shù)*/outtextxy(560,35,buf);for(;b4;b+)/*將四種寶物的坐標隨機產生*/dofood.xb= random(400)+26;food.yb=random(400)+26; while(food.xb%25!=0|food.yb%25!=0);/*保證圖像出現(xiàn)在格內*/ if(food.xb%50=0) food.xb+=25; if(food.yb%50=0) food.yb+=25; food.flag=3;if(food.flag=3)/*如果寶物數(shù)為4個*/ /*將4種寶物顯示在屏幕上*/c1=0;setcolor(red);setfil

13、lstyle(solid_fill,yellow);circle(food.xc1,food.yc1,20);floodfill(food.xc1+1,food.yc1+1,red);c2=1;setcolor(red);setfillstyle(solid_fill,blue);circle(food.xc2,food.yc2,20);floodfill(food.xc2+1,food.yc2+1,red);c3=2;setcolor(red);setfillstyle(solid_fill,green);circle(food.xc3,food.yc3,20); floodfill(foo

14、d.xc3+1,food.yc3+1,red);c4=3;setcolor(red);setfillstyle(solid_fill,darkgray);circle(food.xc4,food.yc4,20);floodfill(food.xc4+1,food.yc4+1,red);switch(bear.dir)/*判斷熊當前的方向,case1,2,3,4的功能都近似,因此只解釋case1*/case 1:while(!kbhit()&bear.x1475)/*如果無鍵盤響應,熊向右走并且熊的橫坐標小于475*/bear.x1+=50;/*熊橫坐標+50*/*清除熊上一坐標的圖像,并把熊圖

15、像在現(xiàn)坐標顯示*/setcolor(red);setfillstyle(solid_fill,black);circle(bear.x1-50,bear.y1,20);floodfill(bear.x1-49,bear.y1+1,red);setcolor(black);setfillstyle(solid_fill,black); circle(bear.x1-50,bear.y1,20);delay(100);setcolor(red);setfillstyle(solid_fill,lightmagenta);circle(bear.x1,bear.y1,20);floodfill(be

16、ar.x1+1,bear.y1+1,red);delay(x); /*判斷熊是否吃到寶物*/for(d=0;d25)bear.x1-=50; setcolor(red);setfillstyle(solid_fill,black);circle(bear.x1+50,bear.y1,20);floodfill(bear.x1+51,bear.y1+1,red);setcolor(black);setfillstyle(solid_fill,black); circle(bear.x1+50,bear.y1,20);delay(100);setcolor(red);setfillstyle(so

17、lid_fill,lightmagenta);circle(bear.x1,bear.y1,20);floodfill(bear.x1+1,bear.y1+1,red);delay(x);for(d=0;d25)bear.y1-=50;setcolor(red);setfillstyle(solid_fill,black);circle(bear.x1,bear.y1+50,20);floodfill(bear.x1+1,bear.y1+49,red);setcolor(black);setfillstyle(solid_fill,black); circle(bear.x1,bear.y1+

18、50,20);delay(100);setcolor(red);setfillstyle(solid_fill,lightmagenta);circle(bear.x1,bear.y1,20);floodfill(bear.x1+1,bear.y1+1,red);delay(x);for(d=0;d4;d+)if(bear.x1=food.xd&bear.y1=food.yd)setcolor(red);setfillstyle(solid_fill,black);floodfill(bear.x1-24,bear.y1-24,red);dofood.xd= random(400)+26;fo

19、od.yd=random(400)+26; while(food.xd%25!=0|food.yd%25!=0); if(food.xd%50=0) food.xd+=25; if(food.yd%50=0) food.yd+=25;if(d=3)bear.life-=1;if(d=0)bear.grade+=1;if(d=1)bear.grade+=2;if(d=2)bear.grade+=3; break;case 4:while(!kbhit()&bear.y1475)bear.y1+=50;setcolor(red);setfillstyle(solid_fill,black);cir

20、cle(bear.x1,bear.y1-50,20);floodfill(bear.x1+1,bear.y1-51,red);setcolor(black);setfillstyle(solid_fill,black); circle(bear.x1,bear.y1-50,20);delay(100);setcolor(red);setfillstyle(solid_fill,lightmagenta);circle(bear.x1,bear.y1,20);floodfill(bear.x1+1,bear.y1+1,red);delay(x);for(d=0;d4;d+)if(bear.x1=

21、food.xd&bear.y1=food.yd)setcolor(red);setfillstyle(solid_fill,black);floodfill(bear.x1-24,bear.y1-24,red);dofood.xd= random(400)+26;food.yd=random(400)+26; while(food.xd%25!=0|food.yd%25!=0); if(food.xd%50=0) food.xd+=25; if(food.yd%50=0) food.yd+=25;if(d=3)bear.life-=1;if(d=0)bear.grade+=1;if(d=1)b

22、ear.grade+=2;if(d=2)bear.grade+=3; break; /*如果熊撞墻*/if(bear.x1=475)if(bear.dir=1)bear.life-=1;if(bear.y1=475)if(bear.dir=4)bear.life-=1;if(bear.life=0)/*如果熊生命值為0*/break;/*游戲結束*/key=bioskey(0);/*用鍵盤響應來控制小熊上下左右移動*/ switch(key) case up:bear.dir=3; break; case down:bear.dir=4; break; case right:bear.dir=1; break; case left:bear.dir=2; break; case f1:/*暫停功能,按f1暫停*/ z=getch();/*再按26個字母的任意一個取消暫停*/ break; if(bear.grade10)/*如果熊得分超過十分*/x=100;/*速度加倍*/if(bear.grade50)x=50;whil

溫馨提示

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

評論

0/150

提交評論