2014-11-02 90 views
0

我试图创建一个播放赌场游戏掷骰子的程序,但不是显示整数输出,而是显示掷骰子的掷骰子(就像死亡的实际样子)。我有实际的游戏玩法(我用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 

回答

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) 
+-------+   +-------+ 
| *  |   | * * | 
|  |   | * | 
|  * |   | * * | 
+-------+   +-------+