用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
你可以使用多行字符串。
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)
+-------+ +-------+
| * | | * * |
| | | * |
| * | | * * |
+-------+ +-------+