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)LeetCode(647.回文子字符串)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(647.回文子字符串),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07利用C++實(shí)現(xiàn)最長公共子序列與最長公共子串
這篇文章主要給大家介紹了如何利用C++實(shí)現(xiàn)最長公共子序列與最長公共子串,文章一開始就給大家簡單的介紹了什么是子序列,子串應(yīng)該比較好理解就不用多介紹了,人后通過算法及示例代碼詳細(xì)介紹了C++實(shí)現(xiàn)的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12詳解C語言中freopen()函數(shù)和fclose()函數(shù)的用法
這篇文章主要介紹了詳解C語言中freopen()函數(shù)和fclose()函數(shù)的用法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08在輸入輸出字符串時(shí)scanf(),printf()和gets(),puts()的區(qū)別淺談
在輸入輸出字符串時(shí)scanf(),printf()和gets(),puts()的區(qū)別淺談,需要的朋友可以參考一下2013-02-02三種獲取網(wǎng)頁源碼的方法(使用MFC/Socket實(shí)現(xiàn))
Windows下比較簡單的獲取網(wǎng)頁源碼的方法:使用MFC、使用MFC、Socket實(shí)現(xiàn)2013-12-12