【问题标题】:Find duplicate in list and draw square - turtle/python在列表中查找重复项并绘制正方形 - turtle/python
【发布时间】:2020-04-01 05:16:20
【问题描述】:

我正在尝试为学校开发这款“连接四人”游戏。但是,我在尝试在已经满的正方形上方绘制时遇到了一些麻烦。

def play_game(game):
for data in game:
    if data[0] == "a":        
        draw_square(-350, game)
    elif data[0] == "b":
        draw_square(-250, game)
    elif data[0] == "c":
        draw_square(-150, game)
    elif data[0] == "d":
        draw_square(-50, game)
    elif data[0] == "e":
        draw_square(50, game)
    elif data[0] == "f":
        draw_square(150, game)
    elif data[0] == "g":
        draw_square(250, game)

这是绘制正方形时发生的情况。参数是 x 值,并且我将默认 y 设置为 -200。当发现相同字符串值的重复值时,我需要增加它。 它们看起来像这样:

[['g', 3], ['f', 3], ['e', 4], ['a', 4]

感谢您的帮助,谢谢。

编辑: 在draw_square函数中设置y值。

def draw_square(x, game, y=-200):
goto(x, y)
pendown()
begin_fill()
forward(100)  # forward takes a number which is the distance to move
right(90)  # turn right
forward(100)
right(90)
forward(100)
right(90)
forward(100)
right(90)
penup()

【问题讨论】:

  • 你能把你设置了y值的完整代码贴出来吗?
  • 我添加了@RajuKomati
  • 请重复介绍,尤其是how to ask。 “我遇到了一些麻烦”和“任何帮助”不是问题说明。您似乎正在寻找某种教程支持; Stack Overflow 不是这样的资源。
  • @JamesLergessner 你能告诉我你想增加多少 y 值吗?而['g', 3] 表示g 3 次是对的。
  • 3 是连接 4 上瓷砖的颜色。我需要计算列表中的数字,并在每次重复时增加 100。@RajuKomati

标签: python turtle-graphics


【解决方案1】:

您可以使用set 来跟踪已经看到的数字。您还可以使用字典来减少play_game 函数中的代码。

def play_game(game):
    visited = set()
    y = -200
    val = {'a': -350, 'b': -250, 'c': -150, 'd': -50, 'e': 50, 'f': 150, 'g': 250}
    for data in game:
        if data[0] in val:
            if data[1] in visited:
                y += 100
                draw_square(val[data[0]], game, y)
            else:
                draw_square(val[data[0]], game)
                visited.add(data[1])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 2013-07-06
    • 1970-01-01
    • 2019-11-22
    • 2010-12-15
    相关资源
    最近更新 更多