Hello, world

Étape 0

Votre tout premier programme :

  • Comment compiler et lancer un programme
  • Structure d'un programme et syntaxe
  • Afficher du texte à l'écran
  • Changer le style du texte

Aujourd'hui, on va regarder comment ce programme fonctionne et le personnaliser !

#include <Gamebuino-Meta.h>

void setup() {
  gb.begin();
}

void loop() {
  while(!gb.update());
  gb.display.clear();

  // C'est ici que le plus gros du programme se déroule
  gb.display.print("hello, world");
}

Comme vous avez pu vous en rendre compte, ce programme permet simplement d'afficher le texte hello, world sur votre Gamebuino (cf. image ci-dessous). Si tout s'est bien passé à lors de l'installation, vous obtenez quelque chose comme ceci :

Eh oui ! Afficher du texte sur l'écran est la première étape vers votre tout premier jeu ! ;)

Passons aux choses sérieuses ! On va décortiquer ce programme pour comprendre ce qui se passe.

La structure d'un jeu

Voici le squelette d'un programme pour la Gamebuino:

#include <Gamebuino-Meta.h>

void setup() {

}

void loop() {

}   

La structure générale du jeu est composée en 3 parties.

Sur la première ligne, on trouve #include <Gamebuino-Meta.h>. Cette ligne nous permet d'inclure la bibliothèque de Gamebuino (l'affichage, les boutons, etc.) nécessaire afin de gérer la console. Sans elle, le jeu ne pourra pas être exécuté.

La commande #include permet de réutiliser le code d'autres programmes externes. On la trouve au début des programmes. Dans notre premier programme, seule la bibliothèque Gamebuino est nécessaire.

Les deux autres éléments essentiels à un jeu Gamebuino sont les 2 fonctions setup et loop. Toutes les instructions situées entre les accolades { } seront exécutées quand la fonction sera appelée.

setup()

void setup() {
  gb.begin();
}

La fonction setup se situe donc entre les lignes 3 et 5. Elle est appelée automatiquement une fois au démarrage du jeu, puis loop s'exécute en boucle, indéfiniment... d'où son nom ;) Vous voyez que notre fonction setup ne contient qu'une instruction: gb.begin(). Cette instruction sert à initialiser la Gamebuino. C'est pour ça qu'il est nécessaire de l'exécuter une et une seule fois, au démarrage. Vous remarquerez que chaque instruction du programme est suivie d'un point-virgule (";") sans quoi vous auriez une erreur en essayant de compiler le programme.

loop()

void loop() {
  while(!gb.update());
  gb.display.clear();



  // C'est ici que le plus gros du programme se déroule
  gb.display.print("hello, world");
}

Les instructions situées dans loop sont exécutées en boucle.

while(!gb.update());

Cette instruction est également nécessaire dans tout programme Gamebuino. Elle va s'occuper de tout ce qui se passe en arrière-plan comme mettre à jour l'écran, regarder si les boutons ont été appuyés ou encore jouer les sons. De plus, elle s'occupe de limiter la vitesse à laquelle loop va s'exécuter afin de maintenir une vitesse de jeu constante. Par défaut, les jeux tournent à 25 images par seconde, ce qui signifie que la fonction loop est exécutée toutes les 0,04 seconde. C'est rapide, et c'est un bon compromis pour avoir des animations fluides sans demander trop de puissance de calcul.

Pour l'instant, je ne vous demande pas de vous casser la tête avec chaque mot mais de pouvoir reconnaître cette instruction pour que vous sachiez ce qu'elle fait. Encore une fois, c'est une instruction nécessaire pour faire un jeu Gamebuino :)

gb.display.clear();

Comme nous exécutons loop 25 fois par seconde, il faut effacer le contenu de l'écran avant de commencer à tracer l'image suivante, sinon, ça serait un joli bazar à l'écran ! C'est justement ce que fait gb.display.clear

gb.display.print("hello, world");

Nous avons fait le tour du squelette nécessaire pour faire un programme Gamebuino et nous allons donc pouvoir passer aux choses sérieuses ! Ici, gb indique qu'il s'agit d'une fonction qui concerne la Gamebuino (elle est apportée par la bibliothèque de la Gamebuino que nous avons ajouté en début de programme), et gb.display indique qu'on s'adresse plus particulièrement à l'écran. gb.display.print est une fonction qui sert à écrire une chaîne de caractères sur l'écran de la gamebuino. Les chaînes de caractères sont délimitées par des guillemets " ".

Les commentaires

Vous avez peut-être remarqué qu'on a sauté une ligne dans la fonction loop. C'est parce que c'est un commentaire.

// C'est ici que le plus gros du programme se déroule

Parfois on a besoin d'expliquer ce que fait une partie du programme en utilisant des commentaires. Les commentaires sont des lignes qui commencent par //. Ils sont ignorés par l'ordinateur lors de l'exécution du programme mais permettent d'ajouter des notes personnelles en langage parlé.

Les commentaires sont pratiques pour comprendre rapidement comment fonctionne un programme. Pensez au temps que vous gagnerez quand vous vous relirez dans un mois ;)

Remarques sur le C/C++ : les erreurs

Le langage C/C++ que vous êtes en train d'utiliser est sensible à la casse (rien à voir avec le fait de faire tomber votre programme par terre). Les majuscules et minuscules ont une importance : print n'est pas la même chose que Print. Si vous faites la faute, vous aurez une erreur au moment de compiler le programme !

Et n'oubliez pas les points-virgules à la fin de chaque instruction !

À vous de jouer!

Maintenant, vous pouvez écrire ce que vous voulez sur la Gamebuino. Et si vous nous composiez un petit poème ?

Partagez le résultat avec #gamebuino #helloworld pour célébrer votre tout premier programme ! :)

Astuce #1 Vous pouvez utiliser \n pour insérer des retours à la ligne dans votre texte.

Astuce #2 Vous pouvez changer la couleur du texte avec gb.display.setColor. Allez voir Graphics::setColor dans la Référence pour connaître la bonne syntaxe !

Astuce #3 Pour changer l'échelle du texte, il y a la fonction Graphics::setFontSize. Essayez maintenant de créer votre propre programme en suivant les astuces. Aidez-vous de la capture d'écran et du code ci-dessous.

En cas de doute, n'hésitez pas à relire le tutoriel pour mieux comprendre.

Exemple de solution

#include <Gamebuino-Meta.h>



void setup() {
  gb.begin();
}


void loop() {
  while(!gb.update());
  gb.display.clear();


  //Affichage du message à l'écran
  gb.display.print("'hello, world'\nest une tradition\ninstauree en\n\n");
  //Texte à l'échelle 2
  gb.display.setFontSize(2);
  gb.display.print("1978");
  //Retour à l'échelle 1 et changement de couleur
  gb.display.setFontSize(1);
  gb.display.setColor(BROWN);
  gb.display.print("\n\n\n       - GAMEBUINO");
}

Etape suivante