最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言控制臺實現(xiàn)字符飛機大戰(zhàn)

 更新時間:2020年12月28日 14:23:31   作者:北顧+  
這篇文章主要為大家詳細介紹了C語言控制臺實現(xiàn)字符飛機大戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)字符飛機大戰(zhàn)的具體代碼,供大家參考,具體內(nèi)容如下

先看看效果吧

大一的時候做的,當(dāng)時沒有好的代碼習(xí)慣,所以代碼有點亂,代碼直接復(fù)制就能用了,功能可以自行拓展。

代碼:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main () {
 int life=6;//生命
 int i,j/*循環(huán)*/,plane_x,plane_y/*飛機所在坐標(biāo)*/,a;
 plane_x=8,plane_y=15;//初始化飛機
 char getc; //方向獲取
 /*構(gòu)造地圖*/
 int score=0; //得分 // 1 1 1 1 1 1 1
 char Map[17][17]= { //0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},//0
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//1
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//2
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//3
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//4
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//5
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//6
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//7
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//8
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//9
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//10
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//11
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//12
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//13
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//14
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},//15
 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
 };//16
 for(;;) { //實現(xiàn)游戲循環(huán)
 int x,y;//隨機出現(xiàn)的敵機
 x=rand()%15+1;
 y=rand()%14+1;
 Map[y][x]=4;
 Map[plane_y][plane_x]=2;//初始化飛機
 for(i=0; i<17; i++) { //打印地圖
 for(j=0; j<17; j++) {
 if(Map[i][j]==1)//1為墻
 printf("▓");
 else if(Map[i][j]==0)
 printf(" ");
 else if(Map[i][j]==2)//2為飛機 初始map[15][7] (16,8)
 printf("Ж");
 else if(Map[i][j]==3)//3 子彈
 printf("!!");
 else if(Map[i][j]==4)//4 敵機
 printf("Ψ");
 }
 printf("\n");
 } //打印地圖結(jié)束
 printf("\n Ж生命:");
 
 for(i=0; i<life; i++)
 printf("■");
 printf("\n");
 printf(" 得分:%d\n\n 控制:\n w:上\ts:下\n a:左\ts:右\n e:發(fā)射子彈",score);
 for(i=0; i<17; i++) { //清除子彈
 for(j=0; j<17; j++) {
 if(Map[i][j]==3)
 Map[i][j]=0;
 }
 }//清除子彈結(jié)束
 for(i=0; i<17; i++) { //清除飛機軌跡
 for(j=0; j<17; j++) {
 if(Map[i][j]==2)
 Map[i][j]=0;
 }
 }//清除飛機軌跡 結(jié)束
 if(plane_x>0&&plane_x<16&&plane_y>0&&plane_y<16) {
 getc=getch();
 if (getc=='d') { //wasd
 ++plane_x;
 if(plane_x<=0)
 plane_x=1;
 else if(plane_x>=16)
 plane_x=15;
 else if(Map[plane_y][plane_x]==4) { //碰撞敵機,退出
 life--;
 if(life==0)
 break;
 }
 }
 if (getc=='a') {
 --plane_x;
 if(plane_x<=0)
 plane_x=1;
 else if(plane_x>=16)
 plane_x=15;
 else if(Map[plane_y][plane_x]==4) { //碰撞敵機,當(dāng)life==0退出
 life--;
 if(life==0)
 break;
 }
 }
 if (getc=='w') {
 --plane_y;
 if(plane_y<=0)
 plane_y=1;
 else if(plane_y>=16)
 plane_y=15;
 else if(Map[plane_y][plane_x]==4) { //碰撞敵機,退出
 life--;
 if(life==0)
 break;
 }
 }
 if (getc=='s') {
 ++plane_y;
 if(plane_y<=0)
 plane_y=1;
 else if(plane_y>=16)
 plane_y=15;
 else if(Map[plane_y][plane_x]==4) { //碰撞敵機,退出
 life--;
 if(life==0)
 break;
 }
 }
 if (getc=='e') {
 
 for(a=plane_y-1; a>=1; a--) {
 if(Map[a][plane_x]==4) { //
 score++;
 Map[a][plane_x]=0;//清除敵機
 break;
 }
 Map[a][plane_x]=3;
 }
 }
 }
 system("cls");
 }
 system("cls");
 printf("總分:%d",score);
 getch();
 return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • c++ STL常用遍歷算法

    c++ STL常用遍歷算法

    這篇文章主要介紹了c++ STL常用遍歷算法的實現(xiàn),幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2020-12-12
  • C語言中調(diào)用Swift函數(shù)實例詳解

    C語言中調(diào)用Swift函數(shù)實例詳解

    這篇文章主要介紹了C語言中調(diào)用Swift函數(shù)實例詳解的相關(guān)資料,實現(xiàn)該功能可以通過定義全局的指向Blocks的對象指針來實現(xiàn),需要的朋友可以參考下
    2017-07-07
  • C++中4種強制類型轉(zhuǎn)換的區(qū)別詳析

    C++中4種強制類型轉(zhuǎn)換的區(qū)別詳析

    這篇文章主要給大家介紹了關(guān)于C++中4種強制類型轉(zhuǎn)換區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C語言中二維數(shù)組作為函數(shù)參數(shù)來傳遞的三種方法

    C語言中二維數(shù)組作為函數(shù)參數(shù)來傳遞的三種方法

    這篇文章主要給大家介紹了關(guān)于C語言中二維數(shù)組作為函數(shù)參數(shù)來傳遞的三種方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用C語言有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • C++實現(xiàn)LeetCode(64.最小路徑和)

    C++實現(xiàn)LeetCode(64.最小路徑和)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(64.最小路徑和),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 詳解C/C++內(nèi)存區(qū)域劃分(簡而易懂)

    詳解C/C++內(nèi)存區(qū)域劃分(簡而易懂)

    C/C++中,內(nèi)存主要分為、堆、棧、全局/靜態(tài)存儲區(qū)和常量存儲區(qū)。本文重點給大家介紹C/C++內(nèi)存區(qū)域劃分的相關(guān)知識,需要的朋友參考下吧
    2021-06-06
  • C語言與C++內(nèi)存管理超詳細分析

    C語言與C++內(nèi)存管理超詳細分析

    C?語言內(nèi)存管理指對系統(tǒng)內(nèi)存的分配、創(chuàng)建、使用這一系列操作。在內(nèi)存管理中,由于是操作系統(tǒng)內(nèi)存,使用不當(dāng)會造成畢竟麻煩的結(jié)果。本文將從系統(tǒng)內(nèi)存的分配、創(chuàng)建出發(fā),并且使用例子來舉例說明內(nèi)存管理不當(dāng)會出現(xiàn)的情況及解決辦法
    2022-05-05
  • C++begin和end運算符的返回迭代器的類型如何判斷?

    C++begin和end運算符的返回迭代器的類型如何判斷?

    今天小編就為大家分享一篇關(guān)于C++begin和end運算符的返回迭代器的類型如何判斷?,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 深入HRESULT與Windows Error Codes的區(qū)別詳解

    深入HRESULT與Windows Error Codes的區(qū)別詳解

    本篇文章是對HRESULT與Windows Error Codes的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • STL中vector的使用你了解嗎

    STL中vector的使用你了解嗎

    這篇文章主要為大家詳細介紹了STL中vector的使用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論

保亭| 鄂伦春自治旗| 宣化县| 犍为县| 任丘市| 威远县| 隆昌县| 新乡县| 柳河县| 青岛市| 平塘县| 高青县| 岢岚县| 黑水县| 广水市| 长子县| 尼木县| 比如县| 睢宁县| 奎屯市| 隆回县| 金山区| 陇西县| 嫩江县| 河间市| 桂平市| 鸡泽县| 荔浦县| 西贡区| 河南省| 玉门市| 正镶白旗| 民勤县| 勃利县| 中宁县| 上虞市| 金堂县| 阿克| 巨野县| 凤山县| 龙陵县|