每个人都一直希望实施Conway的“人生游戏”。那很无聊!让我们去做警察和强盗吧!
您将有两支队伍:警察和强盗。每个小组有5名成员,每个成员有50个生命值。该程序将连续循环。每次迭代,都会发生以下情况:
对于每个团队,打印第一个字母(
C
代表警察,R
强盗),空格,成员HP的空格分隔列表和换行符。这是球队的状态。两者都完成后,打印另一个换行符。例如,这可能是第一轮比赛:C 50 50 50 50 50 R 50 50 50 50 50
从1到10中选择一个随机数(包括1和10)。我们打这个电话
N
。如果N
是偶数,则强盗输掉了这一回合。如果很奇怪,警察就会输。从失败的团队中随机选择一个HP大于0的成员,并扣除
N
HP。成员的HP永远不会出现低于0的状态。重新启动循环。
当一个团队的所有成员失去所有HP时,游戏结束。然后,如果警察获胜,将打印以下内容:
C+
R-
如果强盗获胜:
R+
C-
这是代码高尔夫球,因此最少的字符获胜。
这是Python 2中的示例实现:
import random
cops = [50]*5
robbers = [50]*5
while any(cops) and any(robbers):
# print the status
print 'C', ' '.join(map(str, cops))
print 'R', ' '.join(map(str, robbers))
print
# pick N
N = random.randint(1, 10)
# pick the losing team (robbers if N is even, else cops)
losers = robbers if N % 2 == 0 else cops
# pick a member whose HP is greater than 0
losing_member = random.choice([i for i in range(len(losers)) if losers[i]])
losers[losing_member] -= N
# make sure the HP doesn't visibly drop below 0
if losers[losing_member] < 0: losers[losing_member] = 0
if any(cops):
# robbers lost
print 'C+'
print 'R-'
elif any(robbers):
# cops lost
print 'C-'
print 'R+'
cops-and-robbers
!
game-of-life
。