Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 黑手党(派对游戏)帮手_Android_Python - Fatal编程技术网

Android 黑手党(派对游戏)帮手

Android 黑手党(派对游戏)帮手,android,python,Android,Python,黑手党的游戏帮手很简单。它允许我首先输入角色的数量(黑手党、侦探、无辜者等)。然后,每个玩家将输入他们的名字,计算机将随机为他/她选择一个角色。第一个玩家把电脑传给下一个玩家,依此类推。最后,计算机将生成一个列表 比如: 汤姆:黑手党 约翰:侦探 这是我的密码: import random role=[] k = input("Number of mafia: ") p = input("Number of detective: ") n = input("Number of innocen

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

比如:

  • 汤姆:黑手党

  • 约翰:侦探

这是我的密码:

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
我在编程这方面有两个问题

  • 我怎样才能用k“黑手党”和p“侦探”列一张名为“角色”的名单?例如:如果k=3,p=1,n=1,那么列表中的“角色”将是['mafia'、'mafia'、'mafia'、'mafia'、'detective'、'Innomy']。我知道我可以用for循环来做,但是有什么简单的方法(也称魔术)来做吗

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

  • 我的朋友们非常喜欢玩这个游戏,所以我想通过这个程序给他们一个惊喜!
    谢谢大家阅读这篇文章。祝您愉快=]

    关于列表生成问题

    >>> k = 3
    >>> p = 1
    >>> n = 2
    >>> roles = ['mafia']*k + ['detective']*p + ['innocent']*n
    >>> roles
    ['mafia', 'mafia', 'mafia', 'detective', 'innocent', 'innocent']
    
    一种随机分配角色的方法

    from random import shuffle
    shuffle(roles)
    names = ['bob', 'steve', 'tom', 'jon', 'alex', 'mike']
    players = dict(zip(names,roles))
    
    >>> players
    {'mike': 'innocent',
     'alex': 'mafia',
     'steve': 'mafia',
     'tom': 'mafia',
     'bob': 'detective',
     'jon': 'innocent'}
    

    是否可以在分配每个人后清除输出?现在应该清楚了

    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')
    
    或者,您也可以将角色写入单独的文件,这样可能会更好

    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)
    
    people = []
    
    path = ''
    
    while roles:
        print 'name:',
        name = raw_input()
        while name in people:
            print 'name already_taken please take new name'
            name = raw_input()
        people.append(name)
        person_file = open(os.path.join(path,'%s.txt') % (name,),'w')
        person_file.write('you are a %s' % (roles.pop(0),))
        person_file.close() 
    

    黑手党人数:3名侦探人数:1名无辜者人数:2名姓名:汤姆你是黑手党吗?tom[2J姓名:z你是侦探clear?v[2J姓名:q你是黑手党clear?b[2J姓名:这是输出,意味着下一个玩家可以看到前一个玩家分配的角色。如何修复此问题?=]编辑以添加更好的清除和其他替代方案