说明:
一、本程序是一个斜视角地图的滚屏演示。本程序在实现的时候并没有考虑屏幕渲染效率和内存空间的节省问题。所以地图绘制函数并没有对不可视的图块部分进行排除。本程序的实现完全采用了win32汇编语言,因此采用gdi接口也能获得较好的帧速。
二、本程序反映了2d游戏地图的控制思路。即,核心问题是几个坐标变换问题,解决了坐标变换就可以了。
1、保存地图的一维数据索引。需要把这个一维数组索引转变成地图坐标,即(列号,行号)。完成这一步以后,绘图程序才能遍历整个一维数组,就象遍历
一个二维的地图块数组一样。即通过数组索引确定它是在地图上的坐标。
2、地图坐标----图块列号、行号。地图坐标转变成屏幕贴图坐标。因为地图坐标是(列号、行号),所以必须要通过地图坐标求解出地图块左上角的像素坐标,即贴图坐标。
3、进行视变换。即,地图很大的时候,把视口举行在地图上进行平移就可以实现地图的滚动,看到不同的部分。所以,一旦视口的左上角在地图上的绝对坐标确定下来,那么一个地图块在视口内部的相对坐标------最终的窗口客户区贴图坐标就可以求出。
4、经过上面几步变换,一个地图块就真正的可以被绘制到窗口里面。
三、帧速控制:
a、用变量timeOld记录上次计算帧速结束的时间。
b、变量timeNew记录当前时间。
c、用变量frameCount记录从timeOld到timeNew的间隔里一共播放的帧数。
d、每次获取当前时间timeNew以后,求自从
上次计算帧速结束到现在一共有多少时间(ms):timeNew - timeOld
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!