5x5网格内的角色移动

时间:2017-08-28 01:52:52

标签: python

所以,我正在做一个游戏,你的小角色,你通过键入方向移动。我已经完成了所有这些工作,但现在我想要一些可视化。我做了两个这样的网格:

["╔═══════════════════╗", 
 "║   |   |   |   |   ║",
 "║-------------------║",
 "║   |   |   |   |   ║",
 "║-------------------║",
 "║   |   |   |   |   ║",
 "║-------------------║",
 "║   |   |   |   |   ║",
 "║-------------------║",
 "║   |   |   |   |   ║",
 "╚═══════════════════╝"]
["╔═══════════════════╗", 
 "║0,4|1,4|2,4|3,4|4,4║",
 "║-------------------║",
 "║0,3|1,3|2,3|3,3|4,3║",
 "║-------------------║",
 "║0,2|1,2|2,2|3,2|4,2║",
 "║-------------------║",
 "║0,1|1,1|2,1|3,1|4,1║",
 "║-------------------║",
 "║0,0|1,0|2,0|3,0|4,0║",
 "╚═══════════════════╝"]

我有一个看起来像这样的小家伙:ツ。我已经设置了代表一种“坐标”的代码。这是一个元组中的两个整数形式。每当这两个整数发生变化时,我希望字符出现在相应的整数上。我能想到的唯一方法就是在他们身上制作25个不同的网格,以及一堆if if语句。这不是太糟糕,但我也想添加另一个角色,我不想制作625个不同的网格。例如,如果元组是(4,3),我希望角色出现在那里。他移动时需要更新到其他方格。我已经有清算声明了。所以,我对任何想法和想法持开放态度。提前谢谢!

def basicIdea(playerCoordinates):
    if playerCoordinates == (0, 0):
        print("╔═══════════════════╗", 
              "║   |   |   |   |   ║",
              "║-------------------║",
              "║   |   |   |   |   ║",
              "║-------------------║",
              "║   |   |   |   |   ║",
              "║-------------------║",
              "║   |   |   |   |   ║",
              "║-------------------║",
              "║ツ |   |   |   |   ║",
              "╚═══════════════════╝"]

我会在这些行上做25次,但是有两个字符,大约有625种可能性,我不想手动设置625个不同的网格。

1 个答案:

答案 0 :(得分:1)

有两种方法可以解决这个问题:

  1. 替换渲染网格中的字符。为此,您可以将网格保存为行列表或全部保存在一个字符串中,其中包含换行符。只要你以某种方式将变量保存在变量中,这并不重要。从那里你必须计算你的特殊角色(例如笑脸)需要去哪里。请记住,这是关于输出中的位置,而不是逻辑网格。例如,第10行,第2列。如果您的网格按行划分,则行rows[9]和位置1处的字符。您可以在该位置拆分字符串,在其间添加笑脸,然后保存连接的字符串。然后打印。如果您的网格都在一个字符串中,则行数增加9倍,加上2,例如在9 * 22 + 2替换字符。

  2. 第二种方式可能更灵活,更可扩展。它涉及从逻辑网格/表创建可见网格。示例代码:

  3. # small 3x3 grid, implemented as a 2-dimensional list.
    rows = [[" ", " ", " "],
            [" ", " ", " "],
            ["ツ", " ", " "]]    
    
    output = ""
    # draw first row
    output += "╔"
    # three signs for every column, one for the space in-between
    output += "═" * (4 * num_of_columns - 1)
    output += "╗\n"
    
    for row in rows:
        for cell in row:
            output += "║"
            if cell == " ":
                output += "   " # empty cell
            elif cell == "ツ":
                output += " ツ "
            output += "║\n"
        # TODO: draw lines between rows
    
    # TODO: draw last line
    
    print(output)