




免費(fèi)預(yù)覽已結(jié)束,剩余9頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)C語言設(shè)計(jì)報(bào)告題目:簡單潛艇大戰(zhàn)一、 選題背景:隨著人們生活水平的提高,人們對(duì)精神生活的要求也隨之提高了,當(dāng)然,娛樂也成了人們生活中必不可少的一部分,為此,我用C語言編輯了一個(gè)簡單的簡單潛艇大戰(zhàn)游戲程序。它操作起來簡單方便,運(yùn)行速度快。二、設(shè)計(jì)思想:簡單潛艇大戰(zhàn)就是玩家和電腦對(duì)戰(zhàn)的游戲,玩家在確保本身不被敵人擊中的情況下?lián)糁袛橙藙t得分,若被敵人擊中游戲結(jié)束。此程序利用了if,for,while等多種語句進(jìn)行了編譯,而且多次使用了for語句進(jìn)行了循環(huán),用if語句進(jìn)行操作,if語句是用來處理?xiàng)l件選擇的一種語句。此游戲可以任意移動(dòng)玩家的位置。三、程序流程圖結(jié)束若電腦中彈則玩家得分游戲繼續(xù),若玩家中彈則游戲結(jié)束圖形初始化開始玩家敵人判斷是否攻擊敵人判斷是否攻擊玩家否否(敵人在攻擊范圍之內(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;/*鍵盤操作用的變量*/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);/*畫玩家*/void DrawAmy(int i);/*畫敵人*/void DrawFire(int x,int y,int n);/*畫子彈,0去除,1顯示*/void DrawAmyFire(int x,int y,int n);/*畫子彈,0去除,1顯示*/void DrawBlack(int x,int y,int color);/*去除原來地方的物體*/void PrScore();/*輸出得分*/int GetKey(int ScanCode);/*這里開始都是按鍵函數(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)/*畫玩家*/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)/*畫敵人*/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)/*去除原來地方的物體*/setfillstyle(SOLID_FILL,color);bar(x-20,y-10,x+20,y);void DrawFire(int x,int y,int n)/*畫子彈,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)/*畫子彈,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);/*把原來分?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;/*一開始的子彈都為沒發(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);/*去除原來子彈位置*/ 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右邊出來*/ 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)/*被擊中失敗的話*/ 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 場(chǎng)地?cái)U(kuò)建打樁方案(3篇)
- DB23-T3028-2021-鮮食甜玉米機(jī)械化栽培技術(shù)規(guī)程-黑龍江省
- DB23-T2928-2021-基于水生態(tài)功能分區(qū)的流域水環(huán)境監(jiān)測(cè)方法指南-黑龍江省
- DB23-T2839-2021-政務(wù)信息資源目錄第1部分:編碼規(guī)則-黑龍江省
- 農(nóng)業(yè)基地現(xiàn)場(chǎng)管理制度
- 公司接待廚房管理制度
- 崗位定員設(shè)置管理制度
- 工程現(xiàn)場(chǎng)質(zhì)量管理制度
- 文明施工措施方案(3篇)
- 建筑圍擋招標(biāo)方案(3篇)
- 中考數(shù)學(xué)-規(guī)律探究型問題(2種命題預(yù)測(cè)+17種題型合集+專題訓(xùn)練)(含答案)
- 建筑與環(huán)境設(shè)計(jì)專題知到智慧樹章節(jié)測(cè)試課后答案2024年秋寧夏大學(xué)
- 2025年中國國際貨運(yùn)航空股份有限公司招聘筆試參考題庫含答案解析
- 2025年全球及中國電池包用防爆閥行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 遼寧省沈陽126中學(xué)2025屆中考生物考前最后一卷含解析
- 4S店燒烤活動(dòng)方案
- 《大氣輻射學(xué)》課件
- 新課標(biāo)(水平三)體育與健康《籃球》大單元教學(xué)計(jì)劃及配套教案(18課時(shí))
- 精神衛(wèi)生機(jī)構(gòu)污水處理方案
- 延長石油集團(tuán)招聘筆試
- 產(chǎn)品數(shù)字護(hù)照(DPP)技術(shù)發(fā)展報(bào)告(2023年)
評(píng)論
0/150
提交評(píng)論