欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用C語言實現(xiàn)一個最簡單的飛機游戲

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

前言

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

目前的飛機還很簡單,大家不要著急,一步一步來,在后面會實現(xiàn)更復(fù)雜的飛機游戲效果。比如

  • 如何讓靶子移動起來?
  • 如何統(tǒng)計和顯示擊中得分?
  • 如何實現(xiàn)子彈散彈效果?

一、利用scanf控制飛機移動

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

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

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

二、getch控制飛機移動

scanf()函數(shù)要求每輸入一個字符按回車鍵后才能執(zhí)行,交互效果不好,因此第二步使用一個新的輸入函數(shù)getch()(#include<conio.h>),不需要回車就可以得到輸入的控制字符。另外,kbhit()函數(shù)在用戶有鍵盤輸入時返回1,否則返回 0;在沒有鍵盤輸入時 if(kbhit())下面的語句不會運行,從而避免出現(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");//輸出飛機上面的空行
        for(j=0;j<y;j++)
           printf(" ");//輸出飛機左邊的空格 
        printf("*");//輸出飛機 
        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");//輸出飛機上面的空行
        for(j=0;j<y;j++)
           printf(" ");//輸出飛機左邊的空格 
        printf("*");//輸出飛機 
        printf("\n");
        
            if(kbhit())  // 判斷是否有輸入
        {
            input = getch();  // 根據(jù)用戶的不同輸入來移動,不必輸入回車
            if (input == 'a')   
                y--;  // 位置左移
            if (input == 'd')
                y++;  // 位置右移
            if (input == 'w')
                x--;  // 位置上移
            if (input == 's')
                x++;  // 位置下移
        }
    }    
    return 0;
 } 
    }
    return 0;
 } 

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

四、發(fā)射激光

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

當isFire等于1時,將在飛機的正上方輸出激光豎線。

#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;
        } 
        //下面輸出一個復(fù)雜的飛機圖案
        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ù)用戶的不同輸入來移動,不必輸入回車
            if (input == 'a')   
                y--;  // 位置左移
            if (input == 'd')
                y++;  // 位置右移
            if (input == 'w')
                x--;  // 位置上移
            if (input == 's')
                x++;  // 位置下移
            if (input == ' ')
                isFire = 1;
        }
    }
    return 0;
 } 

五、打靶練習

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

isKilled 等于0顯示靶子;

isKilled 等于1時不再顯示靶子

#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; // 一個靶子,放在第一行,ny列上
    int isKilled = 0;
    
    while (1)
    {
        system("cls");   // 清屏函數(shù)
        
        if (!isKilled)  // 輸出靶子
        {
            for (j=0;j<ny;j++)
                printf(" ");
            printf("+\n");
        }
        
        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");
            }
            if (y+2==ny)  // +2是因為激光在飛機的正中間,距最左邊2個坐標
                isKilled = 1; // 擊中靶子
            isFire = 0;
        }
        
        // 下面輸出一個復(fù)雜的飛機圖案
        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ù)用戶的不同輸入來移動,不必輸入回車
            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語言實現(xiàn)一個最簡單的飛機游戲的文章就介紹到這了,更多相關(guān)C語言飛機游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)LeetCode(17.電話號碼的字母組合)

    C++實現(xiàn)LeetCode(17.電話號碼的字母組合)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(17.電話號碼的字母組合),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實現(xiàn)簡單推箱子小游戲

    C++實現(xiàn)簡單推箱子小游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單推箱子小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Qt圖形圖像開發(fā)之曲線圖表庫QChart編譯安裝詳細方法與使用實例

    Qt圖形圖像開發(fā)之曲線圖表庫QChart編譯安裝詳細方法與使用實例

    這篇文章主要介紹了Qt圖形圖像開發(fā)之曲線圖表庫QChart編譯安裝詳細方法與使用實例,需要的朋友可以參考下
    2020-03-03
  • QT中大部分部件如何使用舉例詳解

    QT中大部分部件如何使用舉例詳解

    QWidget類是所有用戶界面對象的基類,被稱為基礎(chǔ)窗口部件,下面這篇文章主要給大家介紹了關(guān)于QT中大部分部件如何使用的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • C++函數(shù)對象詳解附帶實例

    C++函數(shù)對象詳解附帶實例

    這篇文章主要介紹了C++函數(shù)對象詳解附帶實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C語言菜鳥基礎(chǔ)教程之Hello World

    C語言菜鳥基礎(chǔ)教程之Hello World

    C語言是一門通用計算機編程語言,應(yīng)用廣泛。C語言的設(shè)計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。
    2017-10-10
  • C語言實現(xiàn)貪吃蛇游戲演示

    C語言實現(xiàn)貪吃蛇游戲演示

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)貪吃蛇游戲演示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++實現(xiàn)LeetCode(97.交織相錯的字符串)

    C++實現(xiàn)LeetCode(97.交織相錯的字符串)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(97.交織相錯的字符串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C/C++ MD5算法的實現(xiàn)代碼

    C/C++ MD5算法的實現(xiàn)代碼

    下面就將網(wǎng)上有關(guān)MD5算法一些知識整理一下,方面自己查閱,需要的朋友可以參考下
    2017-07-07
  • 舉例講解C語言對歸并排序算法的基礎(chǔ)使用

    舉例講解C語言對歸并排序算法的基礎(chǔ)使用

    這篇文章主要介紹了C語言對歸并排序算法的使用,歸并排序算法的平均事件復(fù)雜度為(n\log n),需要的朋友可以參考下
    2016-05-05

最新評論