如何制作一个滚动关.txt卡,其中 map.txt 包含关卡的图块,其中 map 包含关卡的图块?



我想为游戏游戏制作一个非常大的滚动地图。我的屏幕由120 px x 120 px的17x11瓷砖定义(在边框中切割,60px x 6)Px,用于低分辨率mod)。为了创建我的滚动,我有一个想法可以将" with with with with with with with with with with with open(map.txt','r')用作m",以避免加载非常大的图片,使我的程序崩溃。假设我将其放在文件中(1 =墙,0 =空气):

111111111101111111111
100000000000000000001
101000000000000000101
100000000000000000001
100000000000000000001
100000000000000000001
100000000000000000001
100000000000000000001
101000000000000000101
100000000000000000001
111111111111111111111

玩家出现在(9,5)中,左上角为(0,0)。因此,我希望当我的播放器向上,向左,向下或向右上升时,背景重新加载进行更新是地图上的位置。或者...我根本不知道我该怎么做...

我已经尝试了这个小脚本,但根本不起作用:

import pygame, os
pygame.init()
os.environ['SDL_VIDEO_CENTERED'] = '1'
w = pygame.display.set_mode(1920,1080),pygame.NOFRAME)
wall = pygame.image.load('wall.png').convert_alpha
player = pygame.image.load('hero.png').convert_alpha
p_x = 9
p_y = 5
continue = True
def scroll(x,y):
     p_x = p_x + x
     p_y = p_y + y
     with open('map.txt','r') as m:
          **On your answer, complete this part  for aloow the code to work properly**
     pygame.display.update()
while continue:
     for event in pygame.event.get():
         if event.type == K_d: # I use a Qwerty keyboard
              scroll(1,0)
         elif event.type == K_a:
              scroll(-1,0)
         elif event.type == K_z:
              scroll(0,-1)
         elif event.type == K_s:
              scroll(0,1)

所以我已经尝试了:

for line in m():
     for sprite in line():
          ....

我认为这种方法是不可能的。有人可以帮我吗?

在评论中扩展讨论:

除非您的地图确实是真的真的*真正*真的很大当然可以实现)。

假设您的地图为1000 x 1000整数,我们可以看到它将需要8兆字节的内存(在我的Python上)。(添加到输出的逗号以获得可读性。)

>>> sys.getsizeof([0] * 1000 * 1000)
8,000,064

如果我们扩展到5000 x 5000整数(因此,鉴于您的屏幕尺寸为1920x1080 PX,瓷砖大小为60x60 px,156 x 278屏幕!),我们仍然没有寻找不可能的数量内存(即200兆字节):

>>> sys.getsizeof([0] * 5000 * 5000)
200,000,064

相关内容

最新更新