嘿。 我打算写一个简单的船舶射击游戏作为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. 如何存储2D边滚动游戏的屏幕对象?
- 7. 如何存储图像并使用struts将其显示在屏幕上?
- 8. iPhone游戏显示器在屏幕上偏离屏幕10个像素左右
- 9. 如何在android(java)游戏上设置拆分屏幕
- 10. 宽屏显示器上的游戏
- 11. 在上述nextpeer多人游戏屏幕上方显示Revmob全屏广告
- 12. 保存并在屏幕上显示高分
- 13. 社交游戏地图瓷砖存储
- 14. Android屏幕上的游戏杆问题
- 15. Android:在游戏屏幕上获取白色屏幕
- 16. 将屏幕分为两部分iphone box2d游戏应用
- 17. 在OpenGL游戏之上显示图形
- 18. 在android地图上显示蓝色屏幕而不是地图
- 19. SharpDX如何让鼠标在游戏屏幕上的位置
- 20. 存储最高分并显示它
- 21. CountDown计时器在游戏屏幕中央显示透明textview
- 22. ios新游戏项目,矩形在屏幕外显示?
- 23. 如何在屏幕上实时显示用户的游戏分数给其他用户在第一个用户的组中进行游戏?
- 24. 如何在WP7 XNA的游戏中添加一个屏幕?
- 25. 屏幕滚动游戏
- 26. 不显示它的屏幕截图
- 27. 在iphone上加载一个openGL游戏的屏幕?
- 28. SDL在屏幕上显示得分
- 29. iOS游戏都是一个屏幕?
- 30. 两张图片在灯箱上并排显示在屏幕上?