1) Révisions C#
Objectifs de la séance
- Revoir les types primitifs, les méthodes statiques et les boucles en C#
- Manipuler
List<T>pour stocker des éléments typés - Utiliser
Console.ReadLine()etConsole.WriteLine()pour interagir avec l'utilisateur - Poser les bases du projet RPG qui sera enrichi tout au long des séances
Notions théoriques
Types et variables
En C#, chaque variable a un type déclaré explicitement (ou inféré avec var).
int age = 17;
string prenom = "Alice";
double taille = 1.72;
bool estActif = true;
var score = 100; // le compilateur infère int
var est pratique mais réservé aux cas où le type est évident à la lecture. Pour les propriétés de classe, préférez toujours le type explicite.
Méthodes statiques
Une méthode statique appartient à la classe, pas à une instance. On l'appelle directement sur la classe.
class Utilitaire
{
public static int Doubler(int x) => x * 2;
public static void Saluer(string nom)
{
Console.WriteLine($"Bonjour, {nom} !");
}
}
// Appel sans créer d'objet
int resultat = Utilitaire.Doubler(5); // 10
Utilitaire.Saluer("Alice");
List<T>
List<T> est la collection générique la plus utilisée en C#. Elle remplace avantageusement les tableaux fixes quand le nombre d'éléments peut varier.
List<string> noms = new List<string>();
noms.Add("Alice");
noms.Add("Bob");
noms.Add("Carol");
Console.WriteLine(noms.Count); // 3
Console.WriteLine(noms[0]); // Alice
foreach (string nom in noms)
{
Console.WriteLine(nom);
}
noms.Remove("Bob");
Console.WriteLine(noms.Count); // 2
Avec C# 9+, vous pouvez écrire new() au lieu de new List<string>() quand le type est déjà connu du compilateur : List<string> noms = new();
Saisie utilisateur
Console.Write("Entrez votre nom : ");
string? saisie = Console.ReadLine();
// ReadLine() peut retourner null si le flux est fermé
// On utilise ?? pour fournir une valeur par défaut
string nom = saisie ?? "Inconnu";
Console.WriteLine($"Bienvenue, {nom} !");
Console.ReadLine() retourne string? (nullable). Vous pouvez soit tester if (saisie != null), soit utiliser l'opérateur ?? pour une valeur par défaut, soit ajouter ! pour affirmer que la valeur n'est pas null (à utiliser avec prudence).
Mise en place de l'environnement
- Créez un nouveau projet console C# :
dotnet new console -n JeuRPGcd JeuRPG
- Ouvrez le dossier dans VS Code ou Visual Studio.
- Le fichier
Program.csest votre point d'entrée. Vous y écrirez tout le code de cette séance.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Vous allez créer la première ébauche du jeu RPG : un programme qui gère une liste de noms de personnages et permet à l'utilisateur d'en ajouter un.
Étape 1 — Créer une liste de noms prédéfinis
Déclarez une List<string> nommée personnages et ajoutez-y au moins trois noms.
new()En C# 9+, List<string> personnages = new(); est équivalent à new List<string>(). Le compilateur infère le type depuis la déclaration à gauche. Cette syntaxe est plus concise et recommandée dans le code moderne.
Étape 2 — Saisir un nouveau nom et l'ajouter à la liste
Demandez à l'utilisateur de saisir un nom de personnage, puis ajoutez-le à la liste.
Ne faites jamais confiance à une saisie utilisateur sans vérification. Ici, on vérifie que la chaîne n'est pas vide avant de l'ajouter. Dans les prochaines séances, vous étendrez ces validations aux propriétés des objets.
Étape 3 — Afficher tous les personnages
Parcourez la liste et affichez chaque nom avec son numéro.
for vs foreachUtilisez foreach quand vous n'avez pas besoin de l'index. Utilisez for quand vous avez besoin de la position (afficher un numéro, modifier un élément). Ici, afficher le numéro justifie le for.
📌 Une solution
Ce qu'il faut retenir
| Notion | Résumé |
|---|---|
List<T> | Collection générique redimensionnable. .Add(), .Remove(), .Count, accès par index [i]. |
Console.ReadLine() | Lit une ligne saisie au clavier. Retourne string? (peut être null). |
?? | Opérateur null-coalescing : retourne la valeur de droite si la gauche est null. |
| Méthode statique | Appartient à la classe, pas à une instance. Appelée directement sur le nom de la classe. |
foreach | Parcourt tous les éléments sans accès à l'index. |
for | Parcourt avec un compteur, utile quand on a besoin de la position. |
Aperçu de la prochaine séance
Dans la prochaine séance, vous allez transformer ces noms en véritables objets. Vous créerez une classe Personnage avec des propriétés C# (Nom, PointsDeVie, Force) et un constructeur paramétré. Fini les simples chaînes de caractères : vos personnages auront des caractéristiques, et vous apprendrez à les afficher proprement grâce à ToString().