Vous êtes sur la page 1sur 3

BTS SIO Lycée Robert Schuman - Metz

Bloc2 Développement d'applications


PHP : Programmation objet
XP07 Bataille
Implémentation PHP objet : Marianne Delio

1. Objectifs

▪ Définir, implémenter et utiliser une classe d'objets


▪ Définir et manipuler un tableau d'objets

2. Contexte

Il s'agit ici de simuler un jeu de bataille avec 52 cartes.

3. Travail à faire

3.1 Implémentez la classe Carte

Créez un dossier nommé XP07Bataille dans votre racine web. Tous les scripts à créer seront stockés dans ce
dossier.

Créez un fichier de script nommé class.carte.inc.php. Ecrire le code de la classe Carte en respectant les indications
ci-ddessous :

getCouleur et getFigure sont des accesseurs qui donnent


accès en lecture aux attributs privés $couleur et $figure.

Carte getNom est un accesseur en lecture qui retourne "As de


- $couleur Trèfle" pour une carte de figure "As" et de couleur "Trèfle".
- $figure
+ __construct(string $pCouleur, string $pFigure) getValeur est un accesseur en lecture qui retourne la valeur
+ getCouleur(): string de la carte calculée comme suit : AS 14, Roi 13, Dame 12, Valet
+ getFigure(): string 11. Pour les autres cartes la valeur correspond à la figure (2,
+ getNom(): string 3, 4, … 10).
+ getValeur(): int
+ isAtout(string $pCouleur): bool
isAtout est une méthode qui retourne un booléen indiquant si
la couleur donnée en paramètre correspond à la couleur de la
carte.

__construct est le constructeur de la classe. Il attend 2


arguments ($pCouleur et $pFigure) pour valoriser les champs
$couleur et $figure

3.2 Utilisez la classe Carte

1. Créez un fichier de script PHP nommé exosCartes.php.


2. Ajoutez un require_once du fichier class.carte.inc.php

exosCartes.php
<?php
require_once 'class.carte.inc.php';
?>

Bloc2 – XP07 Bataille Page 1 / 3


BTS SIO Lycée Robert Schuman - Metz

3. Ecrire quelques instructions pour utiliser la classe :


a. Créer un objet uneCarte en instanciant la classe Carte pour représenter le roi de trèfle.
b. Afficher la couleur de la carte
c. Afficher le nom de la carte
d. Afficher si cette carte est une carte atout. On considérera que 'Cœur' est la couleur atout.
4. Testez !

3.3 Développez le jeu de bataille

1. Créez un fichier de script PHP nommé bataille.php.


2. Ajoutez un require_once du fichier class.carte.inc.php

bataille.php
<?php
require_once 'class.carte.inc.php';
?>

Voir les illustrations en annexe

3. Déclarez et initialisez un tableau avec les 4 couleurs.


4. Déclarez et initialisez un tableau avec les 13 figures.
5. Déclarez un tableau qui représentera le jeu de 52 cartes.
6. Initialisez le jeu de cartes en utilisant les tableaux de figures et de couleurs.
7. Développez une procédure pour afficher le jeu de carte complet. Chaque carte sera affichée au moyen de sa
méthode getNom. La procédure AfficherJeu est à écrire dans un fichier de fonctions séparé.
8. Appelez cette procédure pour afficher le jeu de cartes après initialisation.
9. Testez

10. Mélangez le jeu de cartes. Principe :


On parcourt le jeu. Pour chaque indice on tire une position au hasard (un nombre entre 0 et indice dernière
cellule) et on échange les deux cartes.
// ici la fonction mt_rand retourne un nombre aléatoire compris entre 0 et 30 inclus,
$indHasard = mt_rand(0, 30);
11. Affichez le jeu de cartes après mélange des cartes
12. Testez

13. Définissez la couleur atout au hasard.


14. Distribuez le jeu à 2 joueurs. Utilisez 2 tableaux de 26 cartes.
15. Affichez les 2 jeux de cartes
16. Testez

17. Jouez en comptant les points. On compare la valeur des 2 cartes présentées.
• Si l'un seulement des 2 joueurs a une carte de la couleur atout, c'est lui qui remporte la somme des
valeurs des 2 cartes.
• Sinon, c'est le joueur dont la carte a le plus de valeur qui emporte la somme des valeurs des 2
cartes.
• En cas d'égalité des valeurs, aucun des 2 joueurs ne récupère les points.
18. Affichez le gagnant.
19. Testez !

Bloc2 – XP07 Bataille Page 2 / 3


BTS SIO Lycée Robert Schuman - Metz

4. ANNEXE : illustrations

$tbCouleurs Coeur Carreau Pique Trèfle

$tbFigures As Roi Dame Valet 10 9 8 7 6 5 4 3 2

// initialiser
$tbCartes AS de Roi de Dame de Valet de 10 de ... 4 de Trèfle 3 de Trèfle 2 de trèfle
coeur coeur coeur coeur coeur

// mélanger
$tbCartes 3 de Trèfle 10 de 2 de trèfle Valet de Roi de ... 4 de Trèfle AS de Dame de
coeur coeur coeur coeur coeur
indice i 0 1 2 3 4 49 50 51

// distribuer
$tbCartes Roi de ... 4 de Trèfle AS de Dame de
coeur coeur coeur
indice i 0 1 2 3 4 49 50 51

$tbJoueur1 3 de Trèfle 2 de trèfle ...


indice 0 1 2 3 4 25

$tbJoueur2 10 de Valet de ...


coeur coeur
indice 0 1 2 3 4 25

// jouer
$tbJoueur1 ...
indice 0 1 2 3 4 25

$tbJoueur2 ...
indice 0 1 2 3 4 25

Score joueur 1: 0 Score joueur 2: 0

Bloc2 – XP07 Bataille Page 3 / 3

Vous aimerez peut-être aussi