创建和引用多个Pygame板元素(按钮)

时间:2018-04-06 11:03:35

标签: button pygame

我是一个pygame新手,这是我在stackoverflow上的第一篇文章(你好!)。我希望你能帮我解决一个问题,我正在为一个简单的益智游戏创建一个板子。该板由一个3x3网格按钮组成,当按下该按钮时,将更改网格中其他按钮的颜色。我遇到的问题是如何最好地引用每个按钮,以便可以识别鼠标单击,我可以根据此单击控制其他按钮的颜色变化。

在没有代码的情况下,我可以提供以下信息,我希望这些信息能够清楚地解决我的问题(我可以尝试整理并提供我目前编写的测试代码,如果有帮助的话)。

我导入了一个按钮图像,并设法通过在循环中进行9次blit来创建一个网格,引用一个坐标列表:

For i in range(9):
  gamedisp.blit(button,coordList[i])

所以我有网格,但我如何指定哪个按钮是哪个?我的第一个想法是将它们分配给变量button0 - button8,但在这里和其他地方的简短搜索清楚地表明这不是一个好习惯。那么替代方案是什么?如何以能够执行以下操作的方式存储和引用信息?

E.g。单击左上角的按钮,因此更改中间行中所有按钮的颜色。我很确定我可以处理颜色变化本身,它只是引用我正在努力的对象。

提前感谢您的帮助。如果我能提供进一步的详细信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

我已经设法找到了解决我自己问题的方法,并且已经包含了我的代码,希望它可以在将来帮助其他人。我创建了一个Button类并循环了9次以创建网格。该课程有一个方法'控制'这是按下按钮更改的按钮索引列表。我可以使用按钮[i] .controls来访问这些按钮。

正如原帖中提到的我是python和pygame新手所以如果我的代码中有任何错误或效率低下,请随时发布改进。我一直在使用Python编程为绝对初学者(第三版)Michael Dawson和pythonprogramming.net以及我学习的其他资源。

print('How many cats do you have?')
numCats = input()
try:
    if int(numCats)>=4:
        print('That is a lot of cats.')
    elif int(numCats)<0:
        print('You can\'t have negative cats, dumbo')
    else:
        print('That is not that many cats')
except ValueError:
    print('You did not enter a number')