我使用pygame在python中创建了一个井字棋游戏的版本,最终游戏效果比预期要好,我感到很高兴。然而,代码看起来相当混乱,我想对其进行整理。为了让代码正常工作,我创建了9个精灵类(sprite class)的对象。但是,每当我需要对它们应用一个方法时,我就必须写出同样的一行代码九次,只有一个数字不同。为了解决这个问题,我想知道是否有任何方法可以运行相同的脚本来操作这九个对象。程序首先通过创建这些对象来启动:
board_0 = classes.sprite.Sprite(x = 250, y = 200)
board_0.set_image('board.png')
board_1 = classes.sprite.Sprite(x = 350, y = 200)
board_1.set_image('board.png')
board_2 = classes.sprite.Sprite(x = 450, y = 200)
board_2.set_image('board.png')
board_3 = classes.sprite.Sprite(x = 250, y = 300)
board_3.set_image('board.png')
board_4 = classes.sprite.Sprite(x = 350, y = 300)
board_4.set_image('board.png')
board_5 = classes.sprite.Sprite(x = 450, y = 300)
board_5.set_image('board.png')
board_6 = classes.sprite.Sprite(x = 250, y = 400)
board_6.set_image('board.png')
board_7 = classes.sprite.Sprite(x = 350, y = 400)
board_7.set_image('board.png')
board_8 = classes.sprite.Sprite(x = 450, y = 400)
board_8.set_image('board.png')
是否可以使用for循环在几行代码中创建这些内容,而不是需要18行。相同的解决方案希望能在代码的其他地方也适用,我有这两个部分需要针对每个对象重复9次:
if board_0.mouse_hover() and grid[0] == 0:
if turn == 0: board_0.set_image('cross.png')
elif turn == 1: board_0.set_image('nought.png')
else:
if grid[0] == 0: board_0.set_image('board.png')
if board_0.mouse_click() and grid[0] == 0:
if turn == 0:
board_0.set_image('cross.png')
grid[0] = 'X'
turn = 1
elif turn == 1:
board_0.set_image('nought.png')
grid[0] = 'O'
turn = 0
对于那些想知道的人,我在代码开头设置了grid
:grid = [0, 0, 0, 0, 0, 0, 0, 0, 0]
。那么要实现我想要的结果,有什么方法呢?我相信我以前遇到过这个问题,但当时我不知道Stack Overflow,所以如果确实有解决办法,我将更新一些其他程序。
list
、dict
、tuple
等。 - juanpa.arrivillagacontainer = [classes.sprite.Sprite(x = 250, y = 200), classes.sprite.Sprite(x = 350, y = 200) ... ]
。 - George Willcox