用Python绘制骰子

0 投票
2 回答
2061 浏览
提问于 2025-05-01 04:32

我正在尝试创建一个程序,来玩赌场游戏“掷骰子”,但我希望它显示的是骰子的样子,而不是简单的数字输出。我已经搞定了游戏的实际玩法(我用random.randint(1,6)模拟了骰子的投掷),但实际的视觉效果让我有点困惑。我听说可以用字典来解决这个问题,但我不能使用那种方法(真是让人无奈…)

输出的效果应该像第一个那样,理想情况下,但我用join命令时总是得到第二种效果。

它应该看起来像这样……

+-----+       +------+
|     |       |      |
|     |       |      |
+-----+       +------+

但我总是得到这个。

+------+
|      |
|      | 
+------++------+
|      |
|      |
+------+

这是我的代码。我知道这个列表看起来有点难读,但这是我唯一被允许的做法。

list = ['+-------+' + '\n' + '|       |' + '\n' + '|   *   |' + '\n' + '|       |' +  '\n' + '+-------+' , '+-------+' + '\n' + '| *     |' + '\n' + '|       |' + '\n' + '|    *  |' +  '\n' + '+-------+' , '+-------+' + '\n' + '| *     |' + '\n' + '|   *   |' + '\n' + '|     * |' +  '\n' + '+-------+' , '+-------+' + '\n' + '|       |' + '\n' + '|   *   |' + '\n' + '|       |' +  '\n' + '+-------+']
sep = ''

x = sep.join(list[0:2])

print x
暂无标签

2 个回答

0

你可以使用多行字符串。

 print("""
+-----+       +------+
|     |       |      |
|     |       |      |
+-----+       +------+
""")

如果你想在立方体上显示点,可以查一下 str.format() 这个方法。

1

我非常喜欢这样做。=)

base   = '+-------+         +-------+'
sep    = '         '
blank  = '|       |'
left   = '| *     |'
middle = '|   *   |'
right  = '|     * |'
both   = '| *   * |'

dice = [(blank, middle, blank),
        (left,  blank,  right),
        (left,  middle, right),
        (both,  blank,  both ),
        (both,  middle, both ),
        (both,  both,   both )]

def print_dice(a, b):
    print(base)
    print('\n'.join(a + sep + b for a, b in zip(dice[a-1], dice[b-1])))
    print(base)

执行:

>>> print_dice(2, 5)
+-------+         +-------+
| *     |         | *   * |
|       |         |   *   |
|     * |         | *   * |
+-------+         +-------+

撰写回答