簡體   English   中英

如何使用 python 以行列格式填充方框中的值以進行 tictaoe 游戲

[英]How do I fill values inside square boxes in row column format using python for a tictaoe game

我想構建一個 tictactoe 游戲,但首先我需要構建一個 3 X 3 網格,然后在其中插入值,如下所示在此處輸入圖像描述 除此之外,我無法 go :

print("+-------" * 3,"+",sep="")
for row in range(3):
    print("|       " * 3,"|",sep="")

將繪圖內容和實際游戲數據分開。 這也允許不同大小的網格:

rows = 3
columns = 3

# Create a 2d list and fill with numbers
# The inner list comprehension makes one row and
# the outer is all the rows
# row * columns + col + 1 is just the number to put in the cell
game = [[row * columns + col + 1 for col in range(columns)] for row in range(rows)]

def print_board():
    line_a = "+--------" * columns + "+"
    line_b = "|        " * columns + "|"
    line_c = "|   {:<2}   " * columns + "|"

    print(line_a)
    for row in game:
        print(line_b)
        print(line_c.format(*row))
        print(line_b)
        print(line_a)

game[1][1] = 'X'
print_board()

Output

+--------+--------+--------+
|        |        |        |
|   1    |   2    |   3    |
|        |        |        |
+--------+--------+--------+
|        |        |        |
|   4    |   X    |   6    |
|        |        |        |
+--------+--------+--------+
|        |        |        |
|   7    |   8    |   9    |
|        |        |        |
+--------+--------+--------+

這是創建任意大小網格的通用方法:


def makegrid(l, w, h):
    n = len(l[0])

    line = '+%s+' % '+'.join(['-'*w]*n)
    sep = '|%s|' % '|'.join([' '*w]*n)
    sep2 = '\n'.join([sep]*((h-1)//2))

    sep3 =  '\n%s\n' % '\n'.join([sep2, line, sep2])

    space = ' '*((w-1)//2)
    grid = sep3.join('|%s|' % '|'.join(f'{space}{i}{space}' for i in x) for x in l)

    grid = f'{line}\n{sep2}\n{grid}\n{sep2}\n{line}'.replace('\n\n', '\n') 
    
    return grid

例子:

l = [[1,2,3],[4,5,6],[7,8,9]]

print(makegrid(l, 5, 3))
+-----+-----+-----+
|     |     |     |
|  1  |  2  |  3  |
|     |     |     |
+-----+-----+-----+
|     |     |     |
|  4  |  5  |  6  |
|     |     |     |
+-----+-----+-----+
|     |     |     |
|  7  |  8  |  9  |
|     |     |     |
+-----+-----+-----+

print(makegrid(l, 3, 1))
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+

print(makegrid(l, 7, 5))
+-------+-------+-------+
|       |       |       |
|       |       |       |
|   1   |   2   |   3   |
|       |       |       |
|       |       |       |
+-------+-------+-------+
|       |       |       |
|       |       |       |
|   4   |   5   |   6   |
|       |       |       |
|       |       |       |
+-------+-------+-------+
|       |       |       |
|       |       |       |
|   7   |   8   |   9   |
|       |       |       |
|       |       |       |
+-------+-------+-------+
def crea_griglia():
values = [[1,2,3],[4,"X",6],[7,8,9]]
for i in range(len(values)):
    print(("+"+"-"*7)*3+"+")
    print(("|"+" "*7)*3+"|")
    for j in range(len(values[0])):
        print(("|"+" "*3+str(values[i][j])+" "*3),end="")
    print("|")
    print(("|"+" "*7)*3+"|")
print(("+"+"-"*7)*3+"+")

crea_griglia()

對板進行硬編碼可能更容易 - 特別是因為您可以使用 f-strings 來顯示實際值。

b = [['1', '2', '3'], ['4', 'X', '6'], ['7', '8', '9']]
print(f"""
+-------+-------+-------+
|       |       |       |
|   {b[0][0]}   |   {b[0][1]}   |   {b[0][2]}   |
|       |       |       |
+-------+-------+-------+
|       |       |       |
|   {b[1][0]}   |   {b[1][1]}   |   {b[1][2]}   |
|       |       |       |
+-------+-------+-------+
|       |       |       |
|   {b[2][0]}   |   {b[2][1]}   |   {b[2][2]}   |
|       |       |       |
+-------+-------+-------+
""")

印刷:

+-------+-------+-------+
|       |       |       |
|   1   |   2   |   3   |
|       |       |       |
+-------+-------+-------+
|       |       |       |
|   4   |   X   |   6   |
|       |       |       |
+-------+-------+-------+
|       |       |       |
|   7   |   8   |   9   |
|       |       |       |
+-------+-------+-------+

像這樣的東西怎么樣:

board = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print("+-------" * 3 + '+')
for row in range(3):
    print("|       " * 3 + '|')

    for col in range(3):
        print(f"|   {board[row][col]}  ", end=' ')

    print('|\n' + "|       " * 3 + '|')
    print("+-------" * 3 + '+')

output:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM