Pierre-papier-ciseaux¶
Le jeu pierre-papier-ciseaux (feuille-caillou-ciseaux) se joue avec les mains.
Description¶
Les deux joueurs choisissent simultanément l’un des trois coups possibles:
pierre bat ciseaux
papier bat pierre
ciseaux bat papier
Ce jeu est aussi connu sous le nom de chifoumi.
Vous trouvez plus d’info sur Wikipédia.
Exemple online¶
Allez sur le site chifoumi.io pour avoir une idée du jeu.
Vous (you) allez jouer contre l’ordinateur (bot).
Votre projet¶
C’est un exemple d’un jeu vidéo où un humain joue contre l’ordinateur.
vous continuez jusqu’à une condition de fin
vous vérifiez si le choix est permis
vous affichez les coups
vous décidez qui gagne
vous tenez compte du score tout au long de la partie
Ce jeu est simple, mais il vous permet de comprendre le fonctionnement d’un jeu vidéo.
Représentation des coups¶
À chaque tour il y a 3 coups possibles. Il a différentes manières de représenter ces 3 options. Une façon est d’utiliser des chaînes de caractères.
coups = ['pierre', 'papier', 'ciseaux']
Une autre façon plus efficace est d’utiliser juste des entiers (0, 1, 2).
En commençant par 0, nous pouvons utiliser ces entiers comme indice pour une liste avec les noms des coups.
0 pour pierre
1 pour papier
2 pour ciseaux
coups = [0, 1, 2]
Bien sûr, vous pouvez aussi utiliser des émojis pour rendre l’apparence plus cool.
coups = ['💎', '📜', '✂️']
Input-output¶
Pour ce jeu, vous utilisez la fonction input()
pour demander le choix de l’utilisateur. Vous utilisez la fonction print()
pour communiquer avec lui.
Le principe de base est:
x = input('votre choix: ')
print('vous avez choisi', x)
votre choix: pierre
vous avez choisi pierre
Boucle de jeu¶
Pour jouer à ce jeu, vous utilisez la boucle while
pour répéter les échanges.
Une condition de fin sera nécessaire.
Une manière fréquemment utilisée pour terminer un jeu est d’appuyer tout simplement sur la touche retour.
Dans ce cas input()
retourne une chaine vide.
x = ''
La chaine vide est interprétée comme valeur booléenne False
.
Essayez différentes valeurs.
bool('')
False
bool('pierre')
True
Donc voici une boucle de jeu. Elle continue jusqu’à ce que vous appuyez sur retour tout seul.
x = input('votre choix:')
while x:
x = input('votre choix:')
print('game over')
votre choix: papier
votre choix:
game over
Vérification¶
Un jeu vérifie si les entrées sont permises. Établissons d’abord une liste des coups qui sont permis.
coups = ['pierre', 'papier', 'ciseaux']
L’opérateur in
permet de questionner si un élément fait partie d’une liste. Par exemple.
'papier' in coups
True
'ciso' in coups
False
Nous pouvons maintenant ajouter la vérification.
coups = ['pierre', 'papier', 'ciseaux']
print('choisissez entre:', *coups)
x = input('votre choix:')
while x :
if x in coups:
print('ok')
else:
print(x, "n'est pas dans", coups)
x = input('votre choix')
print('game over')
choisissez entre: pierre papier ciseaux
votre choix: pierre
ok
votre choix papi
papi n'est pas dans ['pierre', 'papier', 'ciseaux']
votre choix
game over
Choisir avec des raccourcis¶
Pour jouer plus facilement, il est préférable d’entrer un seul caractère, plutôt que de taper un mot entier.
Attention : ici, la liste des coups sont les caractères '0'
, '1'
et '2'
et non les entiers 0
, 1
et 2
coups = ['0', '1', '2']
print('choissisez entre:', *coups)
x = input('votre choix:')
while x :
if x in coups:
print('ok')
else:
print(x, "n'est pas dans", *coups)
x = input('votre choix:')
print('GAME OVER')
choissisez entre: 0 1 2
votre choix: 2
ok
votre choix: 3
3 n'est pas dans 0 1 2
votre choix:
GAME OVER
Transformer le choix¶
Dans le jeu, il est avantageux de transformer les indices (0, 1, 2) en mots.
Attention
La fonction input()
retourne un caractère et non pas un nombre.
Il faut le transformer en entier avec la fonction int()
.
L’instruction x = int(x)
transforme le caractère '1'
en nombre 1
.
coups = ['pierre', 'papier', 'ciseaux']
emoji = ['💎', '📜', '✂️']
print('0=pierre, 1=papier, 2=ciseaux')
x = input('votre choix:')
while x :
x = int(x)
print(emoji[x], coups[x])
x = input('votre choix:')
print('G A M E O V E R')
0=pierre, 1=papier, 2=ciseaux
Choix aléatoire¶
Le module random
permet de choisir des éléments aléatoires.
La fonction random.randint(0, 2)
retourne un entier aléatoire dans l’intervalle [0, 2].
import random
coups = ['💎', '📜', '✂️']
for i in range(5):
x = random.randint(0, 2)
print(x, '=', coups[x])
1 = 💎
1 = 💎
2 = ✂️
2 = ✂️
0 = 📜
coups = ['pierre', 'papier', 'ciseaux']
for i in range(5):
x = random.randint(0, 2)
print(coups[x])
pierre
pierre
papier
papier
ciseaux
Jouer contre l’ordinateur¶
Dans ce jeux vous (you) allez jouer contre l’ordinateur (bot). L’ordinateur choisit une des 3 possibilités de façon aléatoire.
coups = ['pierre', 'papier', 'ciseaux']
print('0=pierre, 1=papier, 2=ciseaux')
x = input('votre choix:')
while x :
you = int(x)
bot = random.randint(0, 2)
print(coups[you], 'contre' ,coups[bot])
x = input('votre choix:')
print('game over')
0=pierre, 1=papier, 2=ciseaux
votre choix: 0
pierre contre papier
votre choix: 1
papier contre ciseaux
votre choix:
game over
Qui gagne ?¶
Si les deux coups sont les mêmes, c’est un match nul et c’est facile à détecter.
you = 0
bot = 0
if you == bot:
print('match nul')
match nul
Si les deux coups sont différents, c’est plus compliqué
pierre (0) est plus fort que ciseaux (2)
papier (1) est plus fort que pierre (0)
ciseaux (2) est plus fort que papier (1)
Testez avec différents combinaisons.
Modifiez les variables you
et bot
et testez 3 cas différents.
you = 1
bot = 2
if you == bot :
print('match nul')
elif you == 0 and bot == 2:
print('humain gagne')
elif you == 1 and bot == 0:
print('humain gagne')
elif you == 2 and bot == 1:
print('humain gagne')
else:
print('ordi gagne')
ordi gagne
Garder un score¶
Utilisez des variables pour garder un score. Au début il faut les initialiser.
score_you = 0
score_bot = 0
Pendant le jeu vous allez incrémenter le score si l’un ou l’autre gagne.
score_you = score_you + 1
score_bot = score_bot + 1
score_bot = score_bot + 1
Cette incrémentation peut être simplifié avec l’opérateur +=
.
score_you += 1
score_bot += 1
score_bot += 1
print('score =', score_you, ':', score_bot)
score = 2 : 4
Projet¶
Combinez tous les éléments pour créer un jeu vidéo où
vous jouez contre l’ordinateur
vous continuez jusqu’à une condition de fin
vous vérifiez si le choix est permis
vous affichez les coups
vous décidez qui gagne à chaque tour
vous tenez compte du score
vous décidez qui gagne la partie