Aller au contenu principal

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() et Console.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
info

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
info

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} !");
attention

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

  1. Créez un nouveau projet console C# :
    dotnet new console -n JeuRPG
    cd JeuRPG
  2. Ouvrez le dossier dans VS Code ou Visual Studio.
  3. Le fichier Program.cs est votre point d'entrée. Vous y écrirez tout le code de cette séance.

Test de mémorisation/compréhension


Quelle méthode C# lit une ligne saisie au clavier dans la console ?


Quelle collection C# est équivalente à `ArrayList` en Java mais avec un type paramétré ?


Que retourne `Console.ReadLine()` si l'utilisateur appuie sur Entrée sans rien saisir ?


Comment ajoute-t-on un élément à une `List<string>` nommée `noms` ?


Quel mot-clé permet de déclarer une méthode appartenant à la classe et non à une instance ?


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.


Bonne pratique - Initialisation avec 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.


Bonne pratique - Toujours valider la saisie

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.


Bonne pratique - for vs foreach

Utilisez 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

NotionRé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 statiqueAppartient à la classe, pas à une instance. Appelée directement sur le nom de la classe.
foreachParcourt tous les éléments sans accès à l'index.
forParcourt 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().