嘿。 我打算写一个简单的船舶射击游戏作为CG家庭作业,所以我打算使用一些地图系统(虽然没有必要,它会是一个“额外”),我不知道如何来表示一张地图并且'分成部分',我的意思是,并不是所有的地图都可以在一个框架中看到。 人们通常如何工作?如何存储游戏地图并在屏幕上显示它的一部分?
2
A
回答
2
考虑使用QuadTree。它将地图按照区域分解成小部分。它可以让你定义你想看到多少空间,这使得它适合放大或缩小,或平移。
有一个C# implementation你可能很容易适应C++。
0
您还可以使用瓷砖和指向瓷砖的固定大小的二维指向阵列。这些指针让您可以在多个地方重复使用切片。
0
您可能希望像早期的视频游戏硬件那样做:存储二维字节数组,其中每个字节是8x8像素“瓦片”的索引。其他地方存储8x8像素图块的阵列。还将地图左上角的偏移量以像素为单位存储到屏幕的左上角。
当它的时间来绘制地图,只渲染应该是在屏幕上可见的砖,根据从地图角落屏幕角像素偏移:
int tile_x = pixel_x/tile_width;
int tile_y = pixel_y/tile_height;
for(int y=tile_y; y<=tile_y+screen_height_in_tiles; ++y)
{
for(int x=tile_x; x<=tile_x+screen_width_in_tiles; ++x)
{
int screen_x = tile_x * tile_width - (pixel_x % tile_width);
int screen_y = tile_y * tile_height - (pixel_y % tile_height);
render_tile(screen_x, screen_y, map[y][x]);
}
}
此代码是不是最优速度,并且缺少一些逻辑,例如如何处理部分从屏幕滚动出来的地图。但这是一个开始。
相关问题
- 1. 如何在屏幕上显示游戏?
- 2. 如何在屏幕上只显示地图的一部分
- 3. 视频游戏如何在我的屏幕上显示?
- 4. 如何在屏幕上显示一部分位图?
- 5. 试图在屏幕上实现游戏
- 6. 从内部存储器显示屏幕上的图片
- 7. paint graphics2D offscreen?然后把它的一部分,并在屏幕上显示
- 8. 试图上传图像,并让它显示在屏幕上
- 9. 如何存储2D边滚动游戏的屏幕对象?
- 10. 如何存储图像并使用struts将其显示在屏幕上?
- 11. iPhone游戏显示器在屏幕上偏离屏幕10个像素左右
- 12. libGDX游戏卡在屏幕上显示() - 隐藏()循环
- 13. 处理不会在屏幕上显示游戏
- 14. 如何在android(java)游戏上设置拆分屏幕
- 15. 宽屏显示器上的游戏
- 16. 如何让我的游戏在屏幕上停留在屏幕上
- 17. 如何在屏幕上显示布局的特定部分?
- 18. 在上述nextpeer多人游戏屏幕上方显示Revmob全屏广告
- 19. 每隔3秒在屏幕上创建并显示游戏对象
- 20. LibGDX Android游戏 - 在滚动屏幕上显示固定文本(即分数)
- 21. 显示玩家在游戏中的分数并更新它
- 22. 如何在游戏中显示分数?
- 23. 保存并在屏幕上显示高分
- 24. 我的游戏如何在开始屏幕上有宽屏图标?
- 25. 社交游戏地图瓷砖存储
- 26. Android屏幕上的游戏杆问题
- 27. 游戏窗口的屏幕截图
- 28. Android:在游戏屏幕上获取白色屏幕
- 29. 将屏幕分为两部分iphone box2d游戏应用
- 30. 如何使长时间的TextView的一部分显示在屏幕上? 1