Python 从3个矩形列表中绘制2个矩形
我想在用户按键后绘制随机矩形。 我正在努力寻找一种随机选取矩形的方法。最好的方法是什么 有4个可能的矩形。如果用户按某个键,我想在a、b和c中随机画两个矩形,如果他按另一个键,我想在a、b和d中画两个矩形 我正在通过pygame.draw.rect(-parameters-)绘制rect。 是否可以将每个不同的矩形绘图指定给一个变量,并将它们放入一个列表中,然后在该列表中调用它们do random.choice()Python 从3个矩形列表中绘制2个矩形,python,pygame,Python,Pygame,我想在用户按键后绘制随机矩形。 我正在努力寻找一种随机选取矩形的方法。最好的方法是什么 有4个可能的矩形。如果用户按某个键,我想在a、b和c中随机画两个矩形,如果他按另一个键,我想在a、b和d中画两个矩形 我正在通过pygame.draw.rect(-parameters-)绘制rect。 是否可以将每个不同的矩形绘图指定给一个变量,并将它们放入一个列表中,然后在该列表中调用它们do random.choice() def pick2(): a = pygame.draw.rect(su
def pick2():
a = pygame.draw.rect(surface, (0,0,255), (650, 600, 450,70))
b = pygame.draw.rect(surface, (0,0,255), (650, 750, 450,70))
c = pygame.draw.rect(surface, (0,0,255), (100, 750, 450,70))
d = pygame.draw.rect(fenster, (0,0,255), (650, 750, 450,70))
list = [a,b,c,d]
random.choice(list)
random.choice(list)
pygame.display.update()
我试了一下,但没有成功。
我还希望第二个random.choice(列表)的输出与第一个不同
甚至可以将pygame函数指定给这样的变量吗 我基本上只想执行随机选择的三个矩形绘制中的两个
有人能帮忙吗?您需要指定选项。您只是在随机调用
。choice
,您应该这样做
random_choice = random.choice(list)
random_choice_2 = random.choice(list)
然后你可以用这两个变量做任何你想做的事情。让我们来分解一下:
a = pygame.draw.rect(surface, (0,0,255), (650, 600, 450,70))
这将调用pygame.draw.rect()
并将其返回值分配给变量a
。请注意,通过调用rect()
函数,可以立即绘制矩形。这也适用于以下所有调用。虽然可以通过这种方式将矩形指定给变量,但它仍然会绘制所有矩形。为了完成所需操作,需要先选择要绘制的两个矩形,然后仅绘制所选的两个矩形。一种方法是将每个矩形的坐标存储在列表中:
rects = [(650, 600, 450,70), (650, 750, 450,70), (100, 750, 450,70), (650, 750, 450,70)]
现在,您可以选择两个矩形:
chosen = random.sample(rects, k=2)
for rect in rects:
pygame.draw.rect(surface, (0,0,255), rect)
我使用random.sample()
来确保不会两次得到相同的矩形。我还将返回值赋给一个变量,以便捕获随机选择的矩形
最后绘制这些矩形:
chosen = random.sample(rects, k=2)
for rect in rects:
pygame.draw.rect(surface, (0,0,255), rect)
请注意,我从您的4个示例中选择了两个矩形。如果要从3个选项中选择2个,则只需根据需要更改rects
列表
我强烈建议您访问官方的Python教程。它将帮助您更详细地理解函数和返回值。您调用
random.choice()
但忽略其返回值。还要注意,您可能会选择相同的矩形两次。您可以通过使用random.choices()
来解决此问题。“甚至可以将pygame函数分配给这样的变量吗?”您并没有像您所问的那样将函数分配给变量。而是将函数返回值赋给函数。您需要对来自random.choice()
的返回值执行相同的操作。这可能会得到相同的矩形两次。更好的是