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

利用C語(yǔ)言實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的飛機(jī)游戲

 更新時(shí)間:2022年10月10日 11:47:51   作者:暢游星辰大海  
在前面彈跳小球?的基礎(chǔ)上實(shí)現(xiàn)一個(gè)簡(jiǎn)單的飛機(jī)游戲,主要包括飛機(jī)的顯示、控制移動(dòng)、顯示復(fù)雜圖案、發(fā)射激光、打靶練習(xí)等功能,感興趣的可以嘗試一下

前言

在前面彈跳小球的基礎(chǔ)上實(shí)現(xiàn)一個(gè)簡(jiǎn)單的飛機(jī)游戲,主要包括飛機(jī)的顯示、控制移動(dòng)、顯示復(fù)雜圖案、發(fā)射激光、打靶練習(xí)等功能。

目前的飛機(jī)還很簡(jiǎn)單,大家不要著急,一步一步來(lái),在后面會(huì)實(shí)現(xiàn)更復(fù)雜的飛機(jī)游戲效果。比如

  • 如何讓靶子移動(dòng)起來(lái)?
  • 如何統(tǒng)計(jì)和顯示擊中得分?
  • 如何實(shí)現(xiàn)子彈散彈效果?

一、利用scanf控制飛機(jī)移動(dòng)

第一步利用scanf輸入不同的字符,按a、s、d、w鍵后改變坐標(biāo)2、y的值,從而控制飛機(jī)*字符上下左右移動(dòng),如圖

最基礎(chǔ)的代碼如下

#include<stdio.h>
#include<stdlib.h>
int main()
{
    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("*");//輸出飛機(jī) 
        printf("\n");
        
        scanf("%c",&input);
        if(input=='a');
           y--;
        if(input=='d');
           y++;
        if(input=='w');
           x--;
        if(input=='s');
           x++;
    }
    return 0;
 } 

二、getch控制飛機(jī)移動(dòng)

scanf()函數(shù)要求每輸入一個(gè)字符按回車鍵后才能執(zhí)行,交互效果不好,因此第二步使用一個(gè)新的輸入函數(shù)getch()(#include<conio.h>),不需要回車就可以得到輸入的控制字符。另外,kbhit()函數(shù)在用戶有鍵盤輸入時(shí)返回1,否則返回 0;在沒(méi)有鍵盤輸入時(shí) if(kbhit())下面的語(yǔ)句不會(huì)運(yùn)行,從而避免出現(xiàn)用戶不輸入,游戲就暫停的情況。

#include<stdio.h>
#include<stdlib.h>
#include<conio.h> 
int main()
{
    int i,j;
    int x=5;
    int y=10;
    char input;
    
    while(1)
    {
        system("cls");
        
        for(i=0;i<x;i++)
           printf("\n");//輸出飛機(jī)上面的空行
        for(j=0;j<y;j++)
           printf(" ");//輸出飛機(jī)左邊的空格 
        printf("*");//輸出飛機(jī) 
        printf("\n");
        
        #include<stdio.h>
#include<stdlib.h>
#include<conio.h> 
int main()
{
    int i,j;
    int x=5;
    int y=10;
    char input;
    
    while(1)
    {
        system("cls");
        
        for(i=0;i<x;i++)
           printf("\n");//輸出飛機(jī)上面的空行
        for(j=0;j<y;j++)
           printf(" ");//輸出飛機(jī)左邊的空格 
        printf("*");//輸出飛機(jī) 
        printf("\n");
        
            if(kbhit())  // 判斷是否有輸入
        {
            input = getch();  // 根據(jù)用戶的不同輸入來(lái)移動(dòng),不必輸入回車
            if (input == 'a')   
                y--;  // 位置左移
            if (input == 'd')
                y++;  // 位置右移
            if (input == 'w')
                x--;  // 位置上移
            if (input == 's')
                x++;  // 位置下移
        }
    }    
    return 0;
 } 
    }
    return 0;
 } 

三、顯示復(fù)雜的飛機(jī)圖案

四、發(fā)射激光

按空格鍵后讓飛機(jī)發(fā)射激光子彈,即在飛機(jī)上方顯示一列豎線'|'。第四步定義變量isFire,用來(lái)記錄飛機(jī)是否處于發(fā)射子彈的狀態(tài)。

當(dāng)isFire等于1時(shí),將在飛機(jī)的正上方輸出激光豎線。

#include<stdio.h>
#include<stdlib.h>
#include<conio.h> 
int main()
{
    int i,j;
    int x=5;
    int y=10;
    char input;
    int isFire;
    
    while(1)
    {
        system("cls");
        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;
        } 
        //下面輸出一個(gè)復(fù)雜的飛機(jī)圖案
        for(j=0;j<y;j++)
           printf(" ");// 輸出飛機(jī)上面的空行  
        printf("  *\n");//頭
        for(j=0;j<y;j++)
           printf(" ");//頭下一行左邊的空格 
        printf("*****\n");//身子 
        for(j=0;j<y;j++)
           printf(" ");
        printf(" * * \n"); 
            
        
        if(kbhit())  // 判斷是否有輸入
        {
            input = getch();  // 根據(jù)用戶的不同輸入來(lái)移動(dòng),不必輸入回車
            if (input == 'a')   
                y--;  // 位置左移
            if (input == 'd')
                y++;  // 位置右移
            if (input == 'w')
                x--;  // 位置上移
            if (input == 's')
                x++;  // 位置下移
            if (input == ' ')
                isFire = 1;
        }
    }
    return 0;
 } 

