Tout le monde veut toujours implémenter Game of Life de Conway. C'est ennuyant! Faisons plutôt des flics et des voleurs!
Vous aurez deux équipes: les flics et les voleurs. Chaque équipe compte 5 membres avec 50 points de vie chacun. Le programme sera bouclé en continu. À chaque itération, les événements suivants se produisent:
Pour chaque équipe, imprimez la première lettre (
Cpour les flics,Rpour les voleurs), un espace, une liste des HP des membres séparés par un espace et une nouvelle ligne. Ceci est le statut des équipes. Une fois les deux terminés, imprimez une autre nouvelle ligne. Par exemple, voici à quoi cela pourrait ressembler au premier tour:C 50 50 50 50 50 R 50 50 50 50 50Choisissez un nombre aléatoire de 1 à 10 (y compris 1 et 10). Nous appellerons le numéro
N. SiNc'est égal, les voleurs perdent ce tour; si c'est étrange, les flics perdent.Choisissez un membre aléatoire de l'équipe perdante dont les HP sont supérieurs à 0 et déduisez les
NHP. Les HP des membres ne devraient jamais apparaître en dessous de 0 sur le statut.Redémarrez la boucle.
Le jeu se termine lorsque tous les membres d'une équipe perdent tous leurs PV. Ensuite, ce qui suit sera imprimé si les flics gagnent:
C+
R-
et si les voleurs gagnent:
R+
C-
C'est le golf de code, donc le plus petit nombre de personnages gagne.
Voici un exemple d'implémentation dans 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.