新聞中心
c語(yǔ)言:簡(jiǎn)單飛機(jī)射擊小游戲
10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有衛(wèi)濱免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
使用c語(yǔ)言編寫(xiě)一個(gè)打飛機(jī)小游戲,使用鍵盤(pán)按鍵來(lái)進(jìn)行游戲,操作方法是“a”“d”“w”或者“←”“↑”“→”來(lái)控制***、左、右,擊中敵機(jī)可獲得積分,被敵機(jī)撞中死亡一次,每次游戲有3次機(jī)會(huì),機(jī)會(huì)用光則游戲結(jié)束,之后可選擇是否重新開(kāi)始游戲。
改進(jìn):增加了顏色函數(shù),使得游戲看起來(lái)更加的舒適;增加了終止函數(shù),使游戲在死亡三次后自動(dòng)結(jié)束游戲,并且可以選擇是否重新開(kāi)始游戲;另外增添了設(shè)置函數(shù),使得可以對(duì)游戲進(jìn)行設(shè)置,改變游戲大小,調(diào)整飛機(jī)運(yùn)行速度等等,是游戲更加的人性化。
內(nèi)容:編寫(xiě)出c語(yǔ)言代碼,運(yùn)行程序,并調(diào)試程序,最終實(shí)現(xiàn)游戲的功能。本程序主要包含游戲控制函數(shù)、設(shè)置是否繼續(xù)游戲函數(shù)、輸出函數(shù)、×××移動(dòng)函數(shù)、敵機(jī)移動(dòng)函數(shù)、設(shè)置函數(shù)、菜單函數(shù)等7個(gè)主要函數(shù),包含了不同的功能,對(duì)原來(lái)的程序作出了很大的改進(jìn),用到的主要語(yǔ)句有g(shù)etche語(yǔ)句、for語(yǔ)句、while語(yǔ)句、printf語(yǔ)句、switch語(yǔ)句等等,添加了顏色函數(shù),實(shí)現(xiàn)了諸多功能??梢栽陧?yè)面上顯示制作人的主要信息等等
源代碼:
#include
#include
#include
#include
#define N 35
void print(int [][N]);//輸出函數(shù)
void movebul(int [][N]);//×××移動(dòng)函數(shù)
void movepla(int [][N]);//敵機(jī)移動(dòng)函數(shù)
void setting(void);//設(shè)置函數(shù)
void menu(void);//菜單函數(shù)
int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局變量:界面、我機(jī)初始位、界面寬度、敵機(jī)速度、敵機(jī)密度、得分、死亡
main(void)
{
menu();
int i=0,j=0;
scr[21][pl]=1;
scr[0][5]=3;
while(1)
{
if(kbhit())
switch(getch())//控制左右移動(dòng)和進(jìn)入菜單
{
case 'a':case 'A':
if(pl>0)
scr[21][pl]=0,scr[21][--pl]=1;
break;
case 'd':case 'D':
if(pl scr[21][pl]=0,scr[21][++pl]=1; break; case 'w':case 'W': scr[20][pl]=2; break; case 27 : setting(); break; } if(++j%density==0)//控制生產(chǎn)敵機(jī)的速度 { j=0;srand(time(NULL)); scr[0][rand()%width]=3; } if(++i%speed==0)//控制敵機(jī)移動(dòng)速度,相對(duì)于×××移動(dòng)速度 movepla(scr); movebul(scr); print(scr); if(i==30000) i=0;//以免i 越界 } } void print(int a[][N]) { system("cls"); int i,j; for(i=0;i<22;i++) { a[i][width-1]=4; for(j=0;j { if(a[i][j]==0) printf(" "); if(a[i][j]==1) printf("\5");//輸出我機(jī)的符號(hào) if(a[i][j]==2) printf(".");//××× if(a[i][j]==3) printf("\3"); //輸出敵機(jī)符號(hào) if(a[i][j]==4) printf("|"); if(i==0&&j==width-1) printf("得分:%d",score);//右上角顯示得分 if(i==1&&j==width-1) printf("死亡:%d",death); if(i==2&&j==width-1) printf("設(shè)置:Esc"); if(i==3&&j==width-1) printf("Copyright:Berlin"); } printf("\n"); } } void movebul(int a[][N]) { int i,j; for(i=0;i<22;i++) for(j=0;j { if(i==0&&a[i][j]==2) a[i][j]=0; if(a[i][j]==2) { if(a[i-1][j]==3) score+=10,printf("\7"); a[i][j]=0,a[i-1][j]=2; } } } void movepla(int a[][N]) { int i,j; for(i=21;i>=0;i--)//從最后一行往上是為了避免把敵機(jī)直接沖出數(shù)組。 for(j=0;j { if(i==21&&a[i][j]==3) a[i][j]=0;//底行賦值0 以免越界。 if(a[i][j]==3) a[i][j]=0,a[i+1][j]=3; } if(a[20][pl]==3&&a[21][pl]==1) death++; } void setting(void) { int sw=0,i,j; system("cls"); do{sw=0;printf("\n 游戲界面的大小:1.大2.小>> "); switch(getche()) { case '1': width=34; break; case '2': width=24; break; default: printf("\n 錯(cuò)誤,請(qǐng)重新選擇...\n"); sw=1; } } while(sw); do { sw=0; printf("\n 請(qǐng)選擇敵機(jī)密度:1.大2.中3.小>> "); switch(getche()) { case '0': density=10; break; case '1': density=20; break; case '2': density=30; break; case '3': density=40; break; default: printf("\n 錯(cuò)誤,請(qǐng)重新選擇...\n"); sw=1; } }while(sw); do { sw=0; printf("\n 敵機(jī)的飛行速度:1.快2.中3.慢>> "); switch(getche()) { case '1': speed=2; break; case '2': speed=3; break; case '3': speed=4; break; default: printf("\n 錯(cuò)誤,請(qǐng)重新選擇...\n"); sw=1; } }while(sw); for(i=0;i<22;i++) for(j=0;j<45;j++) scr[i][j]=0; scr[21][pl=9]=1; printf("\n 按任意鍵保存..."); getch(); } void menu(void) { printf("說(shuō)明:按A D 控制我機(jī)左右飛行,W 發(fā)射×××\n 設(shè)置:請(qǐng)按Esc\n 開(kāi)始游戲:任意鍵\n "); if(getch()==27) setting(); } 總結(jié): 通過(guò)本次試驗(yàn),使我對(duì)c語(yǔ)言有了更深一層次的了解,對(duì)getche語(yǔ)句、for語(yǔ)句、while語(yǔ)句、printf語(yǔ)句、switch語(yǔ)句、顏色函數(shù)等等的了解及使用更加詳細(xì)了一些,明白了這些語(yǔ)句的用法,明確了c語(yǔ)言的使用環(huán)境,功能。C語(yǔ)言作為一個(gè)基礎(chǔ)性編程語(yǔ)言是我們?cè)谝院缶幊讨胁豢苫蛉钡恼Z(yǔ)言,使用率肯定會(huì)進(jìn)一步增高。掌握了c語(yǔ)言就相當(dāng)于掌握了一門(mén)技術(shù),同時(shí)c語(yǔ)言相對(duì)而言簡(jiǎn)單一些,更容易理解。自己雖然對(duì)這個(gè)小游戲進(jìn)行一部分的改造,但是我也感覺(jué)這只是其中的很很小的一部分,肯定會(huì)有更加強(qiáng)大的功能等待著我們?nèi)ジ纳?。同時(shí),我也發(fā)現(xiàn)了自己很多的不足,需要進(jìn)一步加強(qiáng)這一方面的學(xué)習(xí),明白了自己的在哪一方面的欠缺,希望可以在以后的學(xué)習(xí)中更加徹底的彌補(bǔ)自己的不足,改善這種情況。
本文名稱(chēng):c語(yǔ)言:簡(jiǎn)單飛機(jī)射擊小游戲
文章URL:http://biofuelwatch.net/article/pegsji.html