diff --git a/MiniJeuBourin/Program.cs b/MiniJeuBourin/Program.cs index a887471..3afcc3f 100644 --- a/MiniJeuBourin/Program.cs +++ b/MiniJeuBourin/Program.cs @@ -1,8 +1,4 @@ -// See https://aka.ms/new-console-template for more information -using System; -using System.Runtime.CompilerServices; - -class Program() +class Program() { private static Dictionary _scores; @@ -27,27 +23,25 @@ class Program() var random = new Random(); var choix_possibles = new[] { "pierre", "papier", "ciseaux" }; _scores = new Dictionary() - { - {"joueur", 0}, - {"ordi", 0} - }; + { + {"joueur", 0}, + {"ordi", 0} + }; + // On boucle à jusqu'a que le joueur ou l'utilisateur arrive à 3. while (_scores["joueur"] < 3 && _scores["ordi"] < 3) { Console.WriteLine($"\nScore : Toi {_scores["joueur"]} - {_scores["ordi"]} Ordinateur"); Console.WriteLine("Choisis (pierre, papier, ciseaux) : "); var joueur = Console.ReadLine().ToLower(); - if (!choix_possibles.Contains(joueur)) { Console.WriteLine("❌ Choix invalide !"); continue; } - var ordi = random.GetItems(choix_possibles, 1).FirstOrDefault(); Console.WriteLine($"🤖 L'ordinateur a choisi : {ordi}"); - // Déterminer le gagnant if (joueur == ordi) { diff --git a/MiniJeux/Tests/MiniJeux.Test/MiniJeux.Test.csproj b/MiniJeux/Tests/MiniJeux.Test/MiniJeux.Test.csproj index 94445b1..1e59e40 100644 --- a/MiniJeux/Tests/MiniJeux.Test/MiniJeux.Test.csproj +++ b/MiniJeux/Tests/MiniJeux.Test/MiniJeux.Test.csproj @@ -12,6 +12,7 @@ + @@ -21,5 +22,4 @@ - diff --git a/MiniJeux/Tests/MiniJeux.Test/PpcTest.cs b/MiniJeux/Tests/MiniJeux.Test/PpcTest.cs index 6ca7b71..226c41f 100644 --- a/MiniJeux/Tests/MiniJeux.Test/PpcTest.cs +++ b/MiniJeux/Tests/MiniJeux.Test/PpcTest.cs @@ -1,10 +1,13 @@ -namespace MiniJeux.Test; +using NFluent; + +namespace MiniJeux.Test; public class PpcTest { [Fact] public void Test1() { - + var i = 1; + Check.That(i).IsEqualTo(1); } } diff --git a/readme.md b/readme.md index afff99c..497b9f0 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,11 @@ # Découverte du Developpement 1. Explication d un mini jeu "pierre, feuille, ciseaux" -2. Modification du mini jeu pour y intégrer des concepts de développement (refactoring, des tests (on va trouvé des bugs !) , des interfaces, des injections de dépendance, classe). +2. Modification du mini jeu pour découvirir des concepts de développement, ça s'appelle le "refactoring" + * Ajout de tests (on va trouvé des bugs !) + * Ajout de classe, interface + * Pourquoi utiliser les injections de dépendance. + * Pourquoi utiliser le polymorphisme. 3. Ajout d un mini jeu "le pendu" (si il nous reste du temps) @@ -14,4 +18,125 @@ * [Sdk .net](https://dotnet.microsoft.com/fr-fr/download/dotnet/10.0) * Les Extensions C# * [.NET Install Tool](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.vscode-dotnet-runtime) - * [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) \ No newline at end of file + * [C#](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) + +# Introduction aux Concepts Fondamentaux + +## 📝 Les Variables : Les Boîtes de votre Programme +csharp +``` csharp +// Les variables sont comme des boîtes étiquetées + +// Boîte "age" contient le nombre 25 +int age = 25; +// Boîte "nom" contient du texte +string nom = "Alice"; +// Boîte "prix" contient un nombre décimal +double prix = 19.99; +// Boîte "estActif" contient VRAI ou FAUX +bool estActif = true; +// Boîte "lettre" contient un seul caractère +char lettre = 'A'; + +Console.WriteLine($"Bonjour {nom}, tu as {age} ans."); +// Affiche : Bonjour Alice, tu as 25 ans. +``` +Pense à : Une variable = une étiquette + une valeur dans une boîte en mémoire. +___ + +## 🔀 Les Conditions : Les Carrefours de votre Programme +``` csharp + +// IF/ELSE : Prendre des décisions comme dans la vie +int temperature = 22; + +if (temperature > 30) +{ + Console.WriteLine("🌡️ Il fait très chaud !"); +} +else if (temperature > 20) +{ + Console.WriteLine("😊 Il fait bon !"); // Celle-ci s'exécutera +} +else +{ + Console.WriteLine("🧥 Il fait frais, prends un manteau"); +} + +// SWITCH : Pour plusieurs chemins précis +string jour = "Lundi"; + +switch (jour) +{ + case "Lundi": + Console.WriteLine("📅 Début de semaine !"); + break; + case "Vendredi": + Console.WriteLine("🎉 Bientôt le week-end !"); + break; + default: + Console.WriteLine("📆 Un jour quelconque..."); + break; +} +``` +Pense à : if = "Si... alors..." comme dans un livre dont vous êtes le héros. +___ +## 🔁 Les Boucles : Les Répétitions Intelligentes +### WHILE : "Tant que..." +``` csharp +// Comme un gardien qui dit "Tant que la condition est vraie, continue !" +int compteur = 0; +// Tant que compteur est inférieur à 5 +while (compteur < 5) +{ + Console.WriteLine($"Tour numéro {compteur + 1}"); + compteur++; // On augmente le compteur à chaque tour +} +// Résultat : Affiche "Tour numéro 1" à "Tour numéro 5" +``` +### FOR : Le Compteur Automatique +``` csharp + +// Parfait quand on sait combien de fois on veut répéter +// for(initialisation; condition; incrémentation) +for (int i = 0; i < 3; i++) // i part de 0, continue tant que i<3, augmente de 1 +{ + Console.WriteLine($"Message {i + 1}"); +} +// Résultat : Message 1, Message 2, Message 3 +``` +___ +### 📦 Les Tableaux : Les Rangements Organisés +```csharp + +// Un tableau = une étagère avec plusieurs cases numérotées +int[] scores = new int[3]; // Étiquette "scores" avec 3 cases +scores[0] = 95; // Case numéro 0 (première case) +scores[1] = 87; // Case numéro 1 +scores[2] = 72; // Case numéro 2 + +// Plus simple : initialisation directe +string[] fruits = { "Pomme", "Banane", "Orange" }; + +Console.WriteLine($"Mon fruit préféré : {fruits[0]}"); // Pomme +Console.WriteLine($"J'ai {fruits.Length} fruits"); // 3 +``` +Pense à : Les indices commencent à 0 ! Première case = [0], deuxième = [1], etc. + +### 📦 Les listes : Rangements "Empilé" +```csharp +// Une liste +List scores = new List(); // Étiquette "scores" avec 3 cases +scores.Add(95); // Element numéro 0 (première case) +scores.Add(87); // Element numéro 1 +scores.Add(72); // Element numéro 2 +``` +___ +## 📊 Résumé des Concepts +| Concept | Analogie | Exemple C# | À retenir | +| ------- | -------- | ---------- | --------- | +|Variable| Une boîte étiquetée| int age = 25;| Stocke une |valeur +|Condition | Un carrefour| if (x > 10) { ... } | Prend une décision | +|Boucle| Un disque qui tourne| for (int i=0; i<5; i++) |Répète des actions +|Tableau| Une étagère à cases| string[] noms = {"A","B"}; |Stocke plusieurs valeurs +