循环以填充带有文本对象的框

时间:2018-03-13 12:57:32

标签: python python-3.x

我试图制作游戏"选择颜色而不是单词"在Python中。 有9种不同颜色的列表:

cnames = [" green ", " blue ", " yellow ", " gray ", " pink ", " orange ", " purple ", " red ", " brown "]

我写了一个随机化这些颜色的函数:

def randomize():
    import random
    cnames=["green", "blue","yellow", "grey", "pink", "orange", "Purple", "red", "brown"]
    color=randint(0, len (cnames)-1)
    cname=randint(0, len(cnames)-1)

    from random import sample
    other_cnames=random.sample(range(len(cnames)),6)

    return (color, cname, other_cnames)

游戏窗口的代码是:

win=GraphWin("New_game", 800,800)
    color, cname, other_names=randomize()

    rcname=cnames[cname]
    rcname=rcname [0].upper() + rcname[1:]
    target=Text(Point(300,100),rcname)
    target.setOutline(cnames[color])
    target.setStyle ("bold")
    target.setSize(24)
    target.draw(win)

    Boxes=[]
    k=0

如何制作一个用文本对象填充列表框的循环,其中每个文本对象代表一种颜色和颜色的数量(0到8)?

结果应如下所示: enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用for语句多次迭代代码以填充以下框:

for x in range(*insert number of boxes*): *put other code here*

如果只是将范围放在

中,这将填满

答案 1 :(得分:0)

如果您想要在不选择颜色的情况下返回颜色和颜色列表,则不完全确定您要求的内容。

cnames = ['green', 'blue'...]

从列表中选择一种颜色使用random.choice

color = random.choice(cnames)

获取其他颜色初始化新列表并按索引弹出

other_colors = list(cnames)
other_colors.pop(colors.index(color))

返回所选颜色和其他颜色

return color, other_colors
在graphwin中

color, other_colors = randomize()

ucolor = '{0}{1}'.format(color[0].upper(), color[1:])
target = Text(Point(300,100),ucolor)
target.setOutline(color)
...
Boxes = other_colors #