五、打靶練習(xí)

第五步在第一行通過(guò)定義一個(gè)變量ny,增加一個(gè)靶子‘十‘,控制飛機(jī)發(fā)射激光擊中它,變量isKilled 用來(lái)存儲(chǔ)是否被擊。

isKilled 等于0顯示靶子;

isKilled 等于1時(shí)不再顯示靶子

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
    int i,j;
    int x = 5; 
    int y = 10;
    char input;
    int isFire = 0;
    
    int ny = 5; // 一個(gè)靶子,放在第一行,ny列上
    int isKilled = 0;
    
    while (1)
    {
        system("cls");   // 清屏函數(shù)
        
        if (!isKilled)  // 輸出靶子
        {
            for (j=0;j<ny;j++)
                printf(" ");
            printf("+\n");
        }
        
        if (isFire==0) // 輸出飛機(jī)上面的空行
        {
            for(i=0;i<x;i++)
                printf("\n");
        }
        else   // 輸出飛機(jī)上面的激光豎線
        {
            for(i=0;i<x;i++)
            {
                for (j=0;j<y;j++)
                    printf(" ");
                printf("  |\n");
            }
            if (y+2==ny)  // +2是因?yàn)榧す庠陲w機(jī)的正中間,距最左邊2個(gè)坐標(biāo)
                isKilled = 1; // 擊中靶子
            isFire = 0;
        }
        
        // 下面輸出一個(gè)復(fù)雜的飛機(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");
        
        
        if(kbhit())  // 判斷是否有輸入
        {
            input = getch();  // 根據(jù)用戶的不同輸入來(lái)移動(dòng),不必輸入回車
            if (input == 'a')   
                y--;  // 位置左移
            if (input == 'd')
                y++;  // 位置右移
            if (input == 'w')
                x--;  // 位置上移
            if (input == 's')
                x++;  // 位置下移
            if (input == ' ')
                isFire = 1;
        }
    }    
    return 0;
}

