显示游戏动画什么意思啊 显示游戏动画什么意思( 五 )


五、巧妙地节省 RAM开篇的时候提到过 , 当年街机的 RAM 只有可怜的 1kb 大?。?这样小的地方必定无法让我们存储屏幕上每个对象的信息 , 但是玩家的位置、外星人的位置以及它们的子弹、屏幕上的盾牌损坏情况都是会实时更新的 , 如何做到这一点呢?
我发现《太空侵略者》游戏区域内容分布还是很有规律的,特殊飞船(飞碟)只会出现在屏幕上端 , 盾牌和玩家的位置不会改变,只有子弹的位置不好把握,所以仔细研读代码 , 从 DrawSpriteGeneric() 可以看出,游戏对于碰撞的检测只是简单的判断像素块是否重合,对于玩家子弹到底击中了什么在 PlayerShotHit() 函数进行判断时 , 则只需要判断子弹垂直方向坐标(Y坐标),如果 >= 216 则是撞到上顶,>=206 则是击中神秘飞碟,其他则是击中护盾或者外星人的子弹 。且由于外星飞船的是成组一起运动 , 只需要记住其中一个的位置就能推算出整体每一个外星飞船的坐标 。
这样算下来,程序只需要保存外星飞船的存活状态、当前舰队的相对移动位置、玩家和外星人子弹信息,在需要检测碰撞时则去读取显存中的像素信息进行对比然后反推当前时哪两样物体发生了碰撞即可 , 这种方法相比存储每一个对象的信息节省了不少资源 。
六、结语si78c 不同于其他代码,它本质上是对硬件和汇编代码的仿真,希望通过本文的源码讲解,让更多人看到当年程序员们在有限资源下制作出优秀游戏的困难,还有代码设计的精妙 。
最后,感谢本项目作者所做的一切,没有他的付出也就不会有这篇文章 。如果您觉得这篇文章还不错,欢迎分享给更多人 。

推荐阅读