【问题标题】:Best way to generate tic tac toe ascii art生成井字游戏ascii艺术的最佳方法
【发布时间】:2020-04-27 09:34:16
【问题描述】:

我正在尝试以编程方式为井字游戏生成 ascii 艺术。到目前为止,我有:

display = ""
for i in range(0,30):
    if i == 10 or i == 20: #If on horzontal break
        for j in range(45):
                display += "_"
        display += '\n'
    else:
        for j in range(0,45):
            if j == 15 or j == 30: #If on a vertical break
                display += "|"
            else:
                display += " "
        display += '\n

打印一个空板:

"""
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |              
               |              |
_____________________________________________
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
_____________________________________________
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |
               |              |

"""

我现在想将 O 或 X 的“ascii 艺术”表示添加到玩家要求的网格中。有没有一种简单的方法可以以编程方式做到这一点?

特别是这些字符串:

"""
        ?8888P
         `88'
    8b,_  88  _,d8
    88888SEAL88888
    8P~   88   ~?8
         ,88.
        d8888b
"""
"""
       ____
     ,' __ `.
    / ,'  `. \
    | | () | |
    \ `.__,' /
     `.____,`
"""

谢谢。

【问题讨论】:

  • 最简单的方法可能是将所有行存储在字符列表中,并根据需要进行修改。然后循环并打印它们。
  • 所以使用一个大的二维数组,只需编辑需要更改的字符的坐标?
  • 是的,就是这样。

标签: python python-3.x tic-tac-toe


【解决方案1】:

感谢@Thomas 的评论,我成功地完成了这项工作,所以回来发布答案,以防它帮助其他人:

def putXInSquare(num):

    cross =  [[' ',' ',' ',' ','?','8','8','8','8','P',' ',' ',' ',' '],#0
              [' ',' ',' ',' ',' ','`','8','8','`',' ',' ',' ',' ',' '],#1
              ['8','b',',','_',' ',' ','8','8',' ',' ','_',',','d','8'],#2
              ['8','8','8','8','8','S','I','C','K','8','8','8','8','8'],#3
              ['8','P','~',' ',' ',' ','8','8',' ',' ',' ','~','?','8'],#4
              [' ',' ',' ',' ',' ',',','8','8','.',' ',' ',' ',' ',' '],#5
              [' ',' ',' ',' ','d','8','8','8','8','b',' ',' ',' ',' ']]#6


    if num == 1:
        iOffset = 0
        jOffset = 0
    if num == 2:
        iOffset = 0
        jOffset = 16
    if num == 3:
        iOffset = 0
        jOffset = 32
    if num == 4:
        iOffset = 9
        jOffset = 0
    if num == 5:
        iOffset = 9
        jOffset = 16
    if num == 6:
        iOffset = 9
        jOffset = 32
    if num == 7:
        iOffset = 17
        jOffset = 0
    if num == 8:
        iOffset = 17
        jOffset = 16
    if num == 9:
        iOffset = 17
        jOffset = 32

    for i in range(iOffset, iOffset + 7):
        for j in range(jOffset, jOffset + 14):
            board[i+1][j] = cross[i - iOffset][j - jOffset]

这将在给定位置产生一个十字,如下所示:

               |               |              
    ?8888P     |               |              
     `88`      |               |              
8b,_  88  _,d8 |               |              
88888SICK88888 |               |              
8P~   88   ~?8 |               |              
     ,88.      |               |              
    d8888b     |               |              
______________________________________________
               |               |              
               |      %%       |              
               |    %%  %%     |              
               |  %%      %%   |              
               |%%          %% |              
               |  %%      %%   |              
               |    %%  %%     |              
               |      %%       |              
______________________________________________
               |               |              
               |               |              
               |               |              
               |               |              
               |               |              
               |               |              
               |               |              

【讨论】:

  • 它工作,所以耶!但是考虑一下[[0,0],[0,16], ...] 的坐标列表,而不是ifs 的长列表。
  • 啊好多了!谢谢
猜你喜欢
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多