Vous êtes sur la page 1sur 4

Université de Nantes - Faculté des sciences et des techniques

Master CCI - Module Services Web - PHP

L'algorithme Jeu des allumettes


Algorithme Jeu des allumettes
{Simulation du jeu des allumettes en deux manches gagnantes. }
Lexique
Identicateur Type Rôle
Nom1 Chaîne de caractères nom du premier joueur
Nom2 Chaîne de caractères nom du second joueur
Gagnant Entier Numéro du joueur ayant gagné la dernière manche
nbManche1 Entier Nombre de manches gagnées par le premier joueur
nbManche2 Entier Nombre de manches gagnées par le second joueur
Début
1 {Saisie du nom des deux joueurs}
2 Écrire ( Nom du premier joueur :  )
3 Lire (N om1)
4 Écrire ( Nom du second joueur :  )
5 Lire (N om2)
6 {Initialisations}
7 nbM anche1 ← 0
8 nbM anche2 ← 0
9 Répéter
10 Gagnant ← Jeux(N om1,N om2)
11 MiseAJourPartie(Gagnant,nbM anche1,nbM anche2)
12 Jusqu'à (nbM anche1 = 2)ou(nbM anche2 = 2)
13 AfficherResultatPartie(N om1,N om2,nbM anche1,nbM anche2)
Fin Algorithme
Procédure MiseAJourPartie(↓ Gagnant, l nbM anche1, l nbM anche2)
{ }
Décompte des manches gagnées
Lexique
Identicateur Type Rôle
Gagnant Entier Numéro du joueur ayant gagné la dernière manche
nbManche1 Entier Nombre de manches gagnées par le premier joueur
nbManche2 Entier Nombre de manches gagnées par le second joueur
Début
1 Si Gagnant = 2
2 Alors nbM anche2 ← nbM anche2 + 1
3 Sinon nbM anche1 ← nbM anche1 + 1
4 Fin Si
Fin Procédure

Année 2004-2005 1
Université de Nantes - Faculté des sciences et des techniques
Master CCI - Module Services Web - PHP

Procédure AcherResultatPartie(↓ N om1, ↓ N om2, ↓ nbM anche1, ↓ nbM anche2)


{ }
Fin de la partie, achage du vainqueur
Lexique
Identicateur Type Rôle
Nom1 Chaîne de caractères nom du premier joueur
Nom2 Chaîne de caractères nom du second joueur
nbManche1 Entier Nombre de manches gagnées par le premier joueur
nbManche2 Entier Nombre de manches gagnées par le second joueur
Début
1Si nbM anche2 = 2
2 Alors Écrire ( Le vainqueur de cette partie est  ,N om2)
3 Sinon Écrire ( Le vainqueur de cette partie est  ,N om1)
4Fin Si
Fin Procédure
Fonction Jeux(↓ nom1, ↓ nom2) → Entier
{Eectue une manche du jeux des allumettes }
Lexique
Identicateur Type Rôle
Nom1 Chaîne de caractères nom du premier joueur
Nom2 Chaîne de caractères nom du second joueur
Vainqueur Entier Numéro du vainqueur
NbAllumettes Entier Nombre d'allumettes dans le tas
NbTours Entier Nombre de tours de jeu
NbPrises Entier Nombre d'allumettes prises par le joueur courant
Joueur Entier Numéro du joueur courant
Début
1 {Initialisations}
2 N bAllumettes ← 21
3 N bT ours ← 0
4 Joueur ← 2
5 {Début du jeu}
6 Répéter
7 Joueur ← ProchainJoueur(Joueur)
8 N bP rises ← Jouer(Joueur,N om1,N om2,N bAllumettes)
9 MiseAJourDuJeu(N bAllumettes,N bP rises,N bT ours)
10 Jusqu'à N bAllumettes = 0
11 V ainqueur ← AfficherResultatManche(Joueur,N om1,N om2,N bT ours)
12 Retourner V ainqueur
Fin Fonction

Année 2004-2005 2
Université de Nantes - Faculté des sciences et des techniques
Master CCI - Module Services Web - PHP

