Pygame无限世界世代破碎
Pygame Infinite World Generation Broken
所以我正在使用 python 中的 pygame 模块制作一款基本的 2D 平台游戏。最近我一直在尝试实现无限世界生成,但遇到了一些问题。生成工作正常,但是,在玩家的生成处,生成了一堆随机图块,阻碍了整个生成区域。我似乎找不到造成这种情况的原因。
这是复制我的情况所需的一切:
地图生成:
def generate_chunk(x,y):
chunk_data = []
for y_pos in range(CHUNK_SIZE):
for x_pos in range(CHUNK_SIZE):
target_x = x * CHUNK_SIZE + x_pos
target_y = y * CHUNK_SIZE + y_pos
tile_type = 0 # nothing
if target_y > 10:
tile_type = 2 # dirt
elif target_y == 10:
tile_type = 1 # grass
elif target_y < 10:
tile_type = 0
if tile_type != 0:
chunk_data.append([[target_x,target_y],tile_type])
return chunk_data
...
while True:
...
tile_rects = []
for y in range(3):
for x in range(4):
target_x = x - 1 + int(round(scroll[0]/(CHUNK_SIZE*16)))
target_y = y - 1 + int(round(scroll[1]/(CHUNK_SIZE*16)))
target_chunk = str(target_x) + ';' + str(target_y)
if target_chunk not in game_map:
game_map[target_chunk] = generate_chunk(target_x,target_y)
for tile in game_map[target_chunk]:
display.blit(tile_index[tile[1]],(tile[0][0]*16-scroll[0],tile[0][1]*16-scroll[1]))
if tile[1] in [1,2]:
tile_rects.append(pygame.Rect(tile[0][0]*16,tile[0][1]*16,16,16))
完整代码:
https://github.com/nice-404/Platformer
我似乎无法弄清楚是什么导致随机生成图块。
(我一直在关注 DaFluffyPotato 的平台教程系列,因为我是 pygame 的新手)
经过 2 周的调试并进一步查看块生成代码后,我找不到任何东西。但是,我确实发现问题只发生在一个小区域,即 0 x 值处。所以我所做的是让玩家的出生点离它很远,并设置了一个边界,这样它就不会走得太远而无法看到这个问题。并没有真正解决问题,但至少现在可以了。
所以我正在使用 python 中的 pygame 模块制作一款基本的 2D 平台游戏。最近我一直在尝试实现无限世界生成,但遇到了一些问题。生成工作正常,但是,在玩家的生成处,生成了一堆随机图块,阻碍了整个生成区域。我似乎找不到造成这种情况的原因。 这是复制我的情况所需的一切:
地图生成:
def generate_chunk(x,y):
chunk_data = []
for y_pos in range(CHUNK_SIZE):
for x_pos in range(CHUNK_SIZE):
target_x = x * CHUNK_SIZE + x_pos
target_y = y * CHUNK_SIZE + y_pos
tile_type = 0 # nothing
if target_y > 10:
tile_type = 2 # dirt
elif target_y == 10:
tile_type = 1 # grass
elif target_y < 10:
tile_type = 0
if tile_type != 0:
chunk_data.append([[target_x,target_y],tile_type])
return chunk_data
...
while True:
...
tile_rects = []
for y in range(3):
for x in range(4):
target_x = x - 1 + int(round(scroll[0]/(CHUNK_SIZE*16)))
target_y = y - 1 + int(round(scroll[1]/(CHUNK_SIZE*16)))
target_chunk = str(target_x) + ';' + str(target_y)
if target_chunk not in game_map:
game_map[target_chunk] = generate_chunk(target_x,target_y)
for tile in game_map[target_chunk]:
display.blit(tile_index[tile[1]],(tile[0][0]*16-scroll[0],tile[0][1]*16-scroll[1]))
if tile[1] in [1,2]:
tile_rects.append(pygame.Rect(tile[0][0]*16,tile[0][1]*16,16,16))
完整代码: https://github.com/nice-404/Platformer
我似乎无法弄清楚是什么导致随机生成图块。
(我一直在关注 DaFluffyPotato 的平台教程系列,因为我是 pygame 的新手)
经过 2 周的调试并进一步查看块生成代码后,我找不到任何东西。但是,我确实发现问题只发生在一个小区域,即 0 x 值处。所以我所做的是让玩家的出生点离它很远,并设置了一个边界,这样它就不会走得太远而无法看到这个问题。并没有真正解决问题,但至少现在可以了。