返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现像素鸟游戏
  • 785
分享到

C语言实现像素鸟游戏

2024-04-02 19:04:59 785人浏览 八月长安
摘要

本文实例为大家分享了C语言实现像素鸟游戏的具体代码,供大家参考,具体内容如下 在进入更复杂的学习之前,我们最后实现一个小游戏——像素鸟。 下落的小鸟 首先我们

本文实例为大家分享了C语言实现像素鸟游戏的具体代码,供大家参考,具体内容如下

在进入更复杂的学习之前,我们最后实现一个小游戏——像素鸟。

下落的小鸟

首先我们写好游戏代码框架并实现小鸟下落和上升(按空格)的功能:

#include <stdio.h>
#include <stdlib.h>
#include <coNIO.h>
#include <cwindow.h>

//全局变量
int high,width;    //画面尺寸
int bird_x,bird_y;    //小鸟坐标
int barl_y,barl_xTop,barl_xDowm;    //障碍物

void Gotoxy(int x, int y)    //移动光标便于清屏重画
{
    HANDLE handle = GetStdHandle(STD_UOTPUT_HANDLE);
    CROOD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle, pos);
}

void startup()        //数据初始化
{
    high = 15;
    width = 20;
    bird_x = 0;
    bird_y = width/3;
}

void show()        //显示画面
{
    gotoxy(0,0);
    int i,j;

    for(i=0; i<high; i++)
    {
        for(j=0; j<width; j++)
        {
            if((i==bird_x)&&(j==bird_y))
                printf("@");
            else
                printf(" ");
        }
        print("\n");    //每经一次行循环就换行
    }
}

void updateWithoutInput()
{
    bird_x ++;
    sleep(150);
}

void updateWithInput()
{
    char input;
    if(kbhit())    //判断是否有输入
    {
        input = getch();
        if(input==' ')
            bird_x = bird_x - 2;
    }
}

int main()
{
    startup();
    while(1)
    {
        show();
        updateWithoutInput();
        updateWithInput();
    }
    return 0;
}

显示障碍物

我们在上一步的基础上完成障碍物的绘制,使用全局变量barl_y, barl_xTop, barl_xDown描述相关量,如图:

加入以下代码片段:

数据初始化

barl_y = width/2;
barl_xDown = high/2;
barl_xTop = high/3;

输出循环

...
else if ((j==barl_y)&&((i>barl_xDown)||(i<barl_xTop)))
    printf("*");
...

障碍物移动(在updateWithoutInput里)

barl_y --;

判定碰撞

接下来判定当障碍物 y 坐标到达小鸟位置时是否有碰撞发生,若有,则游戏失败,反之则得分加一。

加入如下代码段:

int score; //全局变量,得分

void startup()
{
    ...
    score = 0;    
    ...
}

void updateWithoutInput()
{
    ...
    if(bird_y == barl_y)
    {
        if((bird_x>=barl_xTop)&&(bird_x<=barl_xDown))
            score ++;
        else 
        {
            printf("GG\n");
            system("pause");
            exit(0);
        }
    }
    ...
}

循环障碍物

到这里我们就要是障碍物循环出现,因为不管怎么样也不应该只有一个障碍物吧!同时,在此还将利用 rand() 随机障碍物空隙坐标。

加入以下代码段:

if(barl_y <= 0)
{
    barl_y = width;
    int temp =rand() % int(high * 0.8);    //使用临时变量储存障碍物坐标信息
    barl_xDown = temp + high/10;
    barl_xTop = temp - high/10;
}

这里对临时变量加减高度除以十的操作是为了防止生成新障碍物的空隙在太过边缘的位置。

小结

完整代码如下(我是打字机器):

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <cwindow.h>

//全局变量
int high,width;    //画面尺寸
int bird_x,bird_y;    //小鸟坐标
int barl_y,barl_xTop,barl_xDowm;    //障碍物
int score;         //得分

void gotoxy(int x, int y)    //移动光标便于清屏重画
{
    HANDLE handle = GetStdHandle(STD_UOTPUT_HANDLE);
    CROOD pos;
    pos.X = x;
    pos.Y = y;
    SetConsoleCursorPosition(handle, pos);
}

void startup()        //数据初始化
{
    high = 15;
    width = 20;
    score = 0;    
    bird_x = 0;
    bird_y = width/3;
    barl_y = width/2;
    barl_xDown = high/2;
    barl_xTop = high/3;
}

void show()        //显示画面
{
    gotoxy(0,0);
    int i,j;

    for(i=0; i<high; i++)
    {
        for(j=0; j<width; j++)
        {
            if((i==bird_x)&&(j==bird_y))
                printf("@");
            else if ((j==barl_y)&&((i>barl_xDown)||(i<barl_xTop)))
                printf("*");
            else
                printf(" ");
        }
        print("\n");    //每经一次行循环就换行
    }
}

void updateWithoutInput()
{
    bird_x ++;
    barl_y --;
    if(bird_y == barl_y)
    {
        if((bird_x>=barl_xTop)&&(bird_x<=barl_xDown))
            score ++;
        else 
        {
            printf("GG\n");
            system("pause");
            exit(0);
        }
    }
    if(barl_y <= 0)
    {
        barl_y = width;
        int temp =rand() % int(high * 0.8);    //使用临时变量储存障碍物坐标信息
        barl_xDown = temp + high/10;
        barl_xTop = temp - high/10;
    }
    sleep(150);
}

void updateWithInput()
{
    char input;
    if(kbhit())    //判断是否有输入
    {
        input = getch();
        if(input==' ')
            bird_x = bird_x - 2;
    }
}

int main()
{
    startup();
    while(1)
    {
        show();
        updateWithoutInput();
        updateWithInput();
    }
    return 0;
}

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

