版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)</p><p><b> C語(yǔ)言</b></p><p><b> 設(shè)計(jì)報(bào)告</b></p><p><b> 題目:尋寶游戲</b></p><p><b> 一、選題背景:</b></p>
2、;<p><b> 尋寶游戲</b></p><p> 可以用來(lái)娛樂玩的小游戲——尋寶游戲,體驗(yàn)尋寶的樂趣和成功。</p><p><b> 二、設(shè)計(jì)思想:</b></p><p> 這是一個(gè)有趣的尋寶游戲,根據(jù)題目要求,采用C語(yǔ)言自帶的畫圖函數(shù)為主要框架,其中各個(gè)運(yùn)算總分運(yùn)用C語(yǔ)言的函數(shù)和基本算法的
3、知識(shí)。運(yùn)用順序結(jié)構(gòu),分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。主要內(nèi)容確定之后,調(diào)用所需函數(shù),用到了指針,還用到了內(nèi)存的開辟和釋放,還有一些繪圖函數(shù),還用到了鍵盤和聲音的函數(shù),最有收獲的是提高了自己的調(diào)試程序的能力。</p><p> 三.主要解決問題的方法及技術(shù)關(guān)鍵</p><p> 用FREE 函數(shù)完成對(duì)內(nèi)存空間的釋放。</p><p> If—else—if , Do—wh
4、ile 用來(lái)控制程序的循環(huán)。</p><p> 用鏈表的知識(shí)完成數(shù)據(jù)的 輸入 刪除 查看 。</p><p> 4. 有一些繪圖函數(shù),還用到了鍵盤和聲音的函數(shù)</p><p> 四、主要源程序清單:</p><p> #include<graphics.h></p><p> #includ
5、e<stdio.h></p><p> #include<stdlib.h></p><p> #include<math.h></p><p> #include<bios.h></p><p> #define ESC 0x011b</p><p> #
6、define UP 0x4800</p><p> #define DOWN 0x5000</p><p> #define LEFT 0x4b00</p><p> #define RIGHT 0x4d00</p><p> #define ENTER 0x1c0d</p><p> #defin
7、e MX 28</p><p> #define MY 24</p><p> #define BOXLONG 20</p><p> #define SQI 10</p><p> #define SZADAN 10</p><p> struct point</p><p><
8、;b> {</b></p><p><b> int x;</b></p><p><b> int y;</b></p><p> }zaboxxy[4]={-1,0,1,0,0,-1,0,1};</p><p> int x,y,map[MX+1][MY+1],sza
9、dan,sqi,szuan=0,mx,my,mc;</p><p> void *tx[5];</p><p> char sc[10];</p><p> /******************************</p><p> change a intnumber to a char []</p><p
10、> *******************************/</p><p> char *ntos(int n, char *c)</p><p> {long i=0,j,k;</p><p> for(j=5;j>=0;j--)</p><p> {k=n/pow(10,j);</p><
11、;p> if(k>0||n==0)</p><p> {c[i++]=k+'0';</p><p> n=n-k*pow(10,j);}</p><p><b> }</b></p><p><b> c[i]=0;</b></p><p&g
12、t; return(c);</p><p><b> }</b></p><p><b> main()</b></p><p><b> {</b></p><p> int dr=DETECT,mode=0,i;</p><p> lon
13、g key=0;</p><p> initgraph(&dr,&mode,"");</p><p> mx=getmaxx();</p><p> my=getmaxy();</p><p> mc=getmaxcolor();</p><p> for(i=1;i<
14、;5;i++) tx[i]=malloc(imagesize(1,1,BOXLONG,BOXLONG));</p><p> loadmap();</p><p><b> again:</b></p><p> gamemessage();</p><p> sqi=SQI;szadan=SZADAN;<
15、/p><p> definemap();</p><p><b> do</b></p><p> { while(bioskey(1)==0);</p><p> key=bioskey(0);</p><p> move(key);</p><p> }whi
16、le(key!=ESC && sqi>0);</p><p> if(sqi==0)message("you are winer!!!!");</p><p> if(message("do you want play again ?")==1)goto again;</p><p> for(i=
17、1;i<5;i++) free(tx[i]);</p><p> closegraph();</p><p><b> }</b></p><p> /*******************</p><p> SEND A message</p><p> ************
18、*******/</p><p> int message(char *s)</p><p><b> { char c;</b></p><p> setfillstyle(1,4);</p><p> setcolor(1);</p><p> bar(mx/2-200,my/2-5
19、0,mx/2+250,my/2+50);</p><p> outtextxy(mx/2-200,my/2-20,s);</p><p> c=getch();</p><p> if(c=='n'|| c=='N')return(0);else return(1);</p><p><b>
20、 }</b></p><p> /*******************</p><p><b> draw map</b></p><p> *******************/</p><p><b> loadmap()</b></p><p>
21、<b> {</b></p><p> cleardevice();</p><p> setcolor(1);</p><p> rectangle(1,1,BOXLONG,BOXLONG);</p><p> setcolor(3);</p><p> setfillstyle(1
22、,4);</p><p> bar(5,3,6,18);</p><p> setcolor(4);</p><p> line(6,3,15,13);</p><p> line(6,13,15,13);</p><p> floodfill(14,12,4);</p><p>
23、getimage(1,1,BOXLONG,BOXLONG,tx[1]);</p><p> putimage(1,1,tx[1],1);</p><p> setcolor(4);</p><p> rectangle(1,1,BOXLONG,BOXLONG);</p><p> circle(10,10,9);</p>
24、<p> circle(5,5,3);</p><p> circle(15,5,3);</p><p> line(8,15,12,15);</p><p> getimage(1,1,BOXLONG,BOXLONG,tx[2]);</p><p> putimage(1,1,tx[2],1);</p>
25、<p> setcolor(1);</p><p> setfillstyle(1,4);</p><p> bar(1,1,BOXLONG,BOXLONG);</p><p> line(1,BOXLONG/3,BOXLONG,BOXLONG/3);</p><p> line(1,BOXLONG/3*2,BOXLONG
26、,BOXLONG/3*2);</p><p> line(BOXLONG/2,1,BOXLONG/2,BOXLONG/3);</p><p> line(BOXLONG/2,BOXLONG/3*2,BOXLONG/2,BOXLONG);</p><p> line(BOXLONG/3,BOXLONG/3,BOXLONG/3,BOXLONG/3*2);</
27、p><p> line(BOXLONG/3*2+2,BOXLONG/3,BOXLONG/3*2+2,BOXLONG/3*2);</p><p> getimage(1,1,20,20,tx[3]);</p><p> putimage(1,1,tx[3],1);</p><p> rectangle(1,1,BOXLONG,BOXLONG
28、);</p><p> setcolor(4);</p><p> circle(10,10,6);</p><p> line(10,3,10,5);</p><p> getimage(1,1,BOXLONG,BOXLONG,tx[4]);</p><p> putimage(1,1,tx[4],1);&
29、lt;/p><p><b> }</b></p><p> /*******************</p><p> random map</p><p> *******************/</p><p> definemap()</p><p> {i
30、nt i,j,x1,y1,x2[SQI+1],y2[SQI+1];</p><p> randomize();</p><p> for (i=0;i<=MX;i++)</p><p> for (j=0;j<=MY;j++)</p><p> map[i][j]=0;</p><p> clea
31、rdevice();</p><p> setlinestyle(5,0,0);</p><p> setcolor(5);</p><p> setfillstyle(1,1);</p><p> bar(BOXLONG*MX+2,2,BOXLONG*MX+10,mx);</p><p> for (i=0
32、;i<SQI+1;i++)</p><p><b> {</b></p><p> rnd: x1=random(MX-1)+1;</p><p> y1 =random(MY-1)+1;</p><p> for(j=0;j<i-1;j++)</p><p> if (x1
33、==x2[j]&&y1==y2[j]) goto rnd;</p><p> x2[i]=x1;y2[i]=y1;</p><p> if (i!=SQI)</p><p> {map[x1][y1]=1;</p><p> putimage((x1-1)*BOXLONG,(y1-1)*BOXLONG,tx[1],1)
34、;</p><p><b> }else</b></p><p> {map[x1][y1]=2;</p><p> putimage((x1-1)*BOXLONG,(y1-1)*BOXLONG,tx[2],1);</p><p> x=x1;y=y1;</p><p><b>
35、 }</b></p><p> }/* end of for*/</p><p> for(i=1;i<=MX;i++)</p><p> {for (j=1;j<=MY;j++)</p><p> {if (map[i][j]==0&&(random(10000)%2==0||random(
36、1221)%6==0))</p><p> {map[i][j]=3;szuan++;</p><p> putimage((i-1)*BOXLONG,(j-1)*BOXLONG,tx[3],1);}</p><p><b> }</b></p><p> }/* end of for i */</p>
37、;<p> putimage(610,1,tx[4],1);</p><p> settextstyle(0,0,1);</p><p> setcolor(4);</p><p> setfillstyle(1,0);</p><p> bar(610,30,640,50);</p><p>
38、 outtextxy(610,30,ntos(szadan,sc));</p><p> putimage(610,50,tx[1],1);</p><p> settextstyle(0,0,1);</p><p> setcolor(4);</p><p> setfillstyle(1,0);</p><p
39、> bar(610,80,640,100);</p><p> outtextxy(610,80,ntos(sqi,sc));</p><p> putimage(610,120,tx[3],1);</p><p> settextstyle(0,0,1);</p><p> setcolor(4);</p>&
40、lt;p> setfillstyle(1,0);</p><p> bar(610,150,640,170);</p><p> outtextxy(610,150,ntos(szuan,sc));</p><p><b> }</b></p><p> /*******************</
41、p><p><b> chose key</b></p><p> *******************/</p><p> move(long key)</p><p><b> {</b></p><p> switch(key)</p><p
42、><b> {</b></p><p> case UP: down(0,-1);break;</p><p> case DOWN: down(0,1); break;</p><p> case LEFT: down(-1,0);break;</p><p> case RIGHT:
43、 down(1,0);break;</p><p> case ENTER: zadan();}</p><p><b> }</b></p><p> /*******************</p><p> help moving!!!!!!!!!!</p><p> **
44、*****************/</p><p> down(int x1 ,int y1 )</p><p><b> {</b></p><p> int fx ,fy;</p><p><b> fx=x+x1;</b></p><p><b>
45、 fy=y+y1;</b></p><p> if (fx>0&&fx<=MX&&fy>0&&fy<=MY)</p><p> { switch(map[fx][fy])</p><p><b> { case 0:</b></p><
46、p> putimage((x-1)*BOXLONG,(y-1)*BOXLONG,tx[2],1);</p><p> putimage((fx-1)*BOXLONG,(fy-1)*BOXLONG,tx[2],1);</p><p> map[x][y]=0;map[fx][fy]=2;</p><p> x=fx;y=fy;lsound(100,500
47、);</p><p><b> break;</b></p><p><b> case 1:</b></p><p> putimage((fx-1)*BOXLONG,(fy-1)*BOXLONG,tx[1],1);</p><p> putimage((fx-1)*BOXLONG,(fy
48、-1)*BOXLONG,tx[2],1);</p><p> putimage((x-1)*BOXLONG,(y-1)*BOXLONG,tx[2],1);</p><p> sqi--;map[x][y]=0;map[fx][fy]=2;</p><p> x=fx;y=fy;lsound(100,500);</p><p> set
49、textstyle(0,0,1);</p><p> setcolor(4);</p><p> setfillstyle(1,0);</p><p> bar(610,80,640,100);</p><p> outtextxy(610,80,ntos(sqi,sc));</p><p><b>
50、 break;</b></p><p><b> case 4:</b></p><p> putimage((fx-1)*20,(fy-1)*20,tx[4],1);</p><p> putimage((fx-1)*20,(fy-1)*20,tx[2],1);</p><p> putimage
51、((x-1)*20,(y-1)*20,tx[2],1);</p><p> map[x][y]=0;map[fx][fy]=2;</p><p> szadan++;x=fx,y=fy;</p><p> lsound(100,500);</p><p> settextstyle(0,0,1);</p><p&g
52、t; setcolor(4);</p><p> setfillstyle(1,0);</p><p> bar(610,30,640,50);</p><p> outtextxy(610,30,ntos(szadan,sc));</p><p><b> break;</b></p><
53、p><b> case 3:</b></p><p> if(x+x1*2>0&&x+x1*2<=MX&&y+y1*2>0&&y+y1*2<=MY&&map[x+x1*2][y+y1*2]==0)</p><p> {putimage((x+x1*2-1)*BOXLON
54、G,(y+y1*2-1)*BOXLONG,tx[3],1);</p><p> putimage((fx-1)*BOXLONG,(fy-1)*BOXLONG,tx[3],1);</p><p> putimage((fx-1)*BOXLONG,(fy-1)*BOXLONG,tx[2],1);</p><p> putimage((x-1)*20,(y-1)*2
55、0,tx[2],1);</p><p> map[x+x1*2][y+y1*2]=3;</p><p> map[x+x1][y+y1]=2;</p><p> map[x][y]=0;</p><p> x=fx;y=fy;</p><p> lsound(100,500);</p><
56、p><b> break;</b></p><p> }/* end of if */</p><p> } /* end of switch*/</p><p> } /* end of if*/</p><p> } /* end of funtion*/</p>&l
57、t;p> /* ************************************************</p><p> make a zadan</p><p> **************************************************/</p><p><b> zadan()</b>&l
58、t;/p><p> {int x1 ,y1 ,i;</p><p> if (szadan>0)</p><p> {szadan--;</p><p> for (i=0;i<4;i++)</p><p> {x1=x+zaboxxy[i].x;</p><p> y1=y
59、+zaboxxy[i].y;</p><p> if (x1>0&&x1<=MX&&y1>0&&y1<=MY&&map[x1][y1]==3)</p><p> {putimage((x1-1)*BOXLONG,(y1-1)*BOXLONG,tx[3],1);</p><p>
60、;<b> szuan--;</b></p><p> settextstyle(0,0,1);</p><p> setcolor(4);</p><p> setfillstyle(1,0);</p><p> bar(610,150,640,170);</p><p> outt
61、extxy(610,150,ntos(szuan,sc));</p><p> if(random(10000)%4==0)</p><p> {map[x1][y1]=4;</p><p> putimage((x1-1)*BOXLONG,(y1-1)*BOXLONG,tx[4],1);</p><p><b> }els
62、e</b></p><p> map[x1][y1]=0;</p><p> }/*END if */</p><p> settextstyle(0,0,1);</p><p> setfillstyle(1,0);</p><p> bar(610,30,640,50);</p>
63、<p> setcolor(4);</p><p> outtextxy(610,30,ntos(szadan,sc));</p><p> lsound(60,500);</p><p><b> }</b></p><p><b> }else</b></p>
64、<p> return(0);</p><p><b> }</b></p><p> /*********************************/</p><p><b> /*</b></p><p> show game message</p>&
65、lt;p><b> */</b></p><p> /*********************************/</p><p> gamemessage()</p><p><b> {</b></p><p> cleardevice();</p><
66、;p> setcolor(4);</p><p> settextstyle(0,0,7);</p><p> outtextxy(mx/11,my/3,"xunbao");</p><p> settextstyle(0,0,2);</p><p> outtextxy(mx/4,400,"Wr
67、ite by :wangkaikai");</p><p><b> getch();</b></p><p><b> }</b></p><p> lsound(int x,int l)</p><p><b> {</b></p><
68、p><b> sound(x);</b></p><p><b> delay(l);</b></p><p> nosound();</p><p><b> }</b></p><p><b> 五、調(diào)試及描述</b></p>
69、;<p> 調(diào)試通過,進(jìn)入游戲。</p><p> 具體玩法:把箱子從通道里推走,才能打開通道走過去“尋寶”,把寶貝——小紅旗全部拿到后就勝利了。當(dāng)走不動(dòng)時(shí)——即沒有箱子推了,不能打開通道走時(shí),可以按一下enter鍵,釋放炸彈,炸開通道。繼續(xù)尋寶。</p><p><b> 六,總結(jié)</b></p><p> 通過一個(gè)學(xué)期
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語(yǔ)言)課程設(shè)計(jì)---簡(jiǎn)單的彈球得分游戲
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語(yǔ)言)課程設(shè)計(jì)--計(jì)算器
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語(yǔ)言)課程設(shè)計(jì)--簡(jiǎn)單潛艇大戰(zhàn)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語(yǔ)言)課程設(shè)計(jì)--模擬銀行打印
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語(yǔ)言)課程設(shè)計(jì)---用c語(yǔ)言描繪玫瑰花
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語(yǔ)言)課程設(shè)計(jì)--花店經(jīng)營(yíng)管理系統(tǒng)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語(yǔ)言)課程設(shè)計(jì)--小蟲子挖隧道
- 課程設(shè)計(jì)-計(jì)算機(jī)技術(shù)基礎(chǔ)(c語(yǔ)言)小蟲子挖隧道設(shè)計(jì)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)---解救人質(zhì)游戲
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)---路邊吃數(shù)游戲
- 計(jì)算機(jī)語(yǔ)言c#課程設(shè)計(jì)--彈球游戲
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)---黑白棋
- 課程設(shè)計(jì)---計(jì)算機(jī)語(yǔ)言c#課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)---計(jì)算機(jī)軟件
- 計(jì)算機(jī)c語(yǔ)言課程設(shè)計(jì)--鼠標(biāo)控制
- 計(jì)算機(jī)技術(shù)基礎(chǔ)2
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)---簡(jiǎn)單的加減乘除運(yùn)算
- 計(jì)算機(jī)高級(jí)語(yǔ)言課程設(shè)計(jì)
- 《計(jì)算機(jī)基礎(chǔ)(c語(yǔ)言)》課程教學(xué)大綱.
評(píng)論
0/150
提交評(píng)論