到此這篇關(guān)于利用C語(yǔ)言實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的飛機(jī)游戲的文章就介紹到這了,更多相關(guān)C語(yǔ)言飛機(jī)游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中的Primer拷貝控制和資源管理詳解

    C++中的Primer拷貝控制和資源管理詳解

    這篇文章主要介紹了C++中的Primer拷貝控制和資源管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C++多重繼承與虛繼承分析

    C++多重繼承與虛繼承分析

    這篇文章主要介紹了C++多重繼承與虛繼承分析,是面向?qū)ο蟪绦蛟O(shè)計(jì)非常重要的知識(shí)點(diǎn),需要的朋友可以參考下
    2014-08-08
  • C++控制結(jié)構(gòu)詳情

    C++控制結(jié)構(gòu)詳情

    這篇文章主要介紹了C++控制結(jié)構(gòu)詳情,C++的控制結(jié)構(gòu)和其它編程語(yǔ)言類似包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),更多相關(guān)資料需要的小伙伴可以參考下面文章內(nèi)容
    2022-03-03
  • C++實(shí)踐數(shù)組作數(shù)據(jù)成員的參考

    C++實(shí)踐數(shù)組作數(shù)據(jù)成員的參考

    今天小編就為大家分享一篇關(guān)于C++實(shí)踐數(shù)組作數(shù)據(jù)成員的參考,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • 詳解C語(yǔ)言數(shù)組越界及其避免方法

    詳解C語(yǔ)言數(shù)組越界及其避免方法

    這篇文章主要介紹了詳解C語(yǔ)言數(shù)組越界及其避免方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Qt自定義控件實(shí)現(xiàn)線條型加載條

    Qt自定義控件實(shí)現(xiàn)線條型加載條

    這篇文章主要為大家詳細(xì)介紹了Qt自定義控件實(shí)現(xiàn)線條型加載條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C語(yǔ)言中冒泡排序算法詳解

    C語(yǔ)言中冒泡排序算法詳解

    大家好,本篇文章主要講的是C語(yǔ)言中冒泡排序算法詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • 一文詳解C語(yǔ)言中的switch語(yǔ)句和while循環(huán)

    一文詳解C語(yǔ)言中的switch語(yǔ)句和while循環(huán)

    這篇文章主要給大家詳細(xì)介紹了C語(yǔ)言中的switch語(yǔ)句和while循環(huán),文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • C++ 中的 mutable關(guān)鍵字作用與使用場(chǎng)景分析(最新推薦)

    C++ 中的 mutable關(guān)鍵字作用與使用場(chǎng)景分析(最新推薦)

    C++中的mutable關(guān)鍵字允許在常量成員函數(shù)中修改特定成員變量,主要用于緩存機(jī)制、延遲計(jì)算和多線程同步等場(chǎng)景,它在設(shè)計(jì)中提供靈活性,但使用時(shí)需謹(jǐn)慎,本文介紹C++ 中的 mutable關(guān)鍵字作用與使用場(chǎng)景分析,感興趣的朋友一起看看吧
    2025-02-02
  • C語(yǔ)言中改變目錄的相關(guān)操作函數(shù)詳解

    C語(yǔ)言中改變目錄的相關(guān)操作函數(shù)詳解

    這篇文章主要介紹了C語(yǔ)言中改變目錄的相關(guān)操作函數(shù)詳解,分別是fchdir()函數(shù)和rewinddir()函數(shù)的使用方法,需要的朋友可以參考下
    2015-09-09

最新評(píng)論

大城县| 泊头市| 南溪县| 新宁县| 安庆市| 洪雅县| 泽普县| 吉安县| 临澧县| 陇川县| 萨迦县| 海林市| 绥芬河市| 湟源县| 蕲春县| 沂水县| 青龙| 靖江市| 铁力市| 阳高县| 阳原县| 巴里| 宜黄县| 新昌县| 唐海县| 台江县| 定兴县| 色达县| 六安市| 招远市| 涿州市| 区。| 奇台县| 中西区| 德庆县| 文昌市| 莱阳市| 玉树县| 延安市| 临桂县| 石台县|