python-3.x 如何将我的玩家的当前位置显示在棋盘上?

q7solyqu  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(133)
def formater_damier(joueurs):
    joueurs = [
        {"nom": "1", "pos": [5, 5]},
        {"nom": "2", "pos": [8, 6]}
    ]
     grille = (
    (   '    ----------------------------------- \n'
        '9 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '8 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '7 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '6 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '5 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '4 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '3 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '2 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '1 |  .   .   .   .   .   .   .   .   .  | \n'
'--| ----------------------------------- \n'
       f'  |  1   2   3   4   5   6   7   8   9 \n'))
    return grille

    example  grille = (
    (   '    ----------------------------------- \n'
        '9 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '8 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '7 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '6 |  .   .   .   .   .   .   .   2   .  | \n'
        '  |                                     | \n'
        '5 |  .   .   .   .   1   .   .   .   .  | \n'
        '  |                                     | \n'
        '4 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '3 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '2 |  .   .   .   .   .   .   .   .   .  | \n'
        '  |                                     | \n'
        '1 |  .   .   .   .   .   .   .   .   .  | \n'
'--| ----------------------------------- \n'
       f'  |  1   2   3   4   5   6   7   8   9 \n'))

我想把我的球员的位置和我的墙在我的董事会,但我不知道如何做到这一点。我不认为这是正确的方式来建立一个空董事会和添加元素后。我做了一个例子,它应该是如何。我只是想了解,所以如果有人能把我在正确的方式,这将是伟大的。

0yg35tkg

0yg35tkg1#

在这种情况下,最好定义一个矩阵(意味着array的array)来保存网格的当前状态。例如,可以使用int的array的array,其中0:表示空,1:意味着第一玩家ET2:表示第二个。
当你需要显示网格时,你可以使用一个函数将int值转换成语义。
这一个很简单的例子:

SIZE = 9

players = [
        {"nom": "1", "pos": [5, 5]},
        {"nom": "2", "pos": [8, 6]}
    ]

def build_grid(size,value_default=0): 
    grid = []
    for _ in range(size): 
        line = []
        for _ in range(size):
            line.append(value_default) 
        grid.append(line)
    return grid

def display_grid(grid):
    for i in range(len(grid)): 
        line = grid[i]
        print(str(i+1)+" ",end="")
        for j in range(len(line)):
            print(str(line[j])+" ",end="")
        print()

def update_grid(grid,position_ij,value): 
    i = position_ij[0]
    j = position_ij[1]
    grid[i][j] = value
    return grid

# basic use
grid = build_grid(SIZE)
display_grid(grid)
grid = update_grid(grid,[5,6],1)
display_grid(grid)

# use with your dict 
grid = build_grid(SIZE)
display_grid(grid)
grid = update_grid(grid,players[0]["pos"],str(players[0]["nom"]))
display_grid(grid)

PouceHeure(一小时制)

egmofgnx

egmofgnx2#

您应该创建一个算法,它将逐行生成网格,并在生成网格时将碎片插入到正确的位置。
例如:

def add_joueurs(joueurs):
    """creates the inner grid and places joueurs in positions"""
    grid = [['.' for _ in range(9)] for _ in range(9)]
    for joueur in joueurs:
        c,r =  joueur["pos"]
        grid[r - 1][c-1] = joueur["nom"]
    return grid

def build_grid(joueurs):
    """creates the boundaries of the grid"""
    blank = "  |" + (" " * 29) + "| "
    grid = add_joueurs(joueurs)
    lines = ["  " + ('-'* 31)]
    for i in range(9,0,-1):
        line = f"{i} |  " + "  ".join(grid[i-1]) + "  | "
        lines.append(line)
        if i > 1:
            lines.append(blank)
    lines.append("- | " + ("-"*27) + " | -")
    lines.append("  |  " + "  ".join([str(i) for i in range(1,10)]) + "  | ")
    return "\n".join(lines)

那么你可以使用你的字典列表作为函数的输入参数,并且为你生成纸板。

joueurs = [
{"nom": "1", "pos": [5, 5]},
{"nom": "2", "pos": [8, 6]}
]
print(build_grid(joueurs))

输出:

-------------------------------
9 |  .  .  .  .  .  .  .  .  .  |
  |                             |
8 |  .  .  .  .  .  .  .  .  .  |
  |                             |
7 |  .  .  .  .  .  .  .  .  .  |
  |                             |
6 |  .  .  .  .  .  .  .  2  .  |
  |                             |
5 |  .  .  .  .  1  .  .  .  .  |
  |                             |
4 |  .  .  .  .  .  .  .  .  .  |
  |                             |
3 |  .  .  .  .  .  .  .  .  .  |
  |                             |
2 |  .  .  .  .  .  .  .  .  .  |
  |                             |
1 |  .  .  .  .  .  .  .  .  .  |
- | --------------------------- | -
  |  1  2  3  4  5  6  7  8  9  |

另一个例子

joueurs = [
{"nom": "1", "pos": [5, 5]},
{"nom": "2", "pos": [8, 6]},
{"nom": "3", "pos": [3, 2]},
{"nom": "4", "pos": [4, 1]},
{"nom": "5", "pos": [9, 0]},
]
print(build_grid(joueurs))

输出:

-------------------------------
9 |  .  .  .  .  .  .  .  .  5  |
  |                             |
8 |  .  .  .  .  .  .  .  .  .  |
  |                             |
7 |  .  .  .  .  .  .  .  .  .  |
  |                             |
6 |  .  .  .  .  .  .  .  2  .  |
  |                             |
5 |  .  .  .  .  1  .  .  .  .  |
  |                             |
4 |  .  .  .  .  .  .  .  .  .  |
  |                             |
3 |  .  .  .  .  .  .  .  .  .  |
  |                             |
2 |  .  .  3  .  .  .  .  .  .  |
  |                             |
1 |  .  .  .  4  .  .  .  .  .  |
- | --------------------------- | -
  |  1  2  3  4  5  6  7  8  9  |

相关问题