0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言实现《别碰白块》小游戏!全部代码+思路注释

C语言编程学习基地 来源:C语言编程学习基地 作者:童晶 2022-12-08 09:06 次阅读

今天我们将用C语言实现一个小球跳跃躲避方块的游戏。

就像闯关游戏一样,小球闯关类游戏是休闲游戏的=一种,玩家在游戏中需要控制各种不同的小球展开不同的挑战,尽情的闯过重重的关卡,努力的操作小球躲避障碍物以及机关,顺利的到达终点,玩法十分的简单,但是非常的考验玩家的敏捷力以及反应力。

要做出这个游戏,首先学习字符的知识,按空格键控制小球起跳;然后学习矩形的绘制,利用逻辑运算符实现小球和方块的碰撞判断;接着学习整除、取余、类型转换,利用随机数增加游戏的趣味性;最后实现得分的计算显示、解决小球在空中起跳的问题。

源码示例:

#include   
#include 
#include 
int main()
{
  float width,height,gravity; // 游戏画面大小、重力加速度
  float ball_x,ball_y,ball_vy,radius; // 小球圆心坐标、y方向速度、半径大小
  float rect_left_x,rect_top_y,rect_width,rect_height,rect_vx; // 方块障碍物的相关参数
  int score = 0; // 得分
  int isBallOnFloor = 1; // 小球是否在地面上,避免重复起跳


  width = 600;  // 游戏画面宽度
  height = 400; // 游戏画面高度
  gravity = 0.6;  // 重力加速度
  initgraph(width, height); // 新建一个画布


  radius = 20; // 小球半径  
  ball_x = width/4; // 小球x位置
  ball_y = height-radius;  // 小球y位置
  ball_vy = 0;  // 小球初始y速度为0


  rect_height = 100; // 方块高度
  rect_width = 20; // 方块宽度
  rect_left_x = width*3/4; // 方块左边x坐标
  rect_top_y = height - rect_height; // 方块顶部y坐标
  rect_vx = -3; // 方块x方向速度


  while(1) // 一直循环
  {    
    if (kbhit()) // 当按键时
    {
      char input = _getch(); // 获得输入字符
      if (input==' ' && isBallOnFloor==1) // 当按下空格键,并且小球在地面上时
      {
        ball_vy = -17; // 给小球一个向上的速度
        isBallOnFloor = 0; // 表示小球不在地面了,不能重复起跳
      }
    }


    ball_vy = ball_vy + gravity;  // 根据重力加速度更新小球y方向速度
    ball_y = ball_y + ball_vy;    // 根据小球y方向速度更新其y坐标
    if (ball_y >= height-radius)  // 如果小球落到地面上
    {
      ball_vy = 0;  // y速度为0
      ball_y = height-radius;  // 规范其y坐标,避免落到地面下
      isBallOnFloor = 1; // 表示小球在地面上
    }


    rect_left_x = rect_left_x + rect_vx; // 方块向左移
    if (rect_left_x <= 0) // 如果方块跑到最左边
    {
      rect_left_x = width; // 在最右边重新出现
      score = score + 1; // 得分+1
      rect_height = rand() % int(height/4) + height/4; // 设置随机高度
      rect_vx = rand()/float(RAND_MAX) *4 - 7; // 设置方块随机速度
    }
    // 如果小球碰到方块
    if ((rect_left_x <= ball_x + radius) 
      && (rect_left_x + rect_width >= ball_x - radius) 
      && (height - rect_height <= ball_y + radius) )
    {
      Sleep(50); // 慢动作效果
      score = 0; // 得分清零
    }


    cleardevice();  // 清空画面
    fillcircle(ball_x, ball_y, radius);  // 绘制小球
    // 画方块
    fillrectangle(rect_left_x, height - rect_height, rect_left_x + rect_width,height);
    TCHAR s[20]; // 定义字符串数组
    _stprintf(s, _T("%d"),  score); // 将score转换为字符串
    settextstyle(40, 0, _T("宋体")); // 设置文字大小、字体
    outtextxy(50, 30, s); // 输出得分文字
    Sleep(10);  // 暂停10毫秒
  }
  closegraph(); 
  return 0;
}

