用Python绘制骰子

时间:2014-11-02 18:47:48

标签: python

我正在尝试创建一个播放赌场游戏掷骰子的程序,但不是显示整数输出,而是显示骰子的滚动(就像骰子实际上看起来一样)。我有实际的游戏玩法(我使用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 :(得分: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)
+-------+         +-------+
| *     |         | *   * |
|       |         |   *   |
|     * |         | *   * |
+-------+         +-------+

答案 1 :(得分:0)

您可以使用多行字符串。

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

如果要在多维数据集上显示点,请查找str.format()方法。