【发布时间】:2020-04-02 19:08:40
【问题描述】:
这是我的相关代码...
def start_room():
global r_x
global r_y
tile_rects = []
screen.blit(floor1_floor, (0, 0))
r_y = 0
for layer in startroom:
r_x = 0
for tile in layer:
if tile == '2':
bat_create()
if tile == '1':
screen.blit(grass, (r_x*40, r_y*40))
tile_rects.append(pygame.Rect(r_x*40, r_y*40, 40, 40))
r_x += 1
r_y += 1
函数start_room() 只被调用一次。应该发生的事情是tile_rects 被清空,然后在if tile == '1': 中,正方形被blitted 到屏幕上,然后为这些正方形制作矩形。出于某种原因,当我调用没有tile_rects = [] 的函数并打印tile_rects 时,矩形的所有值都存在。当我用tile_rects = [] 调用函数时,没有任何值存在。这很好,但我需要在使用之前清除数组。有谁知道如何解决这个问题?谢谢!
【问题讨论】:
-
global tile_rects? -
注意,这是一个列表,不是一个数组
-
您从哪里打印 tile_rects?
-
您提供的这个函数对 tile_rects 没有任何作用。您应该打印它或从函数中返回它,否则 tile_rects 值将丢失
-
感谢所有帮助。 Global-ing
tile_rects运行良好。感谢您更正我的呼叫列表数组:)
标签: python list pygame append rect