利用C语言实现一个最简单的飞机游戏

目录
  • 前言
  • 一、利用scanf控制飞机移动
  • 二、getch控制飞机移动
  • 三、显示复杂的飞机图案
  • 四、发射激光
  • 五、打靶练习

前言

在前面弹跳小球的基础上实现一个简单的飞机游戏,主要包括飞机的显示、控制移动、显示复杂图案、发射激光、打靶练习等功能。

目前的飞机还很简单,大家不要着急,一步一步来,在后面会实现更复杂的飞机游戏效果。比如

  • 如何让靶子移动起来?
  • 如何统计和显示击中得分?
  • 如何实现子弹散弹效果?

一、利用scanf控制飞机移动

第一步利用scanf输入不同的字符,按a、s、d、w键后改变坐标2、y的值,从而控制飞机*字符上下左右移动,如图

最基础的代码如下

#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()函数要求每输入一个字符按回车键后才能执行,交互效果不好,因此第二步使用一个新的输入函数getch()(#include<conio.h>),不需要回车就可以得到输入的控制字符。另外,kbhit()函数在用户有键盘输入时返回1,否则返回 0;在没有键盘输入时 if(kbhit())下面的语句不会运行,从而避免出现用户不输入,游戏就暂停的情况。

#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();  // 根据用户的不同输入来移动,不必输入回车
            if (input == 'a')
                y--;  // 位置左移
            if (input == 'd')
                y++;  // 位置右移
            if (input == 'w')
                x--;  // 位置上移
            if (input == 's')
                x++;  // 位置下移
        }
    }
    return 0;
 }
    }
    return 0;
 } 

三、显示复杂的飞机图案

四、发射激光

按空格键后让飞机发射激光子弹,即在飞机上方显示一列竖线'|'。第四步定义变量isFire,用来记录飞机是否处于发射子弹的状态。

当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;
        }
        //下面输出一个复杂的飞机图案
        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();  // 根据用户的不同输入来移动,不必输入回车
            if (input == 'a')
                y--;  // 位置左移
            if (input == 'd')
                y++;  // 位置右移
            if (input == 'w')
                x--;  // 位置上移
            if (input == 's')
                x++;  // 位置下移
            if (input == ' ')
                isFire = 1;
        }
    }
    return 0;
 } 

五、打靶练习

第五步在第一行通过定义一个变量ny,增加一个靶子‘十‘,控制飞机发射激光击中它,变量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");   // 清屏函数

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

        // 下面输出一个复杂的飞机图案
        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();  // 根据用户的不同输入来移动,不必输入回车
            if (input == 'a')
                y--;  // 位置左移
            if (input == 'd')
                y++;  // 位置右移
            if (input == 'w')
                x--;  // 位置上移
            if (input == 's')
                x++;  // 位置下移
            if (input == ' ')
                isFire = 1;
        }
    }
    return 0;
}

