




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、XX大學程序設計根底課內工程說明書學生姓名:XXX學號:XXXXX學院:XXXXXXX班級:XXXXX題目:飛機大戰指導教師XXXXXXWXX月XX日1設計目的小標題黑體五號字制作一個簡單的飛機大戰游戲.2設計內容此飛機大戰游戲是一款射擊游戲,它隨著你的分數增加,而不斷改變你的等級,同時等級越高難度就會越大,一旦敵機逃離那么你的分數將會減少,與敵機相撞你的生命值將會減少,按鼠標左鍵可以連續發射子彈,鼠標移動限制我機移動.3. 本設計所采用的數據結構使用了兩個動態鏈表,分別儲存敵機圖片的左上角坐標X,Y以及子彈圖片的左上角坐標X,Y,刪除子彈與敵機以及敵機與我機的碰撞都是基于圖片的左上角坐標X,
2、Y來判定.4功能模塊詳細設計3.1 子彈相關模塊3.1.1 詳細設計思想當檢測到左鍵按下時,調用添加子彈的函數并進行傳參鼠標的位置坐標產生新的子彈;當子彈擊中敵機移動子彈的函數來判斷是否擊中后調用刪除子彈函數來刪除子彈并釋放內存;移動子彈函數在中還包括子彈是否出界并刪除的函數;游戲結束后把所有的子彈都刪掉.3.1.2 核心代碼/子彈intbulletvx=0;intbulletvy=-20;intbulletwidth=6;intbullethigh=11;typedefstructTag_Bulletintx;inty;structTag_Bullet*Next;bullet,*lbulle
3、t;bulletbullethead;lbulletlbhead=&bullethead,lbtail=&bullethead;/添加子彈-返回添加的子彈指針lbulletpushbullet(intbx,intby);lbulletremovebullet(lbulletit);/刪除子彈-返回下一個子彈的指針lbulletfreebullet();/刪除全部子彈lbulletmovebullet();/移動子彈/添加子彈lbulletpushbullet(intbx,intby)lbtail=lbtail->Next=(lbullet)malloc(sizeof(bu
4、llet);lbtail->x=bx;lbtail->y=by;lbtail->Next=NULL;returnlbtail;/刪除子彈lbulletremovebullet(lbulletIt)lbulletcbullet;for(cbullet=lbhead;cbullet->Next!=NULL;cbullet=cbullet->Next)if(cbullet->Next=It)if(It=lbtail)/尾節點單獨處理lbtail=cbullet;cbullet->Next=It->Next;free(It);break;returncb
5、ullet->Next;/清空子彈lbulletfreebullet()for(lbulletcp=lbhead->Next,Nextp;cp!=NULL;)Nextp=cp->Next;free(cp);cp=Nextp;lbhead->Next=NULL;returnlbhead;/移動子彈lbulletmovebullet()for(lbulletcbullet=lbhead->Next;cbullet!=NULL;)cbullet->x+=bulletvx;cbullet->y+=bulletvy;for(lenemycenemy=lenemy
6、head->Next;cenemy!=NULL;cenemy=cenemy->Next)/檢測子彈與敵機的碰撞if(pengzhuang1(cbullet,cenemy)inta,b;a=cenemy->x;b=cenemy->y;removebullet(cbullet);removeenemy(cenemy);show(a-35,b-60);pushenemy(rand()%400,0);/敵機死亡,添加新的敵機break;/判斷子彈是否出界if(cbullet->x<0|cbullet->x>=WIDTH|cbullet->y<
7、=0|cbullet->y>=HEIGHT)cbullet=removebullet(cbullet);elsecbullet=cbullet->Next;returnlbhead;/檢測子彈與敵機是否碰撞intpengzhuang1(lbulletbullet,lenemyenemy)if(!(bullet->x+bulletwidth<enemy->x|bullet->x>enemy->x+enemywidth|bullet->y+bullethigh<enemy->y|bullet->y>enemy-&g
8、t;y+enemyhigh)score+=3;return!(bullet->x+bulletwidth<enemy->x|bullet->x>enemy->x+enemywidth|bullet->y+bullethigh<enemy->y|bullet->y>enemy->y+enemyhigh);3.2 敵機相關模塊3.2.1 詳細設計思想一開始就隨機產生三個敵機,子彈擊中敵機就會刪除敵機(子彈相關模塊中)并調用產生敵機的函數來再產生一個新的敵機;移動敵機的函數中同樣檢測敵機是否出界并調用刪除敵機函數;在用戶數據更新
9、函數中:檢測我機是否與敵機碰撞;游戲結束之后將所有飛機刪除.3.2.2 核心代碼/敵機intenemyvx=0;intenemyvy=5;intenemywidth=110;intenemyhigh=84;typedefstructTag_Enemyintx;inty;structTag_Enemy*Next;enemy,*lenemy;enemyenemyhead;lenemylenemyhead=&enemyhead,lenemytail=&enemyhead;lenemypushenemy(intex,intey);/添加敵機-返回添加的敵機指針lenemyremovee
10、nemy(lenemyit);/刪除敵機-返回下一個敵機的指針lenemyfreeenemy();/刪除全部敵機lenemymoveenemy();/移動敵機/用戶數據更新函數voidupdateinput()MOUSEMSGm;while(MouseHit()m=GetMouseMsg();if(m.uMsg=WM_MOUSEMOVE)plancex=m.x;plancey=m.y;cenemy=lenemyhead->Next;cenemy!=NULL;cenemy=cenemy->Next)/檢測敵機與我機是否碰撞if(pengzhuang2(plancex,plancey,
11、cenemy)inta,b;a=cenemy->x;b=cenemy->y;removeenemy(cenemy);show(a-35,b-60);pushenemy(rand()%400,0);/TODO:敵機死亡,添加新的敵機break;elseif(m.uMsg=WM_LBUTTONDOWN)pushbullet(plancex+13,plancey+40);charin;if(_kbhit()in=getch();if(in=32)d=3;/添加敵機lenemypushenemy(intbx,intby)lenemytail=lenemytail->Next=(len
12、emy)malloc(sizeof(enemy);lenemytail->x=bx;lenemytail->y=by;lenemytail->Next=NULL;returnlenemytail;/刪除敵機lenemyremoveenemy(lenemyIt)lenemycenemy;for(cenemy=lenemyhead;cenemy->Next!=NULL;cenemy=cenemy->Next)if(cenemy->Next=It)if(It=lenemytail)/尾節點單獨處理lenemytail=cenemy;cenemy->Next=
13、It->Next;free(It);break;returncenemy->Next;/清空敵機lenemyfreeenemy()Nextp=cp->Next;free(cp);cp=Nextp;)lenemyhead->Next=NULL;returnlenemyhead;)/移動敵機lenemymoveenemy()(for(lenemycp=lenemyhead->Next;cp!=NULL;)(cp->x+=enemyvx;cp->y+=enemyvy;if(cp->x<0|cp->x>=WIDTH|cp->y&l
14、t;=0|cp->y>=HEIGHT)(cp->y=0;cp->x=rand()%410;score-=1;)else(cp=cp->Next;)returnlenemyhead;)/檢測敵機與我機是否碰撞intpengzhuang2(intx,inty,lenemyenemy)if(!(x+100<enemy->x|x>enemy->x+enemywidth|y+151<enemy->y|y>enemy->y+enemyhigh)l-;return!(x+100<enemy->x|x>enemy->x+enemywidth|y+151<enemy->y|y>enemy->y+enemyhigh);5心得體會詳細從這次的C語言工程開發,我學到了許多東西,主要有:(1)對全局變量和局部變量有了全新的熟悉,局部變量更適合于分函數,在一個分函數中更能發揮它的獨特優勢,而全局變量更能適于整個工程的使用,便于在各個分函數中使用,但有一定的缺陷,我認為局部變量更加好用.(2)傳參的使用可以方便函數之間的聯系,使得函數的調用能夠發揮更加大的作用,建立分函數之間的獨特聯系,我也用到了去進行傳鏈表的一個節點的指針,使得鏈表的功能更加的強大,當然這只是傳了節點的指針,但我之
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《汽車貸款提前還款合同模板》
- 倉儲設施安全檢查與物業管理服務合同
- 企業債務財產保全法律文書解除合同
- 企事業單位內部停車位銷售及使用管理合同范本
- 資產重組財務擔保合同會計處理指南
- 老人健康講座課件
- 美術課件制作介紹
- 美術色彩知識課件
- 安全生產約談會
- 消防安全形勢分析會議記錄
- DB45∕T 1098-2024 橡膠瀝青路面施工技術規范
- 2025年沈陽水務集團招聘筆試沖刺題2025
- 《蠶絲》教學課件
- 中央軍校面試題庫及答案
- 2025年廣東省高考地理試卷真題(含答案)
- 江西省金控科技產業集團有限公司招聘筆試題庫2025
- Unit 1 Happy Holiday 第4課時(Section B 1a-1d) 2025-2026學年人教版英語八年級下冊
- 2025年連云港市中考語文試卷真題(含標準答案及解析)
- 2025-2030年中國期貨行業市場深度調研及競爭格局與投資策略研究報告
- 2025-2030年中國農業科技行業市場深度調研及前景趨勢與投資研究報告
- 2025至2030中國家用血壓計行業發展趨勢分析與未來投資戰略咨詢研究報告
評論
0/150
提交評論