C語言實現簡單的飛機大戰遊戲
本文實例為大傢分享瞭C語言實現簡單飛機大戰遊戲的具體代碼,供大傢參考,具體內容如下
一、項目描述和最終的成果展示
項目描述: 顯示出一個飛機,並可以控制移動,發出激光,打靶練習。
效果展示:
二、輸出一個飛機模型
先輸出一個飛機模型。後面再進一步完成控制飛機的功能。
代碼如下:
//輸出飛機圖案 #include<stdio.h> #include<stdlib.h> #include<conio.h> int main(void) { int i,j; int x=10; int y=10; char input; //輸出飛機上面的空行 for(i=0;i<x;i++) { printf("\n"); } //輸出飛機左邊的空格 for(j=0;j<y;j++) { printf(" "); } printf(" *\n"); for(j=0;j<y;j++) { printf(" "); } printf("*****\n"); for(j=0;j<y;j++) { printf(" "); } printf(" * * \n"); return 0; }
效果圖如下:
三、實現控制飛機移動的功能
用scanf()函數來實現控制飛機移動的功能
代碼如下:
#include<stdio.h> #include<stdlib.h> //用scanf來完成飛機的移動 int main(void) { int i,j; int x=5; int y=10; char input; while(1) { system("cls"); //輸出飛機上面的空行 for(i=0;i<x;i++) { printf("\n"); } //輸出飛機左邊的空格 for(j=0;j<y;j++) { printf(" "); } printf(" *\n"); for(j=0;j<y;j++) { printf(" "); } printf("*****\n"); for(j=0;j<y;j++) { printf(" "); } printf(" * * \n"); scanf("%c",&input); if(input == 'a' || input == 'A') { y--; } if(input == 'd' || input == 'D') { y++; } if(input == 'w' || input == 'W') { x--; } if(input == 's' || input == 'S') { x++; } } return 0; }
效果圖如下:
你會發現一個弊端 就是它會顯示你輸入瞭啥,這樣是特別的不友好的。
所以我們要用 getch() 這個函數, 它是不會顯示回顯的。即,不會出現我們輸入的是啥。
這樣就很好瞭,達到瞭我們的目的。
用getch()函數來實現控制飛機移動的功能
代碼如下:
#include<stdio.h> #include<stdlib.h> #include<conio.h> //用scanf來完成飛機的移動 int main(void) { int i,j; int x=5; int y=10; char input; while(1) { system("cls"); //輸出飛機上面的空行 for(i=0;i<x;i++) { printf("\n"); } //輸出飛機左邊的空格 for(j=0;j<y;j++) { printf(" "); } printf(" *\n"); for(j=0;j<y;j++) { printf(" "); } printf("*****\n"); for(j=0;j<y;j++) { printf(" "); } printf(" * * \n"); input=getch(); if(input == 'a' || input == 'A') { y--; } if(input == 'd' || input == 'D') { y++; } if(input == 'w' || input == 'W') { x--; } if(input == 's' || input == 'S') { x++; } } return 0; }
效果圖如下:
四、添加發射激光功能
代碼如下:
#include<stdio.h> #include<stdlib.h> #include<conio.h> //用getch來完成飛機的移動 int main(void) { int i,j; int x=10; int y=10; char input; int isFire=0;//用來判斷是否發射 while(1) { if(isFire == 0) { //輸出飛機上面的空行 for(i=0;i<x;i++) printf("\n"); } else { for(i=0;i<x;i++) { for(j=0;j<y;j++) printf(" "); printf(" |\n"); } isFire = 0; } //輸出飛機左邊的空格 for(j=0;j<y;j++) { printf(" "); } printf(" *\n"); for(j=0;j<y;j++) { printf(" "); } printf("*****\n"); for(j=0;j<y;j++) { printf(" "); } printf(" * * \n"); input=getch(); fflush(stdin); system("cls"); if(input == 'a' || input == 'A') { y--; } if(input == 'd' || input == 'D') { y++; } if(input == 'w' || input == 'W') { x--; } if(input == 's' || input == 'S') { x++; } if( input == ' ') isFire = 1; } return 0; }
效果圖如下:
五、添加靶子和分數統計功能
代碼如下:
#include<stdio.h> #include<stdlib.h> #include<Windows.h> #include<time.h> #include<conio.h> //用getch來完成飛機的移動 int main(void) { int i,j; int x=10; int y=10; char input; int isFire=0;//用來判斷是否發射 int score=10; int ny = 30; // 靶子的位置 int isKilled = 0; //判斷是否擊中 int yanshi=0; // 延時靶子的時間 system("color 09"); while(1) { if(yanshi<66)//延時 讓靶子顯示 { yanshi++; } else { srand(time(0)); ny=rand()%80+5; yanshi=0; } printf("分數:%d\n",score); if(!isKilled)//沒有擊中靶子,繼續顯示靶子 { for(j=0;j<ny;j++) { printf(" "); } printf("▼\n"); } else//說明擊中靶子,刷新靶子 { yanshi=66; isKilled=0; } if(isFire == 0) { //輸出飛機上面的空行 for(i=0;i<x;i++) printf("\n"); } else//開火 { for(i=0;i<x;i++) { for(j=0;j<y;j++) printf(" "); printf(" |\n"); } isFire = 0; } //輸出飛機左邊的空格 for(j=0;j<y;j++) { printf(" "); } printf(" *\n"); for(j=0;j<y;j++) { printf(" "); } printf("*****\n"); for(j=0;j<y;j++) { printf(" "); } printf(" * * \n"); input=getch(); fflush(stdin); system("cls"); if(input == 'a' || input == 'A') { y--; } if(input == 'd' || input == 'D') { y++; } if(input == 'w' || input == 'W') { x--; } if(input == 's' || input == 'S') { x++; } if( input == ' ') isFire = 1; if( (ny==y+2) && (input==' ') )//判斷是否擊中靶子 { isKilled=1; score=score+5;//分數增加 } } return 0; }
效果圖如下:
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。