這篇文章給大家分享的是有關(guān)C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單飛機(jī)大戰(zhàn)的方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
成都網(wǎng)站制作、成都做網(wǎng)站服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶提供服務(wù)是我們的理念。成都創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來(lái)開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
具體內(nèi)容如下
定義四個(gè)函數(shù)實(shí)現(xiàn)飛機(jī)大戰(zhàn)
#include<stdio.h> #include<windows.h> #include<conio.h> //定義全局變量 int high,width; //定義邊界 int position_x,position_y; //飛機(jī)位置 int bullet_x,bullet_y; //子彈位置 int enemy_x,enemy_y; int score; int flag; //飛機(jī)狀態(tài) void gotoxy(int x,int y) //光標(biāo)移動(dòng)到(x,y)位置 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle,pos); } void HideCursor() // 用于隱藏光標(biāo) { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; // 第二個(gè)值為0表示隱藏光標(biāo) SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void startup() //數(shù)據(jù)初始化 { high=18; width=26; position_x=high-3; position_y=width/2; bullet_x=0; bullet_y=position_y; enemy_x=0; enemy_y=position_y; score=0; flag=0; //飛機(jī)完好 HideCursor(); } void show() //顯示界面 { int i,j; for(i=0;i<high;i++) { for(j=0;j<width;j++) { if(flag) break; else if((i==position_x)&&(j==position_y)) //飛機(jī)坐標(biāo) printf("*"); else if((i==enemy_x)&&(j==enemy_y)) //敵機(jī)坐標(biāo) printf("*"); else if((i==bullet_x)&&(j==bullet_y)) //子彈坐標(biāo) printf("|"); else if ((j==width-1)||(i==high-1)||(j==0)||(i==0)) //打印邊界 printf("#"); else printf(" "); } printf("\n"); } printf("\n"); if((position_x==enemy_x)&&(position_y==enemy_y)) { flag=1; //飛機(jī)撞毀 游戲結(jié)束 printf("得分: %d\n",score); printf("游戲結(jié)束"); } else printf("得分: %d\n",score); } void withoutInpute() //與用戶輸入無(wú)關(guān) { if(bullet_x>0) //子彈上升效果 bullet_x--; if((bullet_x==enemy_x)&&(bullet_y==enemy_y)) //子彈命中敵機(jī) { score++; bullet_x=-1; enemy_x=1; enemy_y=2+rand()%width-2; } static int speed; if(speed<30) //減慢敵機(jī)速度,不影響飛機(jī)和子彈速度 speed++; if(speed==30) { if(enemy_x<high) enemy_x++; else { enemy_x=0; enemy_y=2+rand()%width-2; } speed=0; } } void withInpute() //與用戶輸入有關(guān) { char input; if(kbhit()) //控制飛機(jī)方向 { input=getch(); if((input=='w')&&position_x>1) position_x--; if((input=='s')&&position_x<high-2) position_x++; if((input=='a')&&position_y>1) position_y--; if((input=='d')&&position_y<width-2) position_y++; if(input==' ') { bullet_x=position_x-1; bullet_y=position_y; } } } int main() { system("color 2f"); startup(); // 數(shù)據(jù)初始化 while(1) // 游戲循環(huán)執(zhí)行 { gotoxy(0,0); show(); // 顯示畫面 withoutInpute(); // 與用戶輸入無(wú)關(guān)的更新 withInpute(); // 與用戶輸入有關(guān)的更新 } }
作者的另一段代碼:C語(yǔ)言實(shí)現(xiàn)空戰(zhàn)游戲,也很棒,分享給大家:
#include<stdio.h> #include<windows.h> #include<conio.h> #define High 27 //定義邊界 #define Width 45 #define EnemyNum 5 //敵機(jī)數(shù)目 //定義全局變量 int canvas[High][Width]={0}; //定義元素,0為空格,1為飛機(jī),2為子彈,3為敵機(jī),4為右下邊界 int position_x,position_y; //飛機(jī)坐標(biāo) int enemy_x[EnemyNum],enemy_y[EnemyNum]; //敵機(jī)坐標(biāo) int score; //得分 int Speed; //敵機(jī)速度 int bulletwidth; //子彈寬度 void HideCursor() //隱藏光標(biāo) { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void gotoxy(int x,int y) //光標(biāo)移動(dòng)到(x,y)位置 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle,pos); } void startup() //數(shù)據(jù)初始化 { position_x=High-2; //初始化飛機(jī)位置 position_y=Width/2; canvas[position_x][position_y]=1; bulletwidth=0; //初始化子彈寬度 Speed=25; //敵機(jī)初始最小速度 int k; for(k=0;k<EnemyNum;k++) { enemy_x[k]=rand()%2; //初始化敵機(jī)位置 enemy_y[k]=rand()%Width; canvas[enemy_x[k]][enemy_y[k]]=3; } score=0; //得分初始化 HideCursor(); } void show() //顯示界面 { int i,j; gotoxy(0,0); for(i=0;i<=High;i++) { for(j=0;j<=Width;j++) { if(canvas[i][j] == 1) printf("*"); //輸出飛機(jī) else if(canvas[i][j]==2) printf("|"); //輸出子彈 else if(canvas[i][j]==3) printf("@"); //輸出敵機(jī) else if(canvas[i][j]==4) printf("#"); //輸出邊界# else printf(" "); //輸出空格 } printf("\n"); } printf("得分:%d\n",score); } void updateWithoutInput() //無(wú)需用戶輸入的更新 { int i,j,k; for(i=0;i<High;i++) { for(j=0;j<Width;j++) { if(canvas[i][j]==2) { for(k=0;k<EnemyNum;k++) { if(i==enemy_x[k] && j==enemy_y[k]) //擊中敵機(jī) { score++; if(score==5||score==10) //得分達(dá)到標(biāo)準(zhǔn)子彈加寬 bulletwidth++; canvas[enemy_x[k]][enemy_y[k]]=0; //生成新的敵機(jī) enemy_x[k]=rand()%2; enemy_y[k]=rand()%Width; canvas[enemy_x[k]][enemy_y[k]]=3; } } canvas[i][j]=0; //子彈自動(dòng)上升 if(i>0) canvas[i-1][j]=2; } } } for(k=0;k<EnemyNum;k++) { if(enemy_x[k]>High) //生成新的敵機(jī) { canvas[enemy_x[k]][enemy_y[k]]=0; enemy_x[k]=rand()%2; enemy_y[k]=rand()%Width; canvas[enemy_x[k]][enemy_y[k]]=3; } } static int speed=0; if(speed<Speed) //敵機(jī)速度 speed++; if(speed==Speed) { for(k=0;k<EnemyNum;k++) { canvas[enemy_x[k]][enemy_y[k]]=0; //敵機(jī)自動(dòng)下落 enemy_x[k]++; canvas[enemy_x[k]][enemy_y[k]]=3; } speed=0; } for(k=0;k<EnemyNum;k++) { if(enemy_x[k]==position_x&&enemy_y[k]==position_y) //飛機(jī)撞毀 { printf("游戲結(jié)束\n"); exit(0); } } } void updateWithInput() //需用戶輸入的更新 { char input; if(kbhit()) { input=getch(); if(input=='w' && position_x>0) //控制飛機(jī)方向 { canvas[position_x][position_y]=0; position_x--; canvas[position_x][position_y]=1; } else if(input=='s' && position_x<High-1) { canvas[position_x][position_y]=0; position_x++; canvas[position_x][position_y]=1; } else if(input=='a' && position_y>0) { canvas[position_x][position_y]=0; position_y--; canvas[position_x][position_y]=1; } else if(input=='d' && position_y<Width-1) { canvas[position_x][position_y]=0; position_y++; canvas[position_x][position_y]=1; } else if(input=' ') //space發(fā)射子彈 { int left,right; int x; left=position_y-bulletwidth; if(left<0) left=0; right=position_y+bulletwidth; if(right>Width-1) right=0; for(x=left;x<=right;x++) canvas[position_x-1][x]=2; } } } int main() { startup(); system("color 2f"); while(1) { show(); //顯示界面 updateWithoutInput(); //無(wú)需用戶輸入的更新 updateWithInput(); //需用戶輸入的更新 } }
感謝各位的閱讀!關(guān)于“C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單飛機(jī)大戰(zhàn)的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
分享名稱:C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單飛機(jī)大戰(zhàn)的方法
本文鏈接:http://muchs.cn/article42/pdjgec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站收錄、虛擬主機(jī)、網(wǎng)站策劃、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)