C语言实现简单的飞机大战游戏

 更新时间:2022年05月16日 11:28:31   作者:辉小歌  
这篇文章主要为大家详细介绍了C语言实现简单的飞机大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现简单飞机大战游戏的具体代码,供大家参考,具体内容如下

一、项目描述和最终的成果展示

项目描述: 显示出一个飞机,并可以控制移动,发出激光,打靶练习。

效果展示:

二、输出一个飞机模型

先输出一个飞机模型。后面再进一步完成控制飞机的功能。

代码如下:

//输出飞机图案
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(void)
{
        int i,j;
        int x=10;
        int y=10;
        char input;

        //输出飞机上面的空行
        for(i=0;i<x;i++)
        {
            printf("\n");
        }

        //输出飞机左边的空格
        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;
}

效果图如下:

三、实现控制飞机移动的功能

用scanf()函数来实现控制飞机移动的功能

代码如下:

#include<stdio.h>
#include<stdlib.h>
//用scanf来完成飞机的移动
int main(void)
{
    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("  *\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;
}

效果图如下:

你会发现一个弊端 就是它会显示你输入了啥,这样是特别的不友好的。
所以我们要用 getch() 这个函数, 它是不会显示回显的。即,不会出现我们输入的是啥。
这样就很好了,达到了我们的目的。

用getch()函数来实现控制飞机移动的功能

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//用scanf来完成飞机的移动
int main(void)
{
    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("  *\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;
}

效果图如下:

四、添加发射激光功能

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//用getch来完成飞机的移动
int main(void)
{
    int i,j;
    int x=10;
    int y=10;
    char input;
    int isFire=0;//用来判断是否发射

    while(1)
    {
        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;
        }


        //输出飞机左边的空格
        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;
}

效果图如下:

五、添加靶子和分数统计功能

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include<time.h>
#include<conio.h>
//用getch来完成飞机的移动
int main(void)
{
    int i,j;
    int x=10;
    int y=10;
    char input;
    int isFire=0;//用来判断是否发射
    int score=10;

    int ny = 30;        //  靶子的位置
    int isKilled = 0; //判断是否击中
    int yanshi=0;    //  延时靶子的时间
    system("color 09");

    while(1)
    {
        if(yanshi<66)//延时 让靶子显示
        {
            yanshi++;
        }
        else
        {
            srand(time(0));
            ny=rand()%80+5;
            yanshi=0;
        }
        printf("分数:%d\n",score);
        if(!isKilled)//没有击中靶子,继续显示靶子
        {
            for(j=0;j<ny;j++)
            {
                printf(" ");
            }
            printf("▼\n");
        }
        else//说明击中靶子,刷新靶子
        {
            yanshi=66;
            isKilled=0;
        }

        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;
        }


        //输出飞机左边的空格
        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;//分数增加
        }
    }
    return 0;
}

效果图如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++实现LeetCode(647.回文子字符串)

    C++实现LeetCode(647.回文子字符串)

    这篇文章主要介绍了C++实现LeetCode(647.回文子字符串),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 利用C++实现最长公共子序列与最长公共子串

    利用C++实现最长公共子序列与最长公共子串

    这篇文章主要给大家介绍了如何利用C++实现最长公共子序列与最长公共子串,文章一开始就给大家简单的介绍了什么是子序列,子串应该比较好理解就不用多介绍了,人后通过算法及示例代码详细介绍了C++实现的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • 详解C语言中freopen()函数和fclose()函数的用法

    详解C语言中freopen()函数和fclose()函数的用法

    这篇文章主要介绍了详解C语言中freopen()函数和fclose()函数的用法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • C语言中#pragma once的作用

    C语言中#pragma once的作用

    这篇文章主要介绍了C语言中#pragma once的作用,pragma once 一般由编译器提供保证,更多相关内容在下面文章详细展开需要的小伙伴可以参考一下
    2022-05-05
  • 自己模拟写C++中的String类型实例讲解

    自己模拟写C++中的String类型实例讲解

    下面小编就为大家带来一篇自己模拟写C++中的String类型实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈

    在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈

    在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈,需要的朋友可以参考一下
    2013-02-02
  • C++超集C++/CLI模块的基本类型

    C++超集C++/CLI模块的基本类型

    这篇文章介绍了C++超集C++/CLI模块的基本类型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C语言实现简单计算器

    C语言实现简单计算器

    这篇文章主要为大家详细介绍了C语言实现简单计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • C语言指针的长度和类型深入分析

    C语言指针的长度和类型深入分析

    这篇文章主要介绍了C语言指针的长度和类型,针对常见的各个类型进行了相对详细的分析,需要的朋友可以参考下
    2014-09-09
  • 三种获取网页源码的方法(使用MFC/Socket实现)

    三种获取网页源码的方法(使用MFC/Socket实现)

    Windows下比较简单的获取网页源码的方法:使用MFC、使用MFC、Socket实现
    2013-12-12

最新评论