STM32学习笔记十一:WS2812制作像素游戏屏-飞行射击游戏(1)探索空间同步

本章开始,我们做一个稍复杂一点的游戏。并以此为样例,学习一个游戏开发相关技术。

这个游戏的系列笔记,可能会花不小的篇幅,尽可能涉及游戏开发的多个方面,欢迎大家收藏慢慢看。

先设想一下我们要做的游戏:

1、有两个玩家,分别操作自己的飞机。

2、飞机可以发射子弹。

3、随机出现敌方飞机且缓慢向下移动,最终移出屏幕。

4、敌机也可以发射子弹。

5、子弹命中时扣血量。血量为0时消失。

6、玩家可以拾取各种道具。

7、有移动的星空背景。

不是很复杂,作为初学足够了。

游戏中物体移动和屏幕刷新,通常有两种模式:

1、物体移动时,立即刷新屏幕。将物体从原有位置擦除,重绘该位置的背景,在新的位置绘制物体。此种方法对如何重绘原背景有很高的要求,毕竟不光是背景,那个地方可能还有其他的物体。

2、物体移动时,并不立即刷新屏幕,而是定时绘制所有物体到缓冲区,然会再从缓冲区刷新到屏幕。此种方法必须开辟显示缓冲区,对内存有要求。同时,显示所有物体对性能也有一定要求。关键看静态的物体多不多,如果有很多静态物体,可以开辟多个缓冲区。

本游戏中,我们采用方式二。因为所有物体都在动,每帧都要绘制所有物体。且屏幕只有64*32,缓冲区消耗很小。

我们知道,游戏中要让物体出现在指定的位置很容易,但是加上时间维度,让其在任何时间都出现在他应该出现的位置,特别是很多物体一起运动的时候,就需要点东西加持了。这其中可能会涉及很多需要同步的地方。比如说时间同步,空间同步,状态同步,帧同步等等。举个例子:

物体A每秒应该移动10个像素点,那么:

1、屏幕刷新时间是不确定的,我们不应该强制要求屏幕每秒刷新多少次。

2、执行物体移动的操作——即修改XY值的方法——不应该强制要求执行的时刻,也就是说,你不知道每秒钟XY值修改了多少次。

既然我们有很多的物体都在移动,那么相同速度的物体,应该

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vvind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值