1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| #!/usr/bin/env python3
# coding: utf-8
# Shifoumi selon Big-Bang Théorie (la série)
# 5 pièces: caillou, papier, ciseaux, lézard, Spock (celui de Star Trek)
# Le caillou casse les ciseaux et écrase le lézard
# Le papier désavoue Spock et attrape le caillou
# Les ciseaux décapitent le lézard et coupent le papier
# Le lézard empoisonne Spock et avale le papier
# Spock explose les ciseaux et le caillou
import random
def play():
RCK=0x01
PPR=0x02
SCS=0x03
LZD=0x04
SPK=0x05
pieces={
RCK : {"label" : "caillou", "X" : (SCS, LZD)},
PPR : {"label" : "papier", "X" : (SPK, RCK)},
SCS : {"label" : "ciseaux", "X" : (LZD, PPR)},
LZD : {"label" : "lézard", "X" : (SPK, PPR)},
SPK : {"label" : "Spock", "X" : (SCS, RCK)},
}
score=[0, 0]
while True:
choix=input(
"Choissisez [%s] (Q pour quitter) :" % ", ".join(x["label"] for x in pieces.values())
)
if choix in "Qq": return score
joueur=txt2key(pieces, choix)
if joueur is None:
print("Choix [%s] incorrect - Recommencez" % choix)
continue
# if
computer=random.choice(tuple(pieces.keys()))
match=analyse(pieces, joueur, computer)
if match < 0: # Joueur
score[0]+=1
print("{} vs {}: le joueur gagne ({})".format(pieces[joueur]["label"], pieces[computer]["label"], score))
elif match > 0: # Computer
score[1]+=1
print("{} vs {}: le computer gagne ({})".format(pieces[joueur]["label"], pieces[computer]["label"], score))
else:
print("{} vs {}: égalité ({})".format(pieces[joueur]["label"], pieces[computer]["label"], score))
# while
# play()
def txt2key(pieces, txt):
for (k, v) in pieces.items():
if v["label"] == txt: return k
return None
# txt2key()
def analyse(pieces, j1, j2):
if j2 in pieces[j1]["X"]: return -1
if j1 in pieces[j2]["X"]: return 1
return 0
# analyse()
if __name__ == "__main__":
score=play()
print("Fin du jeu - Score %s" % score)
# if |
Partager