--结束END--

本文标题: C语言实现像素鸟游戏

本文链接: https://lsjlt.com/news/148675.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言实现像素鸟游戏
    本文实例为大家分享了C语言实现像素鸟游戏的具体代码,供大家参考,具体内容如下 在进入更复杂的学习之前,我们最后实现一个小游戏——像素鸟。 下落的小鸟 首先我们...
    99+
    2024-04-02
  • JavaScript实现像素鸟小游戏的详细流程
    目录《像素鸟》游戏简单介绍1.功能结构及流程2.游戏实现效果展示3.实现思路代码展示介绍css样式js代码随机背景移动玩家控制像素鸟生成随机柱子积分增加总结《像素鸟》游戏简单介绍 游...
    99+
    2024-04-02
  • 用C语言实现2048游戏
    本文实例为大家分享了用C语言实现2048游戏的具体代码,供大家参考,具体内容如下 我遇到的几个问题: 问题1:如何显示? system("clear");//清屏 每次发生变化就清屏...
    99+
    2024-04-02
  • C语言实现数独游戏
    本文实例为大家分享了C语言实现数独游戏的具体代码,供大家参考,具体内容如下 目标 写一个数独游戏,有以下功能: 1:能随机产生题目并给出答案。 2:求解输入的题目并输出答案。 实现说...
    99+
    2024-04-02
  • C语言实现空战游戏
    本文实例为大家分享了C语言实现空战游戏的具体代码,供大家参考,具体内容如下 一、项目描述和成果展示 项目描述:   在以往的程序中进行了改进。例如:   可以发射...
    99+
    2024-04-02
  • C语言实现井字棋游戏
    本文实例为大家分享了C语言实现井字棋游戏的具体代码,供大家参考,具体内容如下 首先,我们需要一个大体的思路,先进行宏观规划,再对细节进行实现。 比如: 1、首先需要一个菜单面板作以修...
    99+
    2024-04-02
  • 用C语言实现扫雷游戏
    用C语言实现扫雷游戏,因为代码会比较多,所以采用多文件的方式,使代码看起来更好。 一.main.c 在主调函数中首先要提供一个给用户选择的界面,在这里我们假定选择1为开始游戏,0为退...
    99+
    2024-04-02
  • C语言实现三子棋游戏
    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 game.h 设置头文件 #define ROW 3 #define COL 3 #include&...
    99+
    2024-04-02
  • C语言实现数独小游戏
    本文实例为大家分享了C语言实现数独小游戏的具体代码,供大家参考,具体内容如下 输入包含9x9的已知数字,空位用0补齐,中间用空格隔开。(输入数独题目确保正确)输出为输入数独题目的解。...
    99+
    2024-04-02
  • C语言实现打砖块游戏
    本文实例为大家分享了C语言实现打砖块游戏的具体代码,供大家参考,具体内容如下 代码: #include<stdio.h> #include<stdlib.h>...
    99+
    2024-04-02
  • C语言实现飞机游戏(1)
    本文实例为大家分享了C语言实现飞机游戏的具体代码,供大家参考,具体内容如下 本节我们将在上一节 弹跳小球 实现基础上完成简单的飞机游戏。 scanf 控制飞机移动 我们可以使用 sc...
    99+
    2024-04-02
  • C语言实现飞机游戏(2)
    本文实例为大家分享了C语言实现飞机游戏的具体实现代码,供大家参考,具体内容如下 本节我们将在上一节的基础上对飞机游戏进行改造完善。 基本框架 从本节起,为了避免把所有代码都放进mai...
    99+
    2024-04-02
  • 用C语言实现排雷游戏
    目录设计简单的游戏界面菜单排雷过程相应的代码一级目录排雷游戏的缺陷与不足一级目录改进总结设计简单的游戏界面菜单 输入数字1,进入游戏; 输入数字0,退出游戏;输入其他数字,将显示...
    99+
    2024-04-02
  • 基于C语言实现2048游戏
    本文实例为大家分享了C语言实现2048游戏的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h>...
    99+
    2024-04-02
  • C语言实现井字棋小游戏
    C语言实现简单的“井字棋游戏”,供大家参考,具体内容如下 总体构造: 1.游戏菜单的逻辑实现 2.游戏本体的代码实现 part 1:游戏菜单的整体逻辑 ①简单的通过一个输入0和1的s...
    99+
    2024-04-02
  • 用C语言实现五子棋游戏
    C语言写五子棋,使用多文件形式,使用代码看起来更好看;在这里我实现的功能是双人博弈,如果要实现人机对战,那么代码就会很复杂; 一.main.c 在主调函数中首先要提供一个给用户选择的...
    99+
    2024-04-02
  • 用C语言实现扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 1. 规则 随便点一个格子,会有一块,上面的数字就代表数字周围八个格子会有几个雷,是1他周围就只有1个雷...
    99+
    2024-04-02
  • C语言递归实现扫雷游戏
    前言 首先要实现扫雷原理上同三子棋,都是通过一个二维数组来实现游戏主题功能那么这里有几个值得注意的点 1、初级扫雷我们知道是九乘九数组实现,那么在这里我们创建的是11乘11的数组,目...
    99+
    2024-04-02
  • C语言实现扫雷经典游戏
    C语言实现扫雷游戏,供大家参考,具体内容如下 实现扫雷游戏 与三子棋游戏类似,为了便于后期对于代码的阅读、理解与地图大小和地雷的数量变更,先用#define定义一个标识符表示一个常量...
    99+
    2024-04-02
  • 用C语言实现三子棋游戏
    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 初始工作,通过#define 定义一个标识符来表示一个常量(棋盘的横纵坐标) (因为在代码的编写中,会有...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作