我正在为一个项目进行编码,该项目需要我绘制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)
这是应该发生的事情的具体描述和图像:
答案 0 :(得分:0)
您应该能够找到基本文档,以便为金圈提供随机的x
和y
值。
现在,什么定义方形格子中的“相邻”?棕褐色层是所有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_gold
和col_gold
的值来计算所有灰色索引的索引。