为围绕一个随机圆的圆分配特定的颜色

时间:2018-11-09 19:46:57

标签: python

我正在为一个项目进行编码,该项目需要我绘制15x15黑色圆圈的网格。然后,程序将随机选择一个圆圈来填充“金”。围绕“金”圆的圆圈应为“棕褐色”,围绕“棕褐色”的圆圈应为“灰色”,其他所有圆圈均为“白色”。当在圆圈上检测到鼠标单击时,将显示颜色。我能够绘制黑色圆圈,但是在将“金色”圆圈随机化并填充其余颜色方面遇到困难。

def circle_grid(game):

    # Create a list that creates 15x15 grid of black filled circles
    Center = Point(30,70)

    # append to a list
    Y = [ ]
    for y in range (15):
        for x in range (15):
            CIRCLES = Circle(Center, 15)
            CIRCLES.setFill("black")
            Center = Point ((Center.getX()+30), (Center.getY())) 
            CIRCLES.draw(game)
            Y.append(CIRCLES)
        Center = Point(30, Center.getY()+30)

这是应该发生的事情的具体描述和图像:

screenshot of task

2 个答案:

答案 0 :(得分:0)

您应该能够找到基本文档,以便为金圈提供随机的xy值。

现在,什么定义方形格子中的“相邻”?棕褐色层是所有x和/或y与金的位置相差1的圆。灰色圆圈必须有一个(或两个)相差完全2的坐标。

这就是算法。你可以从那里拿走吗?

答案 1 :(得分:0)

我建议将网格做成二维列表列表,以便其中的Circle可以被它们所在的行和列引用。这是我的意思:

def circle_grid(game):
    grid_width, grid_height = 15, 15
    radius = 15  # of each Circle in grid
    diameter = radius*2
    x, y = radius, radius  # Center of upper-left-most Circle of grid
    grid = []

    for i in range(grid_width):
        row = []
        for j in range(grid_height):
            row.append(Circle(x+(i*diameter), y+(j*diameter), radius, 'black'))
        grid.append(row)

    return grid

grid = circle_grid(None)

# Print grid of Circles created.
for row in range(len(grid)):
    line = []
    for col in range(len(grid[0])):
        line.append(str(grid[row][col]))
    print(', '.join(line))

这样做可以相对容易地通过grid[row][col]访问它们,因此在确定金币的位置后,更改其周围的组的颜色将成为增加,减去值的问题从那排,一口金。

例如,假设您想将金币放在grid上的任意位置:

row_gold, col_gold = random.randrange(grid_width), random.randrange(grid_width)
grid[row_gold][col_gold].setFill('gold')

然后,可以相对于其位置访问紧靠其周围的八个棕褐色Circle,如下所示:

grid[row_gold-1][col_gold-1].setFill('tan')
grid[row_gold-1][col_gold].setFill('tan')
grid[row_gold-1][col_gold+1].setFill('tan')

grid[row_gold][col_gold-1].setFill('tan')
# grid[row_gold][col_gold]  # don't change the gold one itself
grid[row_gold][col_gold+1].setFill('tan')

grid[row_gold+1][col_gold-1].setFill('tan')
grid[row_gold+1][col_gold].setFill('tan')
grid[row_gold+1][col_gold+1].setFill('tan')

,还可以通过类似的方式(即基于row_goldcol_gold的值来计算所有灰色索引的索引。