版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《高級語言程序設計》</p><p><b> 課程設計報告</b></p><p><b> 計算機與信息工程系</b></p><p> 2013年6 月 28日</p><p> 學號1208010245</p><p><b>
2、 目錄</b></p><p> 1 設計內容及要求1</p><p> 1.1 設計內容1</p><p> 1.2 設計任務及要求1</p><p><b> 2概要設計2</b></p><p> 2.1 系統(tǒng)的功能簡介2</p><p&g
3、t; 2.2 總體程序框圖2</p><p> 3設計過程或程序代碼3</p><p> 3.1各個模塊的程序流程圖3</p><p> 3.2關鍵代碼加以分析4</p><p> 4設計結果與分析7</p><p><b> 5小結8</b></p><
4、;p><b> 致謝9</b></p><p><b> 參考文獻10</b></p><p><b> 附:源程序11</b></p><p><b> 設計內容及要求</b></p><p><b> 1.1 設計內容&
5、lt;/b></p><p> 《高射炮打飛機游戲》主要根據課程設計要求進行設計,并了解了游戲進行的流程,該系統(tǒng)功能主要包括以下模塊:</p><p> 游戲控制函數,用來設置背景以及控制移動。</p><p> 設置是否繼續(xù)游戲函數,當玩家有事暫停時提示詢問是否繼續(xù)。</p><p> 輸出函數,輸出該游戲一切用到的數據。&l
6、t;/p><p> 子彈移動函數,控制子彈移動來打敵機以獲取得分。</p><p> 飛機移動函數,利用左右上快捷鍵移動飛機打敵人。</p><p> 設置函數,供玩家選擇敵機密度,飛行快慢,游戲界面的大小等數據。</p><p> 菜單函數,顯示開始界面。</p><p> 1.2 設計任務及要求 </p
7、><p> 主要利用c語言函數語句設計開發(fā)一個小游戲,可以實現炮彈發(fā)射,飛機移動來打射敵機,繼而獲得勝利。地面對高空飛過的飛機進行有提前量的射擊,顯示射擊效果并記分。該程序包含了不同的功能,對原來的程序作出了很大的改進,用到的主要語句有getche語句、for語句、while語句printf語句、switch語句等等,添加了顏色函數,實現了諸多功能。</p><p> 要求:課程設計是為了
8、讓我們對所學知識有進一步的了解和掌握,能運用所學的C語言編寫簡單算法,簡單的C程序設計(順序程序、選擇結構程序、循環(huán)控制程序),用數組存放數據,并運用各種函數及函數知識來編寫一個完整的符合題目要求的程序,將程序調試出成功的結果。由此提高了我們運用C語言知識的能力,初步了解了軟件開發(fā)的一般方法和步驟。</p><p><b> 2概要設計</b></p><p>
9、2.1 系統(tǒng)的功能簡介</p><p> 該系統(tǒng)主要功能是通過c語言編寫一個射擊類的打飛機小游戲,可以通過鍵盤來進行游戲,操作方法是“a”“d”“w”或者“←”“↑”“→”來控制,擊中敵機可獲得積分,被敵機撞中死亡一次,每次游戲有3次生還機會,游戲結束后可選擇是否重新開始游戲。</p><p> 2.2 總體程序框圖</p><p> 圖2.1總體程序程序框圖
10、</p><p> 圖2.2游戲參數函數設計</p><p> 3設計過程或程序代碼</p><p> 3.1各個模塊的程序流程圖</p><p> 1)主函數程序流程圖及運行界面</p><p> a.主函數程序流程圖(N—S圖)</p><p> 圖3.1主函數流程圖</p
11、><p> 簡單說明:該功能主要給用戶顯示一個進入界面,告訴用戶有哪些功能能執(zhí)行。下面是顯示給用戶的界面。(如圖3.2)</p><p><b> b.主函數運行界面</b></p><p> 圖3.2 游戲界面設置</p><p> 3.2關鍵代碼加以分析</p><p><b>
12、 1)游戲控制函數</b></p><p> void run()</p><p> { system("color 2e");//設置背景顏色</p><p> int i=0,j=0;</p><p> scr[21][pl]=1; //我方飛機初始位置</p><p>
13、 scr[0][5]=3; </p><p> while(death<3) //限制死亡次數</p><p> { if(kbhit())</p><p> switch(getch())//控制左右移動</p><p> { case left:</p><p><b> case &
14、#39;a':</b></p><p> case 'A':if(pl>0)</p><p> scr[21][pl]=0,scr[21][--pl]=1;break;</p><p> case right:</p><p><b> case 'd':</
15、b></p><p> case 'D':if(pl<width-2)</p><p> scr[21][pl]=0,scr[21][++pl]=1;break;</p><p><b> case up:</b></p><p><b> case 'W':
16、</b></p><p> case 'w':scr[20][pl]=2;break;</p><p> case 27 :exit(0);break;</p><p><b> }</b></p><p> if(++j%density==0)//控制生產敵機的速度</p>
17、;<p><b> { j=0;</b></p><p> srand(time(NULL));//產生隨機數</p><p> scr[0][rand()%width]=3;//生成隨機敵方飛機</p><p><b> }</b></p><p> if(++i%spee
18、d==0)//控制敵機移動速度,相對于子彈移動速度</p><p> movepla(scr);//飛機移動</p><p> movebul(scr);//子彈移動</p><p> print(scr);//繪制游戲畫面</p><p><b> } </b></p><p> 本段
19、函數是對整個游戲進行的一個控制,以確保程序能供用戶使用。</p><p> 2)設置游戲是否繼續(xù)</p><p><b> void yn()</b></p><p> { system("cls");</p><p> system("color 2e");</p&
20、gt;<p> printf("\n");</p><p> printf("\n");</p><p> printf("\t\t\t\t *****GAME OVER*****\n\a");</p><p> printf("\n");</p>&
21、lt;p> printf("\n");</p><p> printf("\t\t *****游***戲***結***束***** \n\n\n");</p><p> printf("\t\t\t按y鍵繼續(xù)游戲,n鍵退出游戲(y/n)?\n");</p><p> prin
22、tf("\t\t\t");</p><p> switch(getch())//提示是否要繼續(xù)游戲</p><p> { case 'y':</p><p> case 'Y':death=0,score=0,run();break;</p><p><b> case &
23、#39;n':</b></p><p> case 'N':break;</p><p> default :exit(0);break;</p><p><b> }</b></p><p><b> }</b></p><p>
24、<b> 圖3.3 詢問設置</b></p><p> 當游戲被暫停時,程序不知道用戶的意圖,故寫此程序來詢問是否繼續(xù)游戲,以防游戲結束銷毀了正在進行的游戲。</p><p><b> 3)子彈移動函數</b></p><p> void movebul(int a[][N])</p><p&g
25、t; { int i,j;</p><p> for(i=0;i<22;i++)</p><p> for(j=0;j<width;j++)</p><p> { if(i==0&&a[i][j]==2)</p><p> a[i][j]=0;</p><p> if(a[i
26、][j]==2)</p><p> { if(a[i-1][j]==3)//加分</p><p> { score+=1;</p><p> printf("\7");</p><p><b> }</b></p><p> a[i][j]=0,a[i-1][j]=2
27、;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 在打飛機游戲中需要瞄準再射擊這樣才能打中目標,通過這段程序來控制子彈移動,可以打中更多敵機,獲得高分。</p><
28、p><b> 4設計結果與分析</b></p><p> 當把程序寫好并進行調試時,并不是一帆風順的,總會遇到很多在調試時遇到的錯誤。</p><p> 1)首先在定義函數時,不能輸入漢字。否則會程序會顯示錯誤。</p><p> 2)前后定義變量要統(tǒng)一。</p><p> 3)如果要調用添加函數,修改函
29、數,修改函數,查找函數,統(tǒng)計函數等要在主函數前面進行申明。否則會顯示警告。</p><p> 4)對背景顏色設置的時候,當你輸入的顏色在內存中不存在時,運行程序過后,系統(tǒng)會告訴你相應的顏色符號常數及數值。</p><p> 5)如果程序在運行的過程中,對于一個循環(huán)語句,如果你返回的值始終是真的,那么程序將進如死循環(huán)。</p><p> 6)對應該有花括弧的復合
30、語句,忘記加花括弧。</p><p> 7)所調用的函數在調用語句之后才定義,而又在調用前未加說明。</p><p> 圖4.1 游戲運行結果圖</p><p><b> 5小結</b></p><p> 通過本次試驗,使我對c語言有了更深一層次的了解,對getche語句、for語句、while語句、printf
31、語句、switch語句、顏色函數等等的了解及使用更加詳細了一些,明白了這些語句的用法,明確了c語言的使用環(huán)境,功能。C語言作為一個基礎性編程語言是我們在以后編程中不可或缺的語言,使用率肯定會進一步增高。掌握了c語言就相當于掌握了一門技術,同時c語言相對而言簡單一些,更容易理解。自己雖然對這個小游戲進行一部分的改造,但是我也感覺這只是其中的很很小的一部分,肯定會有更加強大的功能等待著我們去改善。</p><p>
32、 同時,我也發(fā)現了自己很多的不足,需要進一步加強這一方面的學習,明白了自己的在哪一方面的欠缺,希望可以在以后的學習中更加徹底的彌補自己的不足,改善這種情況,</p><p> 也希望自己也可很容易的就可以輕松寫出一些小游戲代碼 ,我相信我也可以在以后的學習過程中逐步地掌握它,徹底的掌握它,使它成為自己手中的一把利劍。</p><p><b> 致謝</b><
33、/p><p> 在這次C語言課程設計中,我的老師和同學給了我及大的幫助。特別是我的指導老師孫淮寧老師,還有我的C語言任課老師徐寧老師。在此,我對他們表示感謝!感謝他們在我面對困難時給了我?guī)椭椭С帧R哺兄x那些給我?guī)椭乃型瑢W!</p><p><b> 參考文獻</b></p><p> [1] 譚浩強.C程序設計[M].清華大學出版社,2
34、005年,第三版.</p><p> [2] 譚浩強.C程序設計[M].清華大學出版社,1999年,第二版.</p><p> [3] 譚浩強,張基溫,唐永炎.C語言程序設計[M].高等教育出版社,1992年</p><p><b> 附錄:</b></p><p><b> 源程序</b>
35、;</p><p> #include <stdio.h></p><p> #include <conio.h></p><p> #include <stdlib.h></p><p> #include <time.h></p><p> #define
36、N 35</p><p> #define up 72</p><p> #define left 75</p><p> #define right 77</p><p> void run();//游戲控制函數</p><p> void yn();//設置是否繼續(xù)游戲函數</p><
37、p> void print(int [][N]);//輸出函數</p><p> void movebul(int [][N]);//子彈移動函數</p><p> void movepla(int [][N]);//敵機移動函數</p><p> void setting(void);//設置函數</p><p> void
38、 menu(void);//菜單函數</p><p> int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局變量:界面、我機初始位、界面寬度、敵機速度、敵機密度、得分、死亡</p><p> void main()</p><p><b> { menu();
39、</b></p><p><b> run();</b></p><p><b> }</b></p><p> void print(int a[][N])//輸出函數</p><p> { system("cls");</p><p&g
40、t;<b> int i,j;</b></p><p> for(i=0;i<22;i++)</p><p> { a[i][width-1]=4;</p><p> for(j=0;j<width;j++)</p><p> { if(a[i][j]==0)printf(" "
41、);</p><p> if(a[i][j]==1)printf("\5");//輸出我機的符號</p><p> if(a[i][j]==2)printf("^");//子彈</p><p> if(a[i][j]==3)printf("\3"); //輸出敵機符號</p><p
42、> if(a[i][j]==4)printf("\2");</p><p> if(i==1&&j==width-1)printf("您成功殺敵:%d 架",score);//右上角顯示得分</p><p> if(i==2&&j==width-1)</p><p> printf
43、("設置:Esc");</p><p> if(i==4&&j==width-1)printf("您已經死亡了:%d 次",death);//右上角顯示死亡次數</p><p> if(i==9&&j==width-1)printf(" 你還剩余 %d 條命!",3-death);</p
44、><p> if(i==18&&j==width-1)</p><p> printf("制作人:張曉依");</p><p> if(i==19&&j==width-1)</p><p> printf("班級:計科2班");</p><p>
45、; if(i==20&&j==width-1)</p><p> printf("學 號:1208010245");</p><p><b> }</b></p><p> printf("\n");</p><p><b> }</b&
46、gt;</p><p><b> }</b></p><p> void movebul(int a[][N])</p><p> { int i,j;</p><p> for(i=0;i<22;i++)</p><p> for(j=0;j<width;j++)</
47、p><p> { if(i==0&&a[i][j]==2)</p><p> a[i][j]=0;</p><p> if(a[i][j]==2)</p><p> { if(a[i-1][j]==3)//加分</p><p> { score+=1;</p><p>
48、printf("\7");</p><p><b> }</b></p><p> a[i][j]=0,a[i-1][j]=2;</p><p><b> }</b></p><p><b> }</b></p><p>&l
49、t;b> }</b></p><p> void movepla(int a[][N])</p><p><b> {int i,j;</b></p><p> for(i=21;i>=0;i--)//從最后一行往上是為了避免把敵機直接沖出數組。</p><p> for(j=0;j&l
50、t;width;j++)</p><p> {if(i==21&&a[i][j]==3)</p><p> a[i][j]=0;//消除敵機,在最低層</p><p> if(a[i][j]==3)a[i][j]=0,a[i+1][j]=3;//敵機移動</p><p><b> }</b><
51、;/p><p> if(a[20][pl]==3&&a[21][pl]==1)death++;//死亡</p><p><b> }</b></p><p><b> void yn()</b></p><p> { system("cls");</p&
52、gt;<p> system("color 2e");</p><p> printf("\n");</p><p> printf("\n");</p><p> printf("\t\t\t\t *****GAME OVER*****\n\a");</p&
53、gt;<p> printf("\n");</p><p> printf("\n");</p><p> printf("\t\t *****游***戲***結***束***** \n\n\n");</p><p> printf("\t\t\t按y鍵繼續(xù)游戲,n鍵退出游戲
54、(y/n)?\n");</p><p> printf("\t\t\t");</p><p> switch(getch())//提示是否要繼續(xù)游戲</p><p> { case 'y':</p><p> case 'Y':death=0,score=0,run();b
55、reak;</p><p><b> case 'n':</b></p><p> case 'N':break;</p><p> default :exit(0);break;</p><p><b> }</b></p><p>
56、<b> }</b></p><p> void setting(void)</p><p> { int sw=0,i,j;</p><p> system("cls");</p><p><b> do</b></p><p><b&g
57、t; { sw=0;</b></p><p> printf("\n 游戲界面的大?。?.大2.小>> ");</p><p> switch(getche())</p><p> { case '1':width=34;break;</p><p> case '
58、2':width=24;;break;</p><p> default:printf("\n 錯誤,請重新選擇...\n");</p><p><b> sw=1;</b></p><p><b> }</b></p><p> }while(sw);</
59、p><p><b> do</b></p><p><b> { sw=0;</b></p><p> printf("\n 請選擇敵機密度:1.大2.中3.小>> ");</p><p> switch(getche())</p><p>
60、; { case '0':density=10;break;</p><p> case '1':density=20;break;</p><p> case '2':density=30;break;</p><p> case '3':density=40;break;</p>
61、<p> default:printf("\n 錯誤,請重新選擇...\n");</p><p><b> sw=1;</b></p><p><b> }</b></p><p> }while(sw);</p><p><b> do<
62、/b></p><p><b> { sw=0;</b></p><p> printf("\n 敵機的飛行速度:1.快2.中3.慢>> ");</p><p> switch(getche())</p><p> { case '1':speed=2;bre
63、ak;</p><p> case '2':speed=3;break;</p><p> case '3':speed=4;break;</p><p> default:printf("\n 錯誤,請重新選擇...\n");</p><p><b> sw=1;<
64、/b></p><p><b> }</b></p><p> }while(sw);</p><p> for(i=0;i<22;i++)</p><p> for(j=0;j<45;j++)</p><p> scr[i][j]=0;</p><
65、p> scr[21][pl=9]=1;</p><p> printf("\n 按任意鍵保存...");</p><p><b> getch();</b></p><p><b> }</b></p><p> void run()</p><
66、;p> { system("color 2e");//設置背景顏色</p><p> int i=0,j=0;</p><p> scr[21][pl]=1; //我方飛機初始位置</p><p> scr[0][5]=3; </p><p> while(death<3) //限制死亡次數<
67、;/p><p> { if(kbhit())</p><p> switch(getch())//控制左右移動</p><p> { case left:</p><p><b> case 'a':</b></p><p> case 'A':if(pl
68、>0)</p><p> scr[21][pl]=0,scr[21][--pl]=1;break;</p><p> case right:</p><p><b> case 'd':</b></p><p> case 'D':if(pl<width-2)<
69、/p><p> scr[21][pl]=0,scr[21][++pl]=1;break;</p><p><b> case up:</b></p><p><b> case 'W':</b></p><p> case 'w':scr[20][pl]=2;br
70、eak;</p><p> case 27 :exit(0);break;</p><p><b> }</b></p><p> if(++j%density==0)//控制生產敵機的速度</p><p><b> { j=0;</b></p><p> sra
71、nd(time(NULL));//產生隨機數</p><p> scr[0][rand()%width]=3;//生成隨機敵方飛機</p><p><b> }</b></p><p> if(++i%speed==0)//控制敵機移動速度,相對于子彈移動速度</p><p> movepla(scr);//飛機
72、移動</p><p> movebul(scr);//子彈移動</p><p> print(scr);//繪制游戲畫面</p><p><b> } </b></p><p><b> yn();</b></p><p><b> }</b>
73、</p><p> void menu(void)</p><p> { system("color 2e");//設置背景顏色</p><p> printf("說明:按A D 控制我機左右飛行,W 發(fā)射子彈\n 設置:請按Esc\n 開始游戲:任意鍵");</p><p> if(getc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設計報告--子彈打飛機
- 高射炮打蚊子
- 打飛機小游戲-java課程設計
- android-打飛機游戲-課程設計論文
- c++課程設計-教學游戲
- c++課程設計——飛機訂票系統(tǒng)
- c++課程設計拼圖游戲
- c++課程設計報告--飛機訂票系統(tǒng)
- c++課程設計報告---飛機訂票系統(tǒng)
- c++課程設計報告--坦克游戲
- c++課程設計報告---飛機訂票系統(tǒng)
- c++課程設計報告--猜數游戲
- c++課程設計報告飛機訂票管理系統(tǒng)
- c++剪刀石頭布游戲課程設計
- c++剪刀石頭布游戲課程設計
- 猜單詞游戲c++課程設計報告
- c++課程設計---吃豆子游戲程序
- 基于紅外技術的高射炮發(fā)射過程炮管溫度測量.pdf
- c++猜單詞課程設計--——猜單詞游戲
- JAVA打飛機游戲畢業(yè)設計.doc
評論
0/150
提交評論