Changer le type des joueurs⚓︎
Exercice 7
Nous allons maintenant rajouter la possibilité de choisir le type de chaque joueur. Le type peut être humain ou ordinateur. Pour cela nous utiliserons un paramètre types
qui sera un texte de deux caractères parmi "h"
, pour un humain, et "o"
pour l'ordinateur. Ainsi "hh"
correspondra au jeu entre deux humains et "oh"
correspondra Ă l'ordinateur en joueur 1 et Ă un humain en joueur 2. Les combinaisons "ho"
et "oo"
sont aussi possibles
Compléter le code de la fonction manche_mixte
qui prend en paramètres un entier nb_allumettes
et une chaîne de caractères types
et qui permet de jouer une manche avec nb_allumettes
entre deux joueurs représentés par types
.
Indice : pour changer de joueur
On peut remarquer que \(3-1=2\) et \(3-2=1\)...
Indice : pour savoir quel est le type du joueur
À chaque tour de jeu, il faut donc déterminer s'il faut utiliser demander
ou demander_ordi
. Vous pouvez regarder la valeur de types[joueur-1]
pour connaître le type de joueur
.
def manche_mixte(nb_allumettes, types):
joueur = 2
while ...:
joueur = ... # On change de joueur
if ...:
choix = demander_ordi(nb_allumettes)
print("L'ordinateur prend", choix, "allumette(s)")
else:
print("Au tour du joueur", joueur)
choix = demander_joueur(nb_allumettes)
nb_allumettes = ...
if ...:
print("Le joueur a battu l'ordinateur.")
else:
print("L'ordinateur a gagné.")
return joueur
>>> manche_mixte(7, "oo")
Le joueur 1 (ordinateur) prend 3 allumette(s)
Le joueur 2 (ordinateur) prend 3 allumette(s)
Le joueur 1 (ordinateur) prend 1 allumette(s)
Le joueur 1 a gagné.
1
>>> manche_mixte(7, "oh")
Le joueur 1 (ordinateur) prend 3 allumette(s)
Au tour du joueur 2
Il reste 4 allumette(s)
Combien d'allumettes voulez-vous ? 1
Le joueur 1 (ordinateur) prend 3 allumette(s)
Le joueur 1 a gagné.
1
Exercice 8
Compléter le code de la fonction partie_mixte
qui prend en paramètres un entier nb_manches
, un entier nb_allumettes
et une chaîne de caractères types
, et qui permet de jouer une partie de nb_manches
manches avec nb_allumettes
allumettes entre deux joueurs correspondant Ă types
.
Par rapport aux exercices précédents, la fonction doit arrêter la partie dès qu'un joueur est certain de gagner la partie. Par exemple si un joueur gagne les 2 premuères manches sur 3, il n'est pas nécessaire de jouer la 3e manche.
def partie_mixte(nb_manches, nb_allumettes, types):
score1 = 0
score2 = 0
while ...:
gagnant = manche_mixte(nb_allumettes, types)
if gagnant == ...:
score1 = ...
else:
score2 = ...
print()
if ...:
gagnant = 1
score_gagnant = ...
score_perdant = ...
elif ...:
gagnant = 2
score_gagnant = ...
score_perdant = ...
else:
gagnant = 0 # il y a égalité
if ...:
if ...:
print("Le joueur", ..., "(humain) a gagné la partie", ..., "à ", ...)
else:
print("Le joueur", ..., "(ordinateur) a gagné la partie", ..., "à ", ...)
else:
print("Match nul", ..., "Ă ", ...)
>>> partie_mixte(3, 3, "hh")
Au tour du joueur 1
Il reste 3 allumette(s)
Combien d'allumettes voulez-vous ? 3
Le joueur 1 a gagné.
Au tour du joueur 1
Il reste 3 allumette(s)
Combien d'allumettes voulez-vous ? 3
Le joueur 1 a gagné.
Le joueur 1 (humain) a gagné la partie 2 à 0
>>> partie_mixte(3, 3, "hh")
Au tour du joueur 1
Il reste 3 allumette(s)
Combien d'allumettes voulez-vous ? 1
Au tour du joueur 2
Il reste 2 allumette(s)
Combien d'allumettes voulez-vous ? 2
Le joueur 2 a gagné.
Au tour du joueur 1
Il reste 3 allumette(s)
Combien d'allumettes voulez-vous ? 3
Le joueur 1 a gagné.
Au tour du joueur 1
Il reste 3 allumette(s)
Combien d'allumettes voulez-vous ? 2
Au tour du joueur 2
Il reste 1 allumette(s)
Combien d'allumettes voulez-vous ? 1
Le joueur 2 a gagné.
Le joueur 2 (humain) a gagné la partie 2 à 1
Exercice 9 (facultatif)
On peut remarquer que le joueur 1 commence chacune des manches, ce qui peut lui donner un certain avantage.
Écrire une nouvelle fonction manche_mixte2
similaire Ă manche_mixte
sauf qu'elle prend en plus un paramètre joueur
permettant de déterminer le joueur qui commence. Attention, il faut se rappeler que le joueur change au début de chaque tour.
Écrire une nouvelle fonction partie_mixte2
similaire Ă partie_mixte
sauf que le joueur commençant chaque manche peut changer selon une des règles suivantes (ou une autre que vous avez inventée) :
- Le perdant de la manche précédente commence.
- Le premier joueur est tiré au hasard.
- Les joueurs commencent les manches Ă tour de rĂ´le.