python - 如何在多个位置或功能访问从列表中选择的项目
问题描述
在这里,我正在尝试制作一个游戏,我有 3 个位于blck_array中的块图像我想从该列表中选择一个随机项目,并使其在预先指定的(x-pos)处从上到下移动blck_pos。所以问题是我已经创建了一个函数rand_block来从列表中选择一个随机块,因此在create_block和move_block中都应该可以访问所选图像 以执行某些操作。我一直不知道如何使用该随机选择的块两种功能。
import pygame, sys,random
def rand_block():
global blck
blck = random.choice(blck_array)
def create_block():
rand_block()
blck=blck.get_rect(midtop = (random.choice(blck_pos),-50))
return blck
def move_block(blocks):
for block in blocks:
block.centery-=5
return blocks
def draw_block(blocks):
rand_block()
for block in blocks:
screen.blit(blck,block)
# blocks
blocks={
1:pygame.image.load('blocks/BLOCK L.png'),
2:pygame.image.load('blocks/BLOCK S.png'),
3:pygame.image.load('blocks/BLOCK M.png'),
}
blck_array=[blocks[1],blocks[2],blocks[3]]
blck_pos=[0,47,553,190,250]
block_list=[]
pygame.init()
screen = pygame.display.set_mode((500, 600))
screen.fill((255, 255, 255))
clock=pygame.time.Clock()
SPAWNPIPE=pygame.USEREVENT
pygame.time.set_timer(SPAWNPIPE,1200)
bal_x=0
loop = True
while loop:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type==SPAWNPIPE:
block_list.append(create_block)
screen.fill((255,255,255))
block_list=move_block(block_list)
draw_block(block_list)
pygame.display.update()
clock.tick(120)
解决方案
以下是两个建议的解决方案:
- 我想也许在你定义
blck_array
and do之后定义你的函数blck = random.choice(blck_array)
,而不需要一个函数。所以是这样的:
blck_array = [blocks[1], blocks[2], blocks[3]]
blck = random.choice(blck_array)
def create_block():
...
- 或者,如果您想保留该
rand_block
功能,那么您可以做的是让它返回blck
。所以,像这样:
def rand_block(arr): # arr is the list of blocks (blck_array), which should be provided as input
return random.choice(arr)
然后,您可以将返回的值用作 blck。所以你可以blck = rand_block(block_array)
在需要的地方写。
推荐阅读
- ansible - How to use ansible to test network connection?
- spring - 如何在spring boot中为elasticsearch编写单元测试
- r - 基于多列和多行条件展开 R 数据框
- c# - 如何返回方法?
- c# - 实现和泛化UML?
- c# - 如何在 UWP C# 中按名称杀死进程?
- c++ - Vector.push_back(对
(x1,x2)); 不工作 - php - 站点地图文件如何自动更新?
- kiwi-tcms - 如何使用 API 从 KIWI TCMS 导出 Testcase?
- javascript - 我想在一个数组中搜索一个字符串,并想显示键:前端字符串的“值”以角度