La création d’un jeu de « pierre, papier, ciseaux » en Python est un excellent moyen d’améliorer vos compétences en programmation. Vous pouvez créer le jeu avec un simple script Python et y jouer en ligne de commande.
Le jeu commence par demander au joueur son choix : « pierre », « papier » ou « ciseaux ». Il attend ensuite que le joueur entre sa réponse. Vous pouvez jouer le jeu contre un joueur « ordinateur », qui choisira automatiquement son mouvement.
Le jeu peut également comporter plusieurs tours. Ainsi, même si vous perdez le premier tour, vous pouvez toujours essayer d’en gagner deux sur trois !
Comment installer le jeu et demander au joueur de jouer
Lorsque le jeu commence, le programme Python doit demander au joueur d’entrer « pierre », « papier » ou « ciseaux », et prendre en compte la réponse du joueur. Pour mettre en place un nouveau jeu, commencez par créer un nouveau fichier Python avec une extension .py.
Le code complet de ce tutoriel est disponible dans un dépôt GitHub.
- Créer un nouveau fichier appelé CiseauxPapierRoche.py.
- Ouvrez le nouveau fichier Python à l’aide d’un éditeur de texte, tel que Notepad++ ou Visual Studio Code.
- En haut du fichier, importez le module random. Vous l’utiliserez plus tard dans le jeu pour sélectionner aléatoirement un coup pour le tour de l’ordinateur.
import random - Présentez un message au joueur, lui demandant d’entrer dans le jeu « pierre, papier, ciseaux ».
userChoice = input("Rock, paper, or scissors? ").lower() - Initialiser un tableau appelé « moveOptions » qui stocke une liste des coups disponibles que vous ou l’ordinateur pouvez jouer.
moveOptions = ['rock', 'paper', 'scissors'] - Lorsque le joueur saisit une entrée, la valider pour s’assurer qu’il s’agit bien d’un des coups disponibles. Une fois que le joueur a saisi un coup valide, un message de confirmation s’affiche.
while (userChoice not in moveOptions):
userChoice = input("Invalid choice. Must be rock, paper, or scissors: ").lower()
print("")
print(f"You chose {userChoice}.")
Comment jouer à tour de rôle avec l’ordinateur et comparer les coups
Une fois que vous avez entré votre coup, l’ordinateur prend son tour en choisissant au hasard « pierre », « papier » ou « ciseaux ». Le jeu devra alors comparer votre coup avec celui de l’ordinateur pour déterminer qui a gagné.
- Utilisez le module aléatoire pour que l’ordinateur choisisse au hasard dans la liste des coups disponibles.
computerChoice = random.choice(moveOptions)
print(f"The computer chose {computerChoice}.") - Vous devrez comparer votre coup avec celui de l’ordinateur pour déterminer qui a gagné. Vous pouvez le faire en créant un nouveau dictionnaire. Ce dictionnaire contient chaque coup (par exemple, « pierre ») et le coup contre lequel il gagne ou perd (par exemple, « pierre » bat « ciseaux » et perd contre « papier »).
moves = {
'rock': { 'beats': 'scissors', 'losesTo': 'paper' },
'scissors': { 'beats': 'paper', 'losesTo': 'rock' },
'paper': { 'beats': 'rock', 'losesTo': 'scissors' },
} - Utilisez l’instruction Python if pour vérifier si votre coup et celui de l’ordinateur aboutissent à une égalité. Sinon, utilisez le dictionnaire moves pour comparer le coup du joueur à celui de l’ordinateur.
if userChoice == computerChoice:
print(f"Both you and the computer chose {userChoice}. It's a tie!")
else:
if (moves[userChoice]['beats'] == computerChoice):
print(f"{userChoice} beats {computerChoice}. You win!")
if (moves[userChoice]['losesTo'] == computerChoice):
print(f"{userChoice} loses to {computerChoice}. The computer wins!")Par exemple, si vous avez choisi « rock », alors la valeur de moves[userChoice][‘beats’] serait « ciseaux ». Si le choix de l’ordinateur est « ciseaux », cela signifie que votre coup est meilleur que le sien.
Comment comptabiliser les scores entre le joueur et l’ordinateur entre plusieurs tours ?
Vous pouvez également ajouter des tours supplémentaires, où vous et l’ordinateur jouez chacun trois tours.
Une fois que vous et l’ordinateur avez choisi entre pierre, papier et ciseaux, le jeu vous pose à nouveau la question et comptabilise vos scores. Le score du joueur augmente en fonction de celui qui a gagné le tour en question.
- Le code actuel représente un seul tour effectué par le joueur et l’ordinateur. Ajoutez tout le code actuel, à l’exception de la déclaration d’importation, à l’intérieur d’une nouvelle fonction turn(). Vous pouvez également modifier les messages de sortie en conséquence, pour dire « Vous gagnez ce tour » plutôt que « Vous gagnez » :
def turn():
userChoice = input("Rock, paper, or scissors? ").lower()
moveOptions = ['rock', 'paper', 'scissors']
while (userChoice not in moveOptions):
userChoice = input("Invalid choice. Must be rock, paper, or scissors: ").lower()
print("")
print(f"You chose {userChoice}.")
computerChoice = random.choice(moveOptions)
print(f"The computer chose {computerChoice}.")
moves = {
'rock': { 'beats': 'scissors', 'losesTo': 'paper' },
'scissors': { 'beats': 'paper', 'losesTo': 'rock' },
'paper': { 'beats': 'rock', 'losesTo': 'scissors' },
}
if userChoice == computerChoice:
print(f"Both you and the computer chose {userChoice}. It's a tie!")
else:
if (moves[userChoice]['beats'] == computerChoice):
print(f"{userChoice} beats {computerChoice}. You win this round!")
if (moves[userChoice]['losesTo'] == computerChoice):
print(f"{userChoice} loses to {computerChoice}. The computer wins!") - Le joueur et l’ordinateur ont chacun trois tours. Ajoutez une variable globale appelée « turns » au début du fichier.
turns = 3 - Après la fonction turn(), utilisez une boucle Python for pour répéter le tour trois fois. Au début de chaque tour, imprimez le numéro du tour. Appelez la fonction turn() pour demander au joueur et à l’ordinateur d’effectuer leurs déplacements pour ce tour.
for i in range(turns):
print("")
print(f"--- Round {i+1}: ---")
turn() - Pour savoir qui a gagné chaque tour, ajoutez une variable de score pour chaque joueur, en haut du fichier. Vous assignerez des valeurs à ces variables à l’intérieur de la fonction turn(), assurez-vous donc de les utiliser comme variables globales.
computerScore = 0
playerScore = 0
def turn():
global computerScore, playerScore - Dans la fonction turn(), une fois que le joueur et l’ordinateur ont joué leur coup, ajoutez un point au score du gagnant. Modifiez l’instruction if pour incrémenter la valeur de la variable « playerScore » ou « computerScore ».
if (moves[userChoice]['beats'] == computerChoice):
print(f"{userChoice} beats {computerChoice}. You win this round!")
playerScore += 1
if (moves[userChoice]['losesTo'] == computerChoice):
print(f"{userChoice} loses to {computerChoice}. The computer wins!")
computerScore += 1 - A la fin de la fonction turn(), imprimer une mise à jour des scores totaux de chaque joueur.
# Print an update on the total scores after the round
print("")
print(f"SCOREBOARD | Player's score: {playerScore} | Computer's score: {computerScore}") - À la toute fin du jeu, et après la boucle for qui répète les tours du joueur et de l’ordinateur, affichez le gagnant final.
print("")
if (computerScore > playerScore):
print(f"The computer wins with {computerScore} points!")
elif (playerScore > computerScore):
print(f"You win with {playerScore} points!")
else:
print(f"It's a tie! You both win with {playerScore} points!")
Comment faire fonctionner le jeu
Pour jouer, exécutez le script Python à l’aide d’un terminal ou d’une invite de commande. Entrez votre coup et attendez que l’ordinateur le fasse. Une fois les trois tours terminés, le programme affiche le nom du gagnant.
- Ouvrez une invite de commande ou un terminal, et naviguez jusqu’au dossier dans lequel vous stockez votre fichier Python.
- Utilisez la commande python pour exécuter le script :
python RockPaperScissors.py - Jouez au jeu en entrant ‘rock’, ‘paper’ ou ‘scissors’.
Apprendre Python en créant des jeux
La création de jeux simples tels que le jeu « Pierre, papier, ciseaux » est un excellent moyen de se familiariser avec les concepts de programmation. Il existe de nombreux autres jeux amusants que vous pouvez créer en utilisant Python, tels qu’un jeu d’aventure basé sur du texte.
