C語言實(shí)現(xiàn)簡單的飛機(jī)大戰(zhàn)游戲
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)簡單飛機(jī)大戰(zhàn)游戲的具體代碼,供大家參考,具體內(nèi)容如下
一、項(xiàng)目描述和最終的成果展示
項(xiàng)目描述: 顯示出一個(gè)飛機(jī),并可以控制移動(dòng),發(fā)出激光,打靶練習(xí)。
效果展示:

二、輸出一個(gè)飛機(jī)模型
先輸出一個(gè)飛機(jī)模型。后面再進(jìn)一步完成控制飛機(jī)的功能。
代碼如下:
//輸出飛機(jī)圖案
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(void)
{
?? ??? ?int i,j;
?? ??? ?int x=10;
?? ??? ?int y=10;
?? ??? ?char input;
?? ??? ?//輸出飛機(jī)上面的空行
?? ??? ?for(i=0;i<x;i++)
?? ??? ?{
?? ??? ??? ?printf("\n");
?? ??? ?}
?? ??? ?//輸出飛機(jī)左邊的空格
?? ??? ?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;
}效果圖如下:

三、實(shí)現(xiàn)控制飛機(jī)移動(dòng)的功能
用scanf()函數(shù)來實(shí)現(xiàn)控制飛機(jī)移動(dòng)的功能
代碼如下:
#include<stdio.h>
#include<stdlib.h>
//用scanf來完成飛機(jī)的移動(dòng)
int main(void)
{
?? ?int i,j;
?? ?int x=5;
?? ?int y=10;
?? ?char input;
?? ?while(1)
?? ?{
?? ??? ?system("cls");
?? ??? ?//輸出飛機(jī)上面的空行
?? ??? ?for(i=0;i<x;i++)
?? ??? ?{
?? ??? ??? ?printf("\n");
?? ??? ?}
?? ??? ?//輸出飛機(jī)左邊的空格
?? ??? ?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;
}效果圖如下:

你會(huì)發(fā)現(xiàn)一個(gè)弊端 就是它會(huì)顯示你輸入了啥,這樣是特別的不友好的。
所以我們要用 getch() 這個(gè)函數(shù), 它是不會(huì)顯示回顯的。即,不會(huì)出現(xiàn)我們輸入的是啥。
這樣就很好了,達(dá)到了我們的目的。
用getch()函數(shù)來實(shí)現(xiàn)控制飛機(jī)移動(dòng)的功能
代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//用scanf來完成飛機(jī)的移動(dòng)
int main(void)
{
?? ?int i,j;
?? ?int x=5;
?? ?int y=10;
?? ?char input;
?? ?while(1)
?? ?{
?? ??? ?system("cls");
?? ??? ?//輸出飛機(jī)上面的空行
?? ??? ?for(i=0;i<x;i++)
?? ??? ?{
?? ??? ??? ?printf("\n");
?? ??? ?}
?? ??? ?//輸出飛機(jī)左邊的空格
?? ??? ?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;
}效果圖如下:

四、添加發(fā)射激光功能
代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//用getch來完成飛機(jī)的移動(dòng)
int main(void)
{
?? ?int i,j;
?? ?int x=10;
?? ?int y=10;
?? ?char input;
?? ?int isFire=0;//用來判斷是否發(fā)射
?? ?while(1)
?? ?{
?? ??? ?if(isFire == 0)
?? ??? ?{
?? ??? ??? ?//輸出飛機(jī)上面的空行
?? ??? ??? ?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;
?? ??? ?}
?? ??? ?//輸出飛機(jī)左邊的空格
?? ??? ?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;
}效果圖如下:

五、添加靶子和分?jǐn)?shù)統(tǒng)計(jì)功能
代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<time.h>
#include<conio.h>
//用getch來完成飛機(jī)的移動(dòng)
int main(void)
{
?? ?int i,j;
?? ?int x=10;
?? ?int y=10;
?? ?char input;
?? ?int isFire=0;//用來判斷是否發(fā)射
?? ?int score=10;
?? ?int ny = 30; ? ? ? ?// ?靶子的位置
?? ?int isKilled = 0; //判斷是否擊中
?? ?int yanshi=0; ? ?// ?延時(shí)靶子的時(shí)間
?? ?system("color 09");
?? ?while(1)
?? ?{
?? ??? ?if(yanshi<66)//延時(shí) 讓靶子顯示
?? ??? ?{
?? ??? ??? ?yanshi++;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?srand(time(0));
?? ??? ??? ?ny=rand()%80+5;
?? ??? ??? ?yanshi=0;
?? ??? ?}
?? ??? ?printf("分?jǐn)?shù):%d\n",score);
?? ??? ?if(!isKilled)//沒有擊中靶子,繼續(xù)顯示靶子
?? ??? ?{
?? ??? ??? ?for(j=0;j<ny;j++)
?? ??? ??? ?{
?? ??? ??? ??? ?printf(" ");
?? ??? ??? ?}
?? ??? ??? ?printf("▼\n");
?? ??? ?}
?? ??? ?else//說明擊中靶子,刷新靶子
?? ??? ?{
?? ??? ??? ?yanshi=66;
?? ??? ??? ?isKilled=0;
?? ??? ?}
?? ??? ?if(isFire == 0)
?? ??? ?{
?? ??? ??? ?//輸出飛機(jī)上面的空行
?? ??? ??? ?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;
?? ??? ?}
?? ??? ?//輸出飛機(jī)左邊的空格
?? ??? ?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;//分?jǐn)?shù)增加
?? ??? ?}
?? ?}
?? ?return 0;
}效果圖如下:

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)
- C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)程序設(shè)計(jì)
- C語言用封裝方法實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
- C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲完整代碼
- C語言控制臺(tái)實(shí)現(xiàn)字符飛機(jī)大戰(zhàn)
- C語言版飛機(jī)大戰(zhàn)游戲
- C語言代碼實(shí)現(xiàn)飛機(jī)大戰(zhàn)
- C語言之飛機(jī)大戰(zhàn)游戲
- C語言實(shí)現(xiàn)簡單飛機(jī)大戰(zhàn)
- C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲
相關(guān)文章
C++實(shí)現(xiàn)假裝藍(lán)屏整蠱小程序
因?yàn)楣ぷ鞯男枰?,有時(shí)候我們離開時(shí)并不想讓別人看到我們電腦的內(nèi)容,所以本文為大家分享了一個(gè)基于C++實(shí)現(xiàn)的假裝藍(lán)屏的小程序,需要的可以參考下2023-06-06
Opencv 馬賽克和毛玻璃效果與圖片融合的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了通過OpenCV實(shí)現(xiàn)馬賽克和毛玻璃濾鏡效果與圖片的融合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
C++深入探索類真正的形態(tài)之struct與class
前邊我們所定義的類,均是使用struct關(guān)鍵字來定義,但是C++中真正用于定義類的關(guān)鍵字為class,因?yàn)橐狢++兼容C,所以保留struct關(guān)鍵字,struct與class的用法完全相同2022-04-04
C語言實(shí)現(xiàn)的一個(gè)三子棋游戲詳解流程
三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋等。將正方形對(duì)角線連起來,相對(duì)兩邊依次擺上三個(gè)雙方棋子,只要將自己的三個(gè)棋子走成一條線,對(duì)方就算輸了2021-10-10
C++實(shí)現(xiàn)LeetCode(115.不同的子序列)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(115.不同的子序列),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

