2024.1.25
今天学习的是简单的天天酷跑游戏运行时背景的设计与实现
首先,创建游戏的窗口大小,设定宽度和高度
a.需要让电脑读取内存中的图片,以便后边运行时可以拿到内存中的图片
我的文件放在了res文件夹下,命名格式为bg00x.png可以尝试不同的命名。将这一步操作放在初始化函数下,loadimage()本身是一个函数,可以在项目“属性->C/C++->SDL检查选择“否”,即可解决报错顺利运行。
其次,背景图片设置
a.图片放置,三层图片的安置涉及到图像坐标,刚开始时3张图像左上角的X坐标都为0,只是Y坐标有所不同
b.putimage函数时easyX的函数,在项目开始出引用头文件<graphics.h>即可使用,在此由于使用putimage函数运行时会导致图像之间存在黑框,不协调特此采用开源解决办法putimagePNG2为b站up主C语言编程开发视频,由Rock老师所作。
c.此处就三张图片,Y值就直接进行设置,在图片较多,要设置Y值的时候也可以采用数组进行存储
最后,进行背景的渲染实现
a.在使用3张图片做游戏背景时,需要考虑到在游戏中每张图片的运动速度是不一样的。从逻辑上说,距离人物越近的图片的移动速度应该更快,速度随着图片距离人物的距离递减。在此将人物的速度用一个一维数组进行处理,数组大小设置为3,bgSpeed,bgX为图片的X坐标数组,IMAGE是easyX的函数
b.图片静态下没有问题之后,进行动态设计,让图片进行移动
图片运动时是三张图片一起进行运动,用图片的X坐标减去图片的运行速度,此时继续更新bgX[i]的横坐标,当bgX[i]的坐标小于负的游戏框的宽度是,将bgX的坐标重置为0实现首尾相接的效果,如若没有首尾相接在跑完图像时会没有图像进行加载。背景出错
Finally
进行第一阶段的调试,查看代码错误,
a. 出现sprintf不安全错误,可以在.cpp属性下“高级”将符号设置为多文本的那个即可解决报错,正常运行。
b.要让游戏背景一直运行下去,设置死循环,使用while(1)最为方便或许还可以使用其他的循环函数换个死循环的方式进行运转
c.在将代码设置合适之后,运行代码时会出现背景图虽然在运行了,但是会在屏幕上出现闪屏,这是就得用双缓存语句 Begin Batch Draw(),End BatchDraw(),把两句语句放在图像设置函数前和图像运动函数前,再次运行时屏幕上就不会出现闪屏现象。
其中,Begin Batch Draw(),End Batch Draw()也是属于easyX下的函数,需要引用easyX的头文件才可调用,这两个函数也可以在图像进行融合时消除黑色的背景。
结果所示
第一次在黑色程序运行框中搞出彩色!!!