日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

顯示游戲動畫什么意思啊 顯示游戲動畫什么意思( 五 )


五、巧妙地節(jié)省 RAM開篇的時候提到過 , 當(dāng)年街機的 RAM 只有可憐的 1kb 大?。?這樣小的地方必定無法讓我們存儲屏幕上每個對象的信息 , 但是玩家的位置、外星人的位置以及它們的子彈、屏幕上的盾牌損壞情況都是會實時更新的 , 如何做到這一點呢?
我發(fā)現(xiàn)《太空侵略者》游戲區(qū)域內(nèi)容分布還是很有規(guī)律的,特殊飛船(飛碟)只會出現(xiàn)在屏幕上端 , 盾牌和玩家的位置不會改變,只有子彈的位置不好把握,所以仔細研讀代碼 , 從 DrawSpriteGeneric() 可以看出,游戲?qū)τ谂鲎驳臋z測只是簡單的判斷像素塊是否重合,對于玩家子彈到底擊中了什么在 PlayerShotHit() 函數(shù)進行判斷時 , 則只需要判斷子彈垂直方向坐標(biāo)(Y坐標(biāo)),如果 >= 216 則是撞到上頂,>=206 則是擊中神秘飛碟,其他則是擊中護盾或者外星人的子彈 。且由于外星飛船的是成組一起運動 , 只需要記住其中一個的位置就能推算出整體每一個外星飛船的坐標(biāo) 。
這樣算下來,程序只需要保存外星飛船的存活狀態(tài)、當(dāng)前艦隊的相對移動位置、玩家和外星人子彈信息,在需要檢測碰撞時則去讀取顯存中的像素信息進行對比然后反推當(dāng)前時哪兩樣物體發(fā)生了碰撞即可 , 這種方法相比存儲每一個對象的信息節(jié)省了不少資源 。
六、結(jié)語si78c 不同于其他代碼,它本質(zhì)上是對硬件和匯編代碼的仿真,希望通過本文的源碼講解,讓更多人看到當(dāng)年程序員們在有限資源下制作出優(yōu)秀游戲的困難,還有代碼設(shè)計的精妙 。
最后,感謝本項目作者所做的一切,沒有他的付出也就不會有這篇文章 。如果您覺得這篇文章還不錯,歡迎分享給更多人 。

推薦閱讀