-
Notifications
You must be signed in to change notification settings - Fork 0
Apprendre avec Dièse
Programme destiné aux nouveaux étudiants du CPLN pour découvrir et apprendre à code en C#.
Basé sur les projets tels que try Ruby ou tour of Go, l'idée est de plonger l'apprenant dans un univers où il devra se servir de C# pour faire progresser son personnage Dièse.
Un application C# découpée en deux fenêtres:
- une zone de code libre
- une zone de dessin dans laquelle sera affiché(e) Dièse.
+------------------+---------------------+
| Code C# | Zone de dessin |
| | ,,, |
| | (o.o) |
| | -'| || |
| | /|\ |
| | |
| | [ ] sac à dos |
+------------------+---------------------+
// Une bulle s'affiche pendant 50ms (et reste si dernière action)
say("Coucou");
// Une fenêtre demande des infos (MessageDialog)
var nom = question("Comment t'appelles-tu?");
// Puis les affiche.
say("Coucou {0}", nom);
// Dièse avance à la vitesse de n pixels/sec
avance(1);
// tourne à la vitesse de m deg/sec
tourne(90);
// l'élément sous Dièse disparait et s'affiche dans son sac à dos
ramasse();
for (var i=0; i < 4; i++) {
avance(1);
ramasse();
tourne(-90);
}
ramasse();
// lit la valeur du sac à dos.
var anciennePomme = valeur();
depose();
avance(1);
ramasse();
if (valeur() < anciennePomme) {
recule(1);
échange(); // dépose et récupère l'autre pomme.
anciennePomme = pomme();
avance(1);
}
void dessinerÉtoile(int taille, int branches) {
avance(10);
tourne(60);
// comme avancer mais va dessiner une ligne.
ligne(50);
// ...
}
var réponse = "N/A";
int nombreDeBranches;
while (!Int32.TryParse(nombreDeBranche, out nombreDeBranches)) {
réponse = question("Combien de branches à votre étoile?");
}
dessinerÉtoile(100, nombreDeBranches);
etc...
Gtk#- REPL
-
MonoGame(trop lourd) MonoCairo-
Windows.Forms
est le meilleur moyen d'être multiplate forme, in fine. - Scintilla.NET coloration syntaxique
- Aseprite création de sprites
- Superpowers Asset Pack (CC0)
-
Comment peut-on "simplement" définir des fonctions? Les
lambda
s c'est mignon mais un peu trop avancé pour un niveau 1ère année.Func<int,bool> positif = (x) => { return x > 0; }; Action<int> boucle = (x) => { gauche(x); haut(x); droite(x); bas(x); };
Solution: traduire du code à la volée avant de l'interpréter. Moche mais simple avec une bête regexp.
bool positif(int x) { return x > 0; }
-
Dessiner dans un widget avec
Cairo
. C'est simple mais vite lourdingue à réaliser.
Un nouvel étudiant peut être perdu dans tout un tas de termes nouveaux. Il est important de les présenter de manière simple.
http://www.programmingforbeginnersbook.com/blog/expand_your_programming_vocabulary/