黑手党帮手

2024-06-01 10:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

黑手党游戏助手很简单。它允许我首先输入角色的数量(黑手党、侦探、无辜者等等)。然后每个玩家输入他们的名字,电脑会随机为他/她选择一个角色。第一个玩家把电脑传给下一个玩家,以此类推。最后,计算机将生成一个列表。在

比如:

  • 汤姆:黑手党

  • 约翰:侦探

这是我的代码:

import random
role=[]
k = input("Number of mafia: ")
p = input("Number of detective: ")
n = input("Number of innocent: ")

---magic---

random.shuffle(role)

player = []
i=0
while True:
    name = raw_input()
    player.append(name)
    print role[i]
    i += 1

我在编程时有两个问题。在

  1. 我怎样才能列出一个名为“角色”的k“黑手党”和p“侦探”的名单?例如:如果k=3,p=1,n=1,那么列表“role”将是[“mafia”,“mafia”,“mafia”,“detective”,“innocent”]。我知道我可以用for循环来完成它,但是有没有什么简单的方法(又称魔术)来实现呢?

  2. 有一个非常严重的错误,因为现在第二个玩家可以看到分配给第一个玩家的角色。我怎样才能解决这个问题,让玩家看不见?但我必须保留结果,因为我必须在最后列出我提到的清单。

我的朋友非常喜欢玩这个游戏,所以我想用这个程序给他们一个惊喜! 谢谢大家读这个。祝你今天愉快=]


Tags: of游戏角色number列表input玩家random
2条回答

你可以在分配每个人之后清除输出吗?现在应该清楚了

import random
import os
k = input("Number of mafia: ")
p = input("Number of detective: ")
n = input("Number of innocent: ")

roles = ['mafia']*k + p*['detective'] + n * ['innocent']

random.shuffle(roles)

while roles:
    print 'name:',
    name = raw_input()
    print 'you are a ' + roles.pop(0)
    print 'clear?'
    clear = raw_input()
    os.system('cls' if os.name == 'nt' else 'clear')

或者你也可以把角色写到单独的文件中,这样会更好地工作

^{pr2}$

关于你的列表生成问题

>>> k = 3
>>> p = 1
>>> n = 2
>>> roles = ['mafia']*k + ['detective']*p + ['innocent']*n
>>> roles
['mafia', 'mafia', 'mafia', 'detective', 'innocent', 'innocent']

一种随机分配角色的方法

^{pr2}$

相关问题 更多 >