Katas de démarrage
Quelques katas pour pratiquer les bases de PHP en accompagnement du cours.
Le but de ces minis ateliers est de vous familiariser avec les bases de PHP à travers quelques katas simples. Ces ateliers sont complémentaires au cours sur les bases de PHP et vous permettront de pratiquer les concepts appris.
introduction
Pour tout les katas suivants, vous utiliserez le site suivant pour les réaliser : https://onlinephp.io/.
Astuce
Online PHP est un site permettant d'exécuter du code PHP en ligne, dans un environnement simplifié. Il est idéal pour tester rapidement des solutions sans avoir à configurer un serveur local.
Ce site a certains avantages pour apprendre les bases de PHP :
- Il permet de lancer rapidement des scripts PHP sans configuration préalable.
- Il offre un retour immédiat sur le code exécuté, ce qui facilite le débogage.
- Il est dépourvu d'auto-complétion, ce qui vous oblige à taper le code manuellement et à vérifier les erreurs vous-même.
Pour chacun des katas suivants, vous devrez écrire un script PHP qui résout le problème posé. Les katas ne se suivent pas, donc vous pouvez effacer vos anciennes solutions.
Attention
Pour les katas suivants, je vous déconseille fortement d'utiliser l'IA. Vous allez apprendre les bases du langage, et il est essentiel de pratiquer sans aide extérieure, au risque de ne pas comprendre les concepts fondamentaux.
Si vous utilisez un outil pour faire des recherches, assurez-vous de bien comprendre le code que vous trouvez et d'être capable de l'expliquer.
La carte d'identité
Objectif : Créer une carte d'identité pour un étudiant en utilisant des variables et l'interpolation de chaînes.
La carte d'identité devra avoir ce format :
===== CARTE D'IDENTITÉ =====
Nom : [NOM]
Prénom : [PRÉNOM]
Année : [ANNÉE]ème année
============================Consigne
Au début de votre script, déclarez les variables suivantes :
$nom: le nom de l'étudiant$prenom: le prénom de l'étudiant$annee: l'année d'étude de l'étudiant
Utilisez en suite l'interpolation de chaînes pour afficher la carte d'identité de l'étudiant.
Astuce
Vous pouvez utiliser de l'interpolation simple, la syntaxe heredoc ou la syntaxe nowdoc.
Le générateur de badge
Objectif : Écrire un script PHP qui génère un badge personnalisé pour un utilisateur, en utilisant des variables, des constantes et de l’interpolation de chaînes.
Le but sera d'aboutir à un badge au format suivant :
--------------------------------------------------
| NAME : [NOM] |
| LEVEL : [NIVEAU] |
| ROLE : [ROLE] |
| AVATAR : [AVATAR] |
| COLOR : [COULEUR] |
--------------------------------------------------Consigne
Déclarez les constantes suivantes :
BADGE_COLOR: Couleur du badge (ex: "bleu").DEFAULT_AVATAR: URL d’un avatar par défaut (ex: "https://example.com/avatar.png").
Déclarez les variables suivantes pour un utilisateur :
$name: Nom de l’utilisateur (ex: "Alice").$level: Niveau de l’utilisateur (ex: 5).$isAdmin: Statut administrateur (booléen, ex: true).$avatar: URL de l’avatar (utilisez DEFAULT_AVATAR si non spécifiée).
Effectuez les traitements suivants :
- Si
$isAdminest vrai, afficher "ADMIN" en rôle, sinon "USER". - Si
$levelest supérieur ou égal à 10, afficher "(Expert)" après le niveau.
Affichez le badge.
Astuce
Quelques indices :
- Dans l'exemple, la chaine
---fait 50 caractères et est construite à l'aide de la fonctionstr_repeat(). - La fonction
str_pad()peut être utilisée pour ajuster la longueur des chaînes.- vous remarquerez que les "labels" de lignes (e.g.
NAME,LEVEL, etc.) font toujours la même longueur, et que la chaine doit faire 50 caractères ; pratique pour calculer le chiffre à donner àstr_pad().
- vous remarquerez que les "labels" de lignes (e.g.
- L'interpolation de chaine, ou les syntaxes heredoc et nowdoc peuvent être compliqués ici. Pour vous simplifier la tâche, n'utilisez qu'une variable où vous concaténerez chaque ligne avec
$myVar .= "...".
Documentations :
Le juste prix
Objectif : Écrire un script qui devine un nombre caché en utilisant uniquement des opérateurs, des conditions et des comparaisons. Le nombre caché est fixe (pas de rand), et le script doit donner des indices basés sur des essais prédéfinis.
On cherchera à produire le résultat suivant pour :
- un nombre caché de 42
- les essais suivants : 30, 50, 42, 10
Indice : Le nombre est pair.
Essai : 30 | Trop bas ! | Écart : 12
Essai : 50 | Trop haut ! | Écart : 8
Essai : 42 | Bravo ! Vous avez trouvé le nombre caché : 42 ! | Écart : 0
Nombre total d'essais : 3Consigne
Déclarez les variables suivantes :
$nombreCache: Un nombre caché fixe (ex: 42).$essais: Un tableau d’essais prédéfinis (ex: [30, 50, 42, 10]).
Pour chaque essai dans $essais :
- Comparez l’essai avec
$nombreCache. - Affichez un message en utilisant des conditions :
- "Trop bas !" si l’essai est inférieur.
- "Trop haut !" si l’essai est supérieur.
- "Bravo ! Vous avez trouvé le nombre caché : [NOMBRE] !" si l’essai est égal.
Pour chaque essai, affichez l’écart absolu avec $nombreCache (ex: "Écart : 12").
Vous devrez arrêter les essais si le nombre est trouvé.
Affichez le nombre total d'essais à la fin.
Astuce
Quelques indices :
- Le tableau se déclare comme suit :
$essais = [30, 50, 42, 10]; - Vous pouvez accéder à la taille d'un tableau avec
sizeof(). - Vous pouvez utiliser la syntaxe
$essais[$i]pour accéder à un élément spécifique du tableau. - Une boucle
forpeut être utilisée pour itérer à travers les éléments du tableau, mais est-ce la bonne solution ici ?
Le gestionnaire de potions magiques
Objectif : Écrire un script PHP qui simule un inventaire de potions magiques. Vous devrez utiliser des tableaux associatifs, des boucles, et des fonctions de manipulation de tableaux pour gérer les potions.
Consigne
Déclarez un tableau associatif $potions où chaque clé est le nom d'une potion et chaque valeur est un tableau associatif contenant :
- quantite : La quantité disponible (ex: 5).
- effet : Une description de l'effet (ex: "Soigne 50 PV").
- prix : Le prix en gallions (ex: 10).
Exemple :
$potions = [
"Potion de soin" => ["quantite" => 5, "effet" => "Soigne 50 PV", "prix" => 10],
"Potion de mana" => ["quantite" => 3, "effet" => "Restaure 30 points de mana", "prix" => 15],
"Potion de force" => ["quantite" => 2, "effet" => "Augmente la force de 10", "prix" => 20],
];Affichez l'inventaire :
- Parcourez le tableau avec une boucle foreach et affichez chaque potion sous la forme :
[NOM] : [QUANTITÉ] x [PRIX] gallions - Effet : [EFFET]Calculez la valeur totale de l'inventaire :
- Utilisez une boucle pour calculer la somme de quantite * prix pour chaque potion.
Ajoutez une potion :
- Ajoutez une nouvelle potion au tableau (ex: "Potion d'invisibilité" avec quantite => 1, effet => "Rend invisible", prix => 50).
Trouvez la potion la plus chère :
- Parcourez le tableau pour trouver la potion avec le prix le plus élevé et affichez son nom et son prix.
Le simulateur de duel de sorts
Objectif : Créer un ensemble de fonctions pour simuler un combat de sortilèges. Chaque fonction représentera un sortilège différent, avec des effets variés.
On obtiendra un résultat similaire à ceci :
Lancement du sort : Boule de feu !
Dégâts infligés : 25
Soins appliqués : +20 PV !
Gandalf - PV: 120, Mana: 40Consigne
Créez une fonction lancerSort :
- Paramètres :
$sort(chaîne, nom du sort),&$mana(entier, quantité de mana, passé par référence). Fonctionnement : - Affichez "Lancement du sort : [SORT] !".
- Réduisez $mana de 10 (simule la consommation de mana).
- Retournez true si le sort est lancé (si
$manaétait suffisant), sinon false.
Créez une fonction soigner :
- Paramètres :
&$pv(entier, points de vie, passé par référence),$quantite(entier, quantité de soins). Fonctionnement : - Augmentez
$pvde$quantite. - Affichez "Soins appliqués : +[QUANTITÉ] PV !".
Créez une fonction calculerDegats :
- Paramètres :
$niveau(entier, niveau du sort),$resistance(entier, résistance de la cible). Fonctionnement : - Calculez les dégâts avec la formule :
($niveau * 5) - $resistance. - Retournez la valeur des dégâts (minimum 0).
Créez une fonction afficherEtat :
- Paramètres :
$nom(chaîne, nom du personnage),$pv(entier),$mana(entier). Fonctionnement : - Affichez l'état du personnage sous la forme : "[$nom] - PV: [$pv], Mana: [$mana]"
Simulez un combat :
- Initialisez les variables
$pv = 100,$mana = 50, et$nom = "Gandalf". - Lancez le sort "Boule de feu" avec
lancerSort. - Calculez les dégâts infligés à un ennemi avec
$resistance = 15et$niveau = 8. - Appliquez des soins avec soigner (
$quantite = 20). - Affichez l'état final avec
afficherEtat.