Fonction ProchainJoueur(↓ j) → Entier


{ }
Permet de changer de joueur
Lexique
Identicateur Type Rôle
j Entier Joueur courant
Début
Si j = 2
1
2 Alors Retourner 1
3 Sinon Retourner 2
Fin Si
4
Fin Fonction
Fonction Jouer(↓ j, ↓ N om1, ↓ N om2, ↓ nbAll) → Entier
{ Permet de faire jouer le joueur courant i.e. de saisir un certain nombre d'allumettes sur le tas. La fonction
Min est considérée comme connue }
Lexique
Identicateur Type Rôle
j Entier Joueur courant
Nom1 Chaîne de caractères nom du premier joueur
Nom2 Chaîne de caractères nom du second joueur
nbAll Entier Nombre d'allumettes dans le tas
nbPrises Entier Nombre d'allumettes prises par le joueur courant
max Entier Nombre maximum d'allumettes à prendre
Début
1 Si j = 2
2 Alors Écrire (N om2,  à vous de jouer ! )
3 Sinon Écrire (N om1,  à vous de jouer ! )
4 Fin Si
5 max ← Min(nbAll,6)
6 nbP rises ← SaisirEntier(1,max, Combien d'allumettes prenez-vous ? )
Retourner
7 nbP rises
Fin Fonction
Procédure MiseAJourDuJeu(l nbAll, ↓ nb, l nbCoups)
{ }
Met à jour l'état du jeu (i.e. le tas, le nombre de coups...)
Lexique
Identicateur Type Rôle
nbAll Entier Nombre d'allumettes dans le tas
nb Entier Nombre d'allumettes prises par le joueur courant
nbCoups Entier Nombre de coups eectués
Début
1 {On enlève les allumettes}
2 nbAll ← nbAll − nb
3 {On valide un tour supplémentaire}
4 nbCoups ← nbCoups + 1
Fin Procédure

Année 2004-2005 3
Université de Nantes - Faculté des sciences et des techniques
Master CCI - Module Services Web - PHP

Fonction AcherResultatManche(↓ j, ↓ N om1, ↓ N om2, ↓ nbCoups) → Entier


{ }
Présente le gagnant du jeu
Lexique
Identicateur Type Rôle
j Entier Joueur courant
Nom1 Chaîne de caractères nom du premier joueur
Nom2 Chaîne de caractères nom du second joueur
nbCoups Entier Nombre de tours eectués
win Entier le vainqueur
Début
1 {C'est l'autre joueur qui gagne}
2 win ← ProchainJoueur(j)
3 nbCoups ← nbCoups − 1
4 {Achage du résultat}
5 Si win = 1
6 Alors Écrire ( Le vainqueur de cette manche est  ,N om1)
7 Sinon Écrire ( Le vainqueur de cette manche est  ,N om2)
8Fin Si
9Écrire ( ,(nbCoups div 2) + (nbCoups mod
en  2),  coups )
10 Retourner win
Fin Fonction
Fonction SaisirEntier(↓ min, ↓ max, ↓ message) → Entier
{ }
Eectue une saisie contrôlée d'un entier
Lexique
Identicateur Type Rôle
min Entier Borne minimale de l'intervalle de validité
max Entier Borne maximale de l'intervalle de validité
message Chaîne de caractères Message pour l'utilisateur
reponse Entier Entier proposé par l'utilisateur
Début
1 {Première demande}
2 Écrire (message)
3 Écrire ( ,min,
Donnez une valeur entre  ,max)  et 
4 Lire (reponse)
5 Tant Que ¬(reponse dans [min,max]) Faire
6 {Saisie à refaire}
7 Écrire ( Votre valeur n'est pas dans l'intervalle de validité )
8 Écrire (message)
9 Écrire ( ,min, ,max)
Donnez une valeur entre   et 
10 Lire (reponse)
11 Fin Tant Que
12 Retourner reponse
Fin Fonction

Année 2004-2005 4

Vous aimerez peut-être aussi