TP n°2 : Jeu des Allumettes
Description du chapitre et des ses objectifs :
Nous allons créer un jeu des allumettes : au départ il y en a 21. Puis les deux joueurs en retirent 1 ; 2 ou 3 par tour. Celui ou celle qui enlève la dernière allumette a perdu.
J'ai choisi ce jeu car il présente un bon intérêt, pour moi...
Accéder directement à une des parties du cours :
Description du jeu
Comme dit plus tôt, le jeu des allumettes se joue à deux. A tour de rôle, ils doivent enlever 1 ; 2 ou 3 allumettes. Le/la gagnant(e) est la personne qui ne laisse à l'adversaire qu'une alumette. Autrement dit, la personne qui enlève la dernière allumette perd.
Préparatifs
Tout d'abord, créez une variable nb_allumettes qui stockera les allumettes, puis une variable retire qui sera utilisée par l'ordinateur, afin d'enlever les allumettes et enfin un choice pour l'utilisateur.
Souvenez-vous du tirage au sort du premier TP. Il faudra l'utiliser pour le nombre d'allumettes retirées (par l'ordinateur bien sûr).
Faites en sorte que le nombre d'allumettes ne soit jamais négatif.
Créez le système pour savoir si vous l'utilisateur a gagné ou perdu...
Attention : N'allez pas plus loin : c'est la correction. Essayez d'abord de faire le TP puis regardez la correction
Correction
Voici ma correction :
Secret (cliquez pour afficher)
@echo off
set /a nb_allumettes=21
:main
cls
echo Il y a %nb_allumettes% allumettes.
choice /c 123 /n /m "Combien d'allumettes voulez-vous enlever ?"
set /a nb_allumettes-=%errorlevel%
if %nb_allumettes% lss 0 ( goto ajuster ) else if %nb_allumettes% equ 0 ( goto perdre ) else ( goto ordi )
:ajuster
set /a nb_allumettes+=%retire%
goto main
:ajuster_ordi
set /a nb_allumettes+=%retire%
goto ordi

rdi
set /a retire=%random% %% 3+1
set /a nb_allumettes-=%retire%
if %nb_allumettes% lss 0 ( goto ajuster_ordi ) else if %nb_allumettes% equ 0 ( goto gagner )
pause
cls
if %retire% neq 1 ( echo L'ordinateur a enleve %retire% allumettes... ) else ( echo L'ordinateur a enleve 1 allumette... )
pause
goto main
:gagner
cls
if %retire% neq 1 ( echo L'ordinateur a enleve %retire% allumettes... ) else ( echo L'ordinateur a enleve 1 allumette... )
pause
cls
echo Vous avez GAGNE !
goto pause
: perdre
cls
echo Vous avez perdu...
goto pause
: pause
pause
Astuce pour gagner
Vous pouvez gagner assez facilement à ce jeu :
Supposons qu'il ne reste que 6 allumettes et que ce soit à votre tour : il faut enlever une seule allumette comme ça l'ordinateur n'aura qu'un choix possible : celui de perdre !
Explications :
- Il enlève 1 allumette -> il reste 4 allumettes et vous en enlevez 3 -> il reste 1 allumette et l'ordi est obligé de la prendre -> VICTOIRE
- Il enlève 2 allumettes -> il reste 3 allumettes et vous en enlevez 2 -> il reste 1 allumette et l'ordi est obligé de la prendre -> VICTOIRE
- Il enlève 3 allumettes -> Il reste 2 allumettes et vous en enlevez 1 -> Il reste 1 allumette et l'ordi est contraint de la prendre -> VICTOIRE
Rendre l'IA plus intelligente grâce à l'astuce
Vous voulez que l'ordinateur soit plus fort ?
Alors adoptez cette solution pour qu'il respecte l'astuce des 6 allumettes :
Changez dans la fonction ordi :
set /a retire=%random% %% 3+1
Avec ceci :
if %nb_allumettes% equ 6 ( set /a retire=1 ) else if %nb_allumettes% equ 5 ( set /a retire=3 ) else if %nb_allumettes% equ 4 ( set /a retire=3 ) else if %nb_allumettes% equ 3 ( set /a retire=2 ) else if %nb_allumettes% equ 2 ( set /a retire=1 ) else ( set /a retire=%random% %% 3+1 )
C'est le code de ce que je vous ai expliqué dans la partie astuce.
Téléchargement du projet
Voici le projet. Bien entendu, vous pouvez l'améliorer (aération, demander à l'utilisteur de choisir le joueur qui commence...) :
Zip du jeu des Allumettes.
J'espère que les 2 TP ont eu une grande influence sur vous (idées, méthodes, façons de coder...)
Chapitre précédent - Sommaire
Nos rédacteurs et membres sont pour la plupart ouverts à des remarques constructives et servir à alerter le rédacteur du cours, des fautes éventuelles ou de propositions et nouvelles perspectives de cours etc ...
Pour ce faire cliquez ici
Postez vous aussi un commentaire à cette partie via le lien que voici