这一次主要讲解了字符、逻辑运算符、整除、取余、类型转换、随机数等语法知识。利用绘制圆、矩形的函数,实现了别碰方块的小游戏。

读者也可以参考本章的开发思路,尝试设计并分步骤实现flappy bird游戏(以后也会分享哦)

希望对大家有帮助!

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 游戏
    +关注

    关注

    2

    文章

    695

    浏览量

    26037
  • C语言
    +关注

    关注

    180

    文章

    7522

    浏览量

    127536
  • 源码
    +关注

    关注

    8

    文章

    571

    浏览量

    28574

原文标题:C语言实现《别碰白块》小游戏!全部代码+思路注释

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言实现:见缝插针游戏代码思路+源码分享

    见缝插圆我们昨天已经用C语言实现了,今天将实现一个见缝插针的游戏
    发表于 12-05 11:02 477次阅读

    30 C语言必学项目:C语言学的怎么样?来自己开发个别踩小游戏测测水平~

    游戏C语言编程语言
    车同轨,书同文,行同伦
    发布于 :2022年08月11日 04:17:59

    C++实现的经典小游戏代码

    C++实现的经典小游戏代码
    发表于 08-20 15:31

    自己做的“小游戏

    本帖最后由 kuailebu 于 2014-9-14 17:58 编辑 自学LabVIEW几周,而且最近经常玩“”的手机游戏,就用几天时间做一个LabVIEW版本的。因为
    发表于 08-30 18:32

    STM32+机智云WebSocket实现物联网游戏

    写好的机智云连接固件,网页编程也是机智云的WebSocket Demo。本人做的是在原有的核心系统上添加的物联网游戏功能。实现效果如
    发表于 07-16 14:30

    猜数字大小游戏研修实现

    `通过学习和努力,蛟龙腾飞团队成功在自己开发版上实现猜数字大小游戏。本游戏参考与引用了HonestQiao公开的代码。`
    发表于 12-16 18:07

    如何用C语言实现一款猜数字游戏

    如何用C语言实现一款猜数字游戏
    发表于 01-06 07:10

    C语言小游戏源码分享

    C语言小游戏源码24点火柴人俄罗斯等等等35个游戏源码网盘分享链接:https://pan.baidu.com/s/1Ez189jnaBELfsR10jy0dIQ提取码:xa7o
    发表于 04-12 17:11

    如何使用c语言实现LED流水灯

    单片机实验:使用c语言实现LED流水灯目的:实现一个简单的流水灯程序仿真软件:Portues编程软件:KeilPortues 原理图绘制:需要用到的模块:单片机:AT89C51电容
    发表于 11-30 07:52

    利用C语言来编写打地鼠小游戏

    C语言模拟打地鼠小游戏
    的头像 发表于 01-26 14:55 1.5w次阅读

    4个重要算法C语言实现代码

    4个重要算法C语言实现代码
    发表于 06-10 08:00 12次下载

    使用HTML5实现井字棋小游戏的算法和代码讲解

    本文档的主要内容详细介绍的是使用HTML5实现井字棋小游戏的算法和代码讲解。
    发表于 08-07 17:33 1次下载
    使用HTML5<b class='flag-5'>实现</b>井字棋<b class='flag-5'>小游戏</b>的算法和<b class='flag-5'>代码</b>讲解

    如何用C语言实现推箱子游戏项目

      这篇文章主要为大家详细介绍了 C语言实现——《推箱子项目》 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下! 本项目结合了分支,循环,数组的结合,并且对逻辑也是
    的头像 发表于 11-09 16:28 2342次阅读

    qt用C++写的2048小游戏代码

    qt用C++写的2048小游戏代码
    发表于 09-27 11:48 0次下载

    c语言怎么把代码全部注释

    要将C语言代码全部注释掉,即不让代码被编译和执行,可以使用注释语句来
    的头像 发表于 11-22 10:21 2165次阅读