Todo mundo sempre quer implementar o Jogo da Vida de Conway. Isto é chato! Vamos fazer policiais e ladrões!
Você terá duas equipes: os policiais e os ladrões. Cada equipe tem 5 membros com 50 pontos de vida cada. O programa fará um loop contínuo. A cada iteração, ocorrerá o seguinte:
Para cada equipe, imprima a primeira carta (
Cpara os policiais,Rpara os assaltantes), um espaço, uma lista separada por espaços do HP dos membros e uma nova linha. Este é o status das equipes. Depois que os dois estiverem prontos, imprima outra nova linha. Por exemplo, eis a aparência da primeira rodada:C 50 50 50 50 50 R 50 50 50 50 50Escolha um número aleatório de 1 a 10 (incluindo 1 e 10). Vamos ligar para o número
N. SeNfor par, os ladrões perdem esta rodada; se estranho, a polícia perde.Escolha um membro aleatório da equipe perdida cujo HP seja maior que 0 e deduza o
NHP. O HP dos membros nunca deve aparecer abaixo de 0 no status.Reinicie o loop.
O jogo termina quando todos os membros de uma equipe perdem todo o HP. Em seguida, o seguinte será impresso se os policiais vencerem:
C+
R-
e se os ladrões vencerem:
R+
C-
Isso é código de golfe, então o menor número de caracteres vence.
Aqui está uma implementação de exemplo no 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.