我想做一个非常大的pygame游戏滚动地图。 我的屏幕是由17x11块120像素X 120像素的瓷砖定义的(边框中的瓷砖被切割,60像素X 6像素表示低分辨率模式)。为了创建我的滚动,我想到了使用'with open'地图.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上)。(为了便于阅读,在输出中添加了逗号。)
如果我们扩展到,哦,比如说,5000 x 5000个整数(所以假设你的屏幕大小是1920x1080像素,而磁贴大小是60x60像素,156 x 278个屏幕!),我们仍然没有看到不可能的内存量(即200兆字节):
相关问题 更多 >
编程相关推荐