到此这篇关于利用C语言实现一个最简单的飞机游戏的文章就介绍到这了,更多相关C语言飞机游戏内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言实现飞机游戏(2)

    本文实例为大家分享了C语言实现飞机游戏的具体实现代码,供大家参考,具体内容如下 本节我们将在上一节的基础上对飞机游戏进行改造完善. 基本框架 从本节起,为了避免把所有代码都放进main函数而使得代码看起来臃肿,我们将通过以下基本框架来实现游戏内容. //全局变量定义 int main(){     startup(); //游戏初始化     while(1) //游戏循环体     {         show(); //显示界面         updateWithoutInput(); /

  • C语言实现飞机游戏(1)

    本文实例为大家分享了C语言实现飞机游戏的具体代码,供大家参考,具体内容如下 本节我们将在上一节 弹跳小球 实现基础上完成简单的飞机游戏. scanf 控制飞机移动 我们可以使用 scanf 函数来检测输入,分别使用 a , s , d , w .来控制 x , y 坐标来实现飞机移动. #include <stdio.h> #include <stdlib.h> int main(){     int i,j;     int x = 5;     int y = 10;     

  • C语言实现飞机游戏(豪华版)的示例代码

    目录 前言 一.飞机显示与控制 二.发射子弹 三.击中敌机 四.多台敌机 五.发射散弹 前言 这是飞机游戏的第三版,我们已经实现了基础版和进阶版的飞机游戏  ,但是存在的问题很明显:已经发射出去的子弹会随着飞机位置的实时改变而改变,并且不能实现连发.如果第一次看此文章,可能有部分代码(例如基本游戏框架,清屏功能,键盘控制,数据处理)不了解其功能,建议看看之前写的博客用c实现最简单的飞机游戏和用c实现进阶版飞机游戏 应用数组,可以更方便地记录复杂的数据,实现更复杂的显示.逻辑判断与控制.本篇文章利

  • C语言实现飞机游戏(进阶版)的示例代码

    目录 前言 一.代码重构 二.新式子弹代替激光 三.优化敌方战机 四.增加积分模块 五.更好的清屏功能 前言 没有学习函数,以上功能都在main()中实现是有点痛苦的.在学了函数之后会模块化重构相应的游戏,大家经历过上面的痛苦才能真正理解函数的好处.如果只是被动地学习语法知识,做些简单的算法题,是很难体会到函数封装的重要性的. 我们前面制作的用c语言实现一个最简单的飞机游戏但存在如下缺陷: 可能会遇到子弹运动时无法输入 键盘控制比较卡 不按键时敌人不会自动移动等问题,且敌人只出现一次 屏幕图标闪

  • C语言实现打飞机游戏

    本文实例为大家分享了C语言实现打飞机游戏的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #define U 1 #define D 2 #define L 3 #define R 4 typedef struct node //己方飞机的节点 { int x; int y; struct node *next; }node

  • C语言实践设计开发飞机游戏

    目录 一.前言 二.从设计初始菜单界面开始 三.游戏操作指南——guide函数 四.游戏的主体gamebody() ①简化通用的游戏框架 ②头文件一览 ③清屏函数的实现 ④光标隐藏函数 ⑤Initgame函数 ⑥show函数的实现 ⑦与用户输入有关的更新- updateWithinput ⑧与用户输入无关的更新-updateWithoutinput ⑨组合而成的gamebody函数 ⑩不足与展望 一.前言 [设计难度 : ★☆☆☆☆ [参考书籍:<C语言课程设计与游戏开发实践教程> [主要涉及

  • 利用C语言实现一个最简单的飞机游戏

    目录 前言 一.利用scanf控制飞机移动 二.getch控制飞机移动 三.显示复杂的飞机图案 四.发射激光 五.打靶练习 前言 在前面弹跳小球的基础上实现一个简单的飞机游戏,主要包括飞机的显示.控制移动.显示复杂图案.发射激光.打靶练习等功能. 目前的飞机还很简单,大家不要着急,一步一步来,在后面会实现更复杂的飞机游戏效果.比如 如何让靶子移动起来? 如何统计和显示击中得分? 如何实现子弹散弹效果? 一.利用scanf控制飞机移动 第一步利用scanf输入不同的字符,按a.s.d.w键后改变坐

  • 利用 Go 语言编写一个简单的 WebSocket 推送服务

    本文中代码可以在 github.com/alfred-zhong/wserver获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息都是通过短信,微信和 App 推送给用户的,现在要让登录用户在网页端也能实时接收到报警推送. 依稀记得以前工作的时候遇到过类似的需求.因为以前的浏览器标准比较陈旧,并且那时用 Java 较多,所以那时候解决这个问题就用了 Comet4J.具体的原理就是长轮询,长链接.但现在毕竟 html5 流行开来了,IE 都被 Edge 接替了,再用以前这种技术就显得过

  • 利用C语言如何实现一些简单图形的打印

    1#define_CRT_SECURE_NO_WARNINGS 1 因为笔者采用的是VS的编译环境所以有了上面的这一句话 我们都知道平面图形是由一条条线段构成,所以我们就先实现线段的打印 //打印自定义长度的线段 #include<stdio.h> int main() { int i = 0; int n; while (~scanf("%d", &n)) { for (i = 0; i < n; i++) printf("* "); p

  • go语言实现一个最简单的http文件服务器实例

    本文实例讲述了go语言实现一个最简单的http文件服务器的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "net/http" ) func main() {     http.Handle("/", http.FileServer(http.Dir("./")))     http.ListenAndServe(":8123", nil) } 希望本文

  • 利用Python写了一个水果忍者小游戏

    目录 前言: 一.需要导入的包 二.窗口界面设置 三.随机生成水果位置 四.绘制字体 五.玩家生命的提示 六.游戏开始与结束的画面 七.游戏主循环 最后 前言: 水果忍者到家都玩过吧,但是Python写的水果忍者你肯定没有玩过.今天就给你表演一个新的,用Python写一个水果忍者.水果忍者的玩法很简单,尽可能的切开抛出的水果就行. 今天就用python简单的模拟一下这个游戏.在这个简单的项目中,我们用鼠标选择水果来切割,同时炸弹也会隐藏在水果中,如果切开了三次炸弹,玩家就会失败. 一.需要导入的

  • 基于Java制作一个好玩的打飞机游戏

    目录 1.效果图 2.项目整体构造 3.主类代码展示 4.飞机类代码展示 5.炮弹类代码展示 6.爆炸类代码展示 1.效果图 2.项目整体构造 3.主类代码展示 public class MyGameFrame  extends  Frame {          Image   planeImg  = GameUtil.getImage("images/plane.png");     Image   bg  = GameUtil.getImage("images/bg.j

  • 利用Go语言快速实现一个极简任务调度系统

    目录 引子 思路 实战 交互界面 定时任务 任务执行 代码效果 总结 引子 任务调度(Task Scheduling)是很多软件系统中的重要组成部分,字面上的意思是按照一定要求分配运行一些通常时间较长的脚本或程序.在爬虫管理平台 Crawlab 中,任务调度是其中的核心模块,相信不少朋友会好奇如何编写一个任务调度系统.本篇文章会教读者用 Go 语言编写一个非常简单的任务调度系统. 思路 我们首先理清一下思路,开发最小化任务调度器需要什么. 交互界面(API) 定时任务(Cron) 任务执行(Ex

随机推荐