C# Player's Guide
J’ai appris le C# en environ 2 mois, avec le livre “The C# Player’s Guide”. C’est un livre en anglais qui enseigne le C# sous forme de jeu narré, avec des quêtes, des boss et de l’XP dans une centaine d’exercices.
Ce que j’ai appris
- Utiliser Visual Studio.
- Les bases du C# (syntaxe, commentaires, types…) et de .NET (autres langages, historiques…) :
- Logique de décision (if statement, switch, pattern matching…)
- Les boucles (while, do, for)
- Créer des méthodes, les surcharger…, passer par référence, méthode d’extension…
- La gestion de la mémoire (stack, heap)
- Les arrays, très différents des listes Python, car fixes et avec un seul type possible. énumérateurs.
- La programmation orientée objet :
- Les énumérateurs.
- Les tuples
- Les classes, ainsi que les propriétés, les membres statiques
- Les structs
- Les records
- Les generics
- Les interfaces
- Design orienté objet
- Les quatre fondamentaux de la programmation orientée objet : l’héritage, le polymorphisme, l’abstraction et l’encapsulation.
- J’ai appris à utiliser quelques classes fournies par .NET (Console, Time, Random, Dict…
- Des sujets plus avancés :
- La gestion des erreurs
- Les delegates et events
- Les expressions lambda
- La surcharge d’opérateur
- Les requêtes (SQL…)
- La gestion de fichiers externes
- La programmation asynchrone
- Les objets dynamiques
- La compilation
- D’autres plus petits sujets (manipulation binaire, classes partielles, itérateurs, etc.).
La fontaine aux objets
“The Fountain of object” est le premier grand défi du livre “The C# player’s guide”. C’est un défi de programmation orientée objet où l’on doit créer soi-même la structure du code en utilisant tous les fondamentaux de la POO: l’héritage, l’abstraction, l’encapsulation et le polymorphisme. J’ai utilisé tous les types de classes disponibles du C#, c’est-à-dire classe, struct, interface, énumérateur, records et même les generics. Le défi proposait un challenge principal ainsi que des extensions pour enrichir le jeu. J’ai choisi de faire les deux, le challenge principal et les 5 extensions.
Le jeu
Le jeu est une version revisitée du jeu du démineur : on est dans une grotte où l’on ne peut rien voir, on peut seulement sentir la présence de gouffres à proximité. Le but étant de rejoindre la fontaine aux objets. J’ai personnellement décidé de révéler le chemin par lequel était passé le joueur, ce qui m’a demandé de créer une interface graphique, là où le défi ne demandait que du texte.
Les niveaux sont générés aléatoirement.

Les deux versions
Après avoir complété la première version du jeu, j’ai découvert les codes d’échappement ANSI, permettant de colorier et de choisir la position du curseur. Inspiré par les premiers programmes réalisés avec ma calculatrice scientifique, j’ai donc créé une petite classe me permettant d’afficher des images d’une résolution jusqu’à 1300px de largeur, une fois le terminal dézoomé au maximum. Avec cette classe, j’ai recréé l’interface pour y afficher des images.
Pour la version avec image, j’ai fait le tile set avec Libre Sprite.


Projet de framework textuel
Après ce projet, j’ai codé un framework pour créer des jeux textuels facilement pour des Game Jams. J’ai fini toute la structure, mais finalement, je me suis mis à Unity. :D