




已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)C語(yǔ)言設(shè)計(jì)報(bào)告題目:簡(jiǎn)單潛艇大戰(zhàn)一、 選題背景:隨著人們生活水平的提高,人們對(duì)精神生活的要求也隨之提高了,當(dāng)然,娛樂(lè)也成了人們生活中必不可少的一部分,為此,我用C語(yǔ)言編輯了一個(gè)簡(jiǎn)單的簡(jiǎn)單潛艇大戰(zhàn)游戲程序。它操作起來(lái)簡(jiǎn)單方便,運(yùn)行速度快。二、設(shè)計(jì)思想:簡(jiǎn)單潛艇大戰(zhàn)就是玩家和電腦對(duì)戰(zhàn)的游戲,玩家在確保本身不被敵人擊中的情況下?lián)糁袛橙藙t得分,若被敵人擊中游戲結(jié)束。此程序利用了if,for,while等多種語(yǔ)句進(jìn)行了編譯,而且多次使用了for語(yǔ)句進(jìn)行了循環(huán),用if語(yǔ)句進(jìn)行操作,if語(yǔ)句是用來(lái)處理?xiàng)l件選擇的一種語(yǔ)句。此游戲可以任意移動(dòng)玩家的位置。三、程序流程圖結(jié)束若電腦中彈則玩家得分游戲繼續(xù),若玩家中彈則游戲結(jié)束圖形初始化開(kāi)始玩家敵人判斷是否攻擊敵人判斷是否攻擊玩家否否(敵人在攻擊范圍之內(nèi)) (玩家在攻擊范圍之內(nèi))四、程序清單#include #include #include #include #define KEY_ESC 0x01#define KEY_SPACE 0x39#define KEY_LEFT 0x4b#define KEY_RIGHT 0x4dint speed=10000;char key_state128,key_pressed128;/*鍵盤(pán)操作用的變量*/int score=0;/*得分*/char scorestr10;/*輸出分?jǐn)?shù)的變量*/struct Fire/*子彈的結(jié)構(gòu)體*/int x;int y;int start;/*是否發(fā)射炮彈*/amyfire6;/*屏幕上最多有5個(gè)敵人可以發(fā)子彈*/struct Play/*玩家的結(jié)構(gòu)體*/int x;int y;struct Fire fire6;life;play;struct Amy/*敵人的結(jié)構(gòu)體*/int x;int y;int speed;/*敵人的速度*/int color;int direction;life;amy6;void InitGraph(void);/*圖形初始化*/void CloseGraph(void);/*圖形結(jié)束*/void GamePlay(void);/*具體玩游戲*/void DrawPlay(void);/*畫(huà)玩家*/void DrawAmy(int i);/*畫(huà)敵人*/void DrawFire(int x,int y,int n);/*畫(huà)子彈,0去除,1顯示*/void DrawAmyFire(int x,int y,int n);/*畫(huà)子彈,0去除,1顯示*/void DrawBlack(int x,int y,int color);/*去除原來(lái)地方的物體*/void PrScore();/*輸出得分*/int GetKey(int ScanCode);/*這里開(kāi)始都是按鍵函數(shù)*/void interrupt far (*OldInt9Handler)();void far interrupt NewInt9();void InstallKeyboard();void ShutDownKeyboard();void main(void)InitGraph();/*圖形初始化*/GamePlay();/*具體玩游戲*/CloseGraph();/*圖形結(jié)束*/void InitGraph(void)/*圖形初始化*/int gd=DETECT,gm;initgraph(&gd,&gm,c:tc);cleardevice();InstallKeyboard();void DrawPlay(void)/*畫(huà)玩家*/setfillstyle(SOLID_FILL,6);bar(play.x-20,play.y-10,play.x+20,play.y);setfillstyle(SOLID_FILL,4);bar(play.x-20,play.y-10,play.x-10,play.y);void DrawAmy(int i)/*畫(huà)敵人*/setfillstyle(SOLID_FILL,amyi.color);bar(amyi.x-20,amyi.y-10,amyi.x+20,amyi.y);setfillstyle(SOLID_FILL,GREEN);if(amyi.direction=1)bar(amyi.x-20,amyi.y-10,amyi.x-10,amyi.y);elsebar(amyi.x+10,amyi.y-10,amyi.x+20,amyi.y);void DrawBlack(int x,int y,int color)/*去除原來(lái)地方的物體*/setfillstyle(SOLID_FILL,color);bar(x-20,y-10,x+20,y);void DrawFire(int x,int y,int n)/*畫(huà)子彈,0去除,1顯示*/if(n=0)setfillstyle(SOLID_FILL,BLUE);elsesetfillstyle(SOLID_FILL,0);setcolor(BLUE);fillellipse(x,y,5,5);void DrawAmyFire(int x,int y,int n)/*畫(huà)子彈,0去除,1顯示*/if(n=0)setfillstyle(SOLID_FILL,BLUE);elsesetfillstyle(SOLID_FILL,YELLOW);/*敵人的炮彈是黃的*/setcolor(BLUE);fillellipse(x,y,3,3);void PrScore()/*輸出得分*/setfillstyle(SOLID_FILL,8);/*把原來(lái)分?jǐn)?shù)去除*/bar(30,0,200,40);setcolor(11);/*輸出新得分*/settextstyle(0,0,2);sprintf(scorestr,%d,score);outtextxy(30,20,scorestr);void GamePlay(void)/*具體玩游戲*/int i,j;setfillstyle(SOLID_FILL,BLUE);bar(0,100,640,480);setfillstyle(SOLID_FILL,8);bar(0,0,640,99);play.x=200;play.y=99;/*玩家初始位置*/for(i=0;i6;i+)play.firei.start=0;/*一開(kāi)始的子彈都為沒(méi)發(fā)射狀態(tài)*/amyfirei.start=0;amyi.life=0;play.life=1;DrawPlay();/*玩家初始位置*/PrScore();/*輸出得分*/randomize();while(1) for(i=0;i6;i+)/*查找玩家是否有發(fā)射的子彈*/ if(play.firei.start=1)/*發(fā)射的子彈*/ DrawFire(play.firei.x,play.firei.y,0);/*去除原來(lái)子彈位置*/ play.firei.y+=3; DrawFire(play.firei.x,play.firei.y,1);/*顯示新位置*/ for(j=0;j(amyj.x-22)&play.firei.x(amyj.y-14)&play.firei.y480)/*子彈超出屏幕就等于消失*/ play.firei.start=0; DrawFire(play.firei.x,play.firei.y,0); for(i=0;i6;i+)/*敵人炮彈的產(chǎn)生*/ if(amyi.life=1&amyi.color14&amyfirei.start=0)/*敵人發(fā)射炮彈的條件*/ amyfirei.start=1; amyfirei.x=amyi.x; amyfirei.y=amyi.y-10; for(i=0;i(play.x-14)&amyfirei.x(play.x+14)&(amyfirei.y+3)100)/*擊中玩家*/ play.life=0; amyfirei.start=0; DrawAmyFire(amyfirei.x,amyfirei.y,0); DrawBlack(play.x,play.y,8);/*去除玩家*/ break; if(amyfirei.y96)/*敵人炮彈超出海洋就消失*/ amyfirei.start=0; setfillstyle(SOLID_FILL,8); setcolor(8); fillellipse(amyfirei.x,amyfirei.y,3,3); delay(speed);/*間隔時(shí)間可以自己定*/ if(play.life!=1)/*玩家被擊中*/ break; for(i=0;i6;i+) if(amyi.life=0)/*出現(xiàn)一個(gè)敵人后就跳出循環(huán)*/ amyi.life=1; amyi.color=rand()%4+10;/*敵人的顏色*/ amyi.y=rand()%300+130;/*高度隨機(jī)*/ amyi.speed=2+rand()%10;/*敵人的移動(dòng)速度隨機(jī)*/ amyi.direction=rand()%2;/*敵人的移動(dòng)方向,0左邊,1右邊出來(lái)*/ if(amyi.direction=0) amyi.x=-20; else amyi.x=660; break; if(GetKey(KEY_ESC)/*退出鍵*/ break; if(GetKey(KEY_SPACE)/*發(fā)射*/ for(i=0;i6;i+) if(play.firei.start=0)/*發(fā)射一顆子彈后跳出循環(huán)*/ play.firei.x=play.x; play.firei.y=105; play.firei.start=1; break; if(GetKey(KEY_RIGHT)&play.x20)/*左鍵的控制*/ DrawBlack(play.x,play.y,8); play.x-=10; DrawPlay(); for(i=0;i660|amyi.x-20)/*敵人超出屏幕范圍就消失*/ amyi.life=0; if(play.life=0)/*被擊中失敗的話(huà)*/ setcolor(6); settextstyle(0,0,3); outtextxy(250,40,GAME OVER);while(1)if(GetKey(KEY_ESC)/*結(jié)束游戲按ESC*/break;void CloseGraph(void)/*圖形結(jié)束*/ShutDownKeyboard();closegraph();void far interrupt NewInt9(void)unsigned char ScanCode,temp;ScanCode=inportb(0x60);temp=inportb(0x61);outportb(0x61,temp | 0x80);outportb(0x61,temp & 0x7f);if(ScanCode&0x80) ScanCode&=0x7f; key_stateScanCode=0; else key_stateScanCode=1; key_pressedScanCode=1; outportb(0x20,0x20);void InstallKeyboard(void)int i;for(i=0;i128;i+)key_statei=key_pressedi=0;OldInt9Handler=getvect(9); /*中斷向量值*/setvect(9,NewInt9); /*中斷程序NewInt9地址存入指定的中斷向量表中INT 09H*/void ShutDownKeyboard(void)setvect(9,OldInt9Handler);int GetKey(int ScanCode)int res;res=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程法規(guī)考試中常見(jiàn)的陷阱試題及答案
- 2025年中級(jí)會(huì)計(jì)實(shí)務(wù)考試信心提升試題及答案
- 風(fēng)險(xiǎn)共擔(dān)的財(cái)務(wù)方法考題及答案
- 財(cái)務(wù)管理課程復(fù)習(xí)的重要知識(shí)點(diǎn)試題及答案
- 廠(chǎng)區(qū)承包合同協(xié)議書(shū)
- 備戰(zhàn)2025年中級(jí)會(huì)計(jì)實(shí)務(wù)考試試題及答案
- 2025建筑項(xiàng)目委托建設(shè)借款合同模板
- 2025農(nóng)產(chǎn)品交易服務(wù)合同
- 醫(yī)學(xué)生預(yù)推免面試核心準(zhǔn)備策略
- 2025年工業(yè)互聯(lián)網(wǎng)平臺(tái)邊緣計(jì)算硬件架構(gòu)性能提升解決方案報(bào)告
- GB/T 2423.18-2021環(huán)境試驗(yàn)第2部分:試驗(yàn)方法試驗(yàn)Kb:鹽霧,交變(氯化鈉溶液)
- 11471勞動(dòng)爭(zhēng)議處理(第7章)
- 糖尿病護(hù)理專(zhuān)題知識(shí)講座
- 聘用證明(共4篇)
- 留置導(dǎo)尿技術(shù)操作-課件
- 乳腺癌手術(shù)及重建知情同意書(shū)
- 桌面云規(guī)劃與最佳實(shí)踐
- IgG4相關(guān)性疾病的診治ppt課件
- 保健品會(huì)議營(yíng)銷(xiāo)市場(chǎng)操作手冊(cè)(全)
- 設(shè)備(材料)供應(yīng)招標(biāo)文件范本
- 220千伏線(xiàn)路無(wú)人機(jī)放線(xiàn)施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論