Bien, continuons de transposer les tutoriaux de Crait pour créer votre propre jeu. Au programme : Le stockage de données et les boucles : Make Your Own Arduboy Game: Part 3 - Storing Data & Loops disponible ici : Make Your Own Arduboy Game: Part 3 - Storing Data & Loops - Lessons - Arduboy
Les variables
Les ordinateurs travaillent beaucoup avec des données et font beaucoup de calculs. Pour pouvoir créer la plupart des jeux vidéo, vous devrez être en mesure de stocker des données, comme les meilleurs scores, la localisation des joueurs ou les vies restantes. Afin de se souvenir de la valeurs de ces données, un ordinateur doit réserver un espace de la mémoire pour les y stocker. Il peut ensuite les lire et les modifier.
Les boucles
Vous souvenez vous que j’ai dit que les ordinateurs devaient recevoir des instructions spécifiques ? Avez-vous déjà remarqué qu’au dos des bouteilles de shampoing il est indiqué : 1. Faire mousser, 2. Rincer, 3. Répéter ? Si un ordinateur recevait ces instructions, il serait coincé dans une boucle infinie de moussage, de rinçage et de répétition. En programmation, faire répéter des instructions en boucle peut être très utile et je vais ; dans un premier temps, vous montrer comment utiliser la fonction loop() pour ce faire.
Commencer
Nous allons créer un programme pour faire en sorte que notre console garde une trace d’un nombre et vous l’affiche au fur et à mesure qu’il augmente. Alors, Faisons le!
Commencez par récupérer le code du didacticiel précédent afin que nous puissions en tirer parti :
//Jonathan Holmes (crait)
//18 octobre 2016
// Impression de texte
#include <Gamebuino-Meta.h>
void setup() {
// placez votre code d’installation ici, à exécuter une fois:
gb.begin();
gb.display.clear();
gb.display.print(“Holmes est cool !”);
}
void loop() {
// placez votre code principal ici, pour qu’il s’exécute à plusieurs reprises:
}
Initialisation
Chaque fois que vous créez une variable, vous devez commencer par l’initialiser, ce qui consiste à réserver de la mémoire pour les données que vous voulez y stocker et à lui donner un nom. Vous l’avez déjà fait mais vous ne vous en êtes pas rendu compte. Il existe différents types de variables que vous pouvez initialiser tels que : entiers, booléens, caractères, objets, doubles et bien d’autres.
Nous allons initialiser notre nombre qui va augmenter comme un entier. Cela signifie essentiellement que c’est un nombre entier, sans fractions. Les entiers apparaîtront comme int dans le code C++.
Pour initialiser une variable, il faut renseigner 3 choses : Le type de la variable, son nom puis un point-virgule. Si nous voulons créer une variable de type entier que nous appellerons counter par exemple. Voici le code : int counter ; Mettez le sous la ligne qui permet d’inclure la librairie de la Gamebuino-META.
L’affectation
Une fois que vous avez créé une variable, vous pouvez lui donner une valeur. C’est ce qu’on appelle l’affectation. Pour le moment, nous ne savons pas encore quelle est la valeur du compteur car nous ne lui en avons jamais donné. Théoriquement, la variable pourrait donc avoir une valeur quelconque.
Nettoyons le code en supprimant la ligne gb.display.print(“Holmes est cool !”);
De la fonction setup() . Au lieu de cela, plaçons y la ligne d’affectation pour initialiser la variable entière counter à 0 :
counter = 0 ;
Cette ligne de code indique que la valeur du compteur est maintenant égale à 0. Au lieu de 0, vous pouvez mettre un autre nombre entier, une formule mathématique ou d’autres choses que j’expliquerai un peu plus tard dans ce tutoriel.
Voici à quoi votre code devrait ressembler :
//Jonathan Holmes (crait)
//18 octobre 2016
// Impression de texte
#include <Gamebuino-Meta.h>
void setup() {
// placez votre code d’installation ici, à exécuter une fois:
gb.begin();
gb.display.clear();
counter = 0;
}
void loop() {
// placez votre code principal ici, pour qu’il s’exécute à plusieurs reprises:
}
Incrémentation
Voilà ce que nous voulons faire : notre programme répétera encore et encore quelques instructions simples. Fondamentalement, nous allons changer la valeur de counter , puis afficher cette valeur, puis répéter ces opérations. Pour ce faire, nous devons ajouter du code dans la fonction loop().
counter = counter + 1 ;
Cette ligne de code signifie que vous attribuez à la variable counter sa propre valeur plus 1 ou, en d’autres termes, la valeur de la variable counter est maintenant égale à la valeur de counter + 1.
Affichage de la valeur de la variable
Maintenant que la variable augmente, affichons la ! Rappelez-vous comment nous avons utilisé gb.display.print pour imprimer du texte à l’écran ? Eh bien, nous pouvons également utiliser cette même fonction pour afficher des nombres à l’écran. Ajouter gb.display.print (compteur); .
Si vous deviez exécuter ce code tel quel, maintenant, l’écran de la META se remplirait de chiffres alors pour éviter cela, nous allons effacer ce qui était auparavant à l’écran. Nous allons donc déplacer gb.display.clear(); au début de la fonction loop().
Avez-vous déjà utilisé une machine à écrire ? Chaque fois que vous tapez des lettres, le curseur se déplace. La fonction gb.display.print() fonctionne de manière similaire. Chaque fois que vous utilisez cette fonction, elle déplace le curseur. Si nous utilisons encore la fonction dans la boucle, l’affichage se fera après ce qui a déjà été affiché. Pour notre programme, nous devons donc réinitialiser le curseur en haut de l’écran. Nous pourrions utiliser la commande : gb.display.setCursor(0, 0); mais dans notre cas, cela sera inutile car cette opération est déjà effectuée lors de l’appel de la fonction : gb.display.clear(); .
Nous allons également ajouter une ligne au tout début de la procédure loop. Cette ligne est propre à la META: while(!gb.update());
Cette instruction est 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, jouer les sons et 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 
Le code terminé
J’ai ajouté quelques commentaires, mais votre code devrait ressembler à ceci :
//Jonathan Holmes (crait)
//18 octobre 2016
// Impression de texte
// Inclure la bibliothèque
#include <Gamebuino-Meta.h>
// Initialiser notre variable counter
int counter;
// La fonction setup() s'exécute une fois lorsque vous allumez votre console
void setup() {
//Démarrer votre Gamebuino META proprement
gb.begin();
// Affecter 0 à la valeur de notre variable counter pour l’initialiser
counter = 0;
}
// La fonction loop() se répète indéfiniment une fois que la fonction setup() est traitée.
void loop() {
// Instruction de gestion et de régulation de la META
while(!gb.update());
// Effacer tout ce qui est imprimé à l'écran
gb.display.clear();
// Augmente la valeur du compteur de 1
counter = counter + 1;
//Affiche à l’écran la valeur de counter ;
gb.display.print(counter);
}
Exécuter le code
Connectez votre console à votre ordinateur et téléchargez y ce code. Votre Gamebuino META devrait commencer à compter !
Et après?
Dans le prochain didacticiel, nous apprendrons à tester les valeurs des variables, des booléens et à appuyer sur des boutons !
Crédits
J’ai écrit ce tutoriel en adaptant pour la META et en traduisant en français le tutoriel de Crait créé pour l’Arduboy : Make Your Own Arduboy Game: Part 3 - Storing Data & Loops - Lessons - Arduboy
Suivre Crait sur Twitter via l’URL : http://www.twitter.com/crait.