De quoi « codage » est-il le nom ?

Barcode

À l’origine était le verbe et le verbe s’est fait code.
(Livre de Jean-François, 14, 5)

La première fois que l’on m’a interpellé en me demandant « alors, comme cela, vous pratiquez des activités de codage avec les enfants ? », j’ai eu un instant de stupeur, voire de panique. « Hein ? Quoi ? Comment ? C’est à moi que l’on parle ? C’est quoi ce langage ? » J’ai imaginé les enfants avec des code-barres dans le cou. Pratique ! « Est-ce que Leïla est revenue aujourd’hui ? Elle était malade hier. – Oui, on l’a scannée ce matin. » Avant de réaliser ce que mon interlocuteur voulait signifier par codage. Cela aurait pu ne pas m’inquiéter si le mot n’avait fini par se répandre officiellement comme une traînée de poudre. Régulièrement on me parle de codage et je suis censé pratiquer le codage.

Abjection, votre honneur ! Comme on est codeur, développeur, programmeur mais sûrement pas programmateur, on fait du code, on aligne des lignes de code et non de codage.

L’historien qui sommeille en moi s’est réveillé en sursaut et a entrepris de dépoussiérer les parchemins et les cartulaires pour retrouver l’origine de ce terme. Je ne suis pas linguiste mais je pense ne pas être trop loin de la vérité.

Hypothèse 1 : les coding-goûters ayant rencontré un certain succès, le terme est remonté en haut lieu et a bien évidemment nécessité une traduction immédiate, plutôt que d’effectuer quelques petites recherches et découvrir le mot « code ».

Hypothèse 2 : je n’en ai pas d’autre et c’est bien dommage.

Scratch : un jeu vidéo spatial (tutoriel) – partie 2

Étiquettes

, , ,

Galaxian

Chose promise, chose due. Poursuivons les aventures de notre vaisseau spatial assailli par des (presque) hordes d’aliens. Réglons tout d’abord le premier souci : si vous avez opté pour la possibilité de faire pivoter le vaisseau, celui-ci ne tire cependant que vers le haut. Plutôt gênant. Pour y remédier, j’ai tout simplement créé une variable (une variable étant un espace permettant de stocker une information : texte ou valeur) qui va permettre de conserver la valeur d’orientation du vaisseau et de la réutiliser.

Modifions donc notre code comme suit sur le sprite « spaceship ».

Degrees

Ajoutons dans les mouvements du vaisseau les instructions pour stocker cette valeur.

spaceship moves 2

Enfin, orientons la balle ou plutôt notre super arme intergalactique en fonction de cette dernière.

ball orientation

C’est déjà beaucoup mieux. Mais cela manque un peu de son. Par facilité, je vais utiliser les sons propres à la bibliothèque de Scratch mais rien ne vous empêche d’ajouter vos propres sons. Modifions ainsi le code de la balle.

Son ball

On n’utilise pas la commande « Jouer le son ‘pop’ jusqu’au bout » car celle-ci bloquerait l’exécution du script le temps d’entendre le son. Avec « Jouer le son ‘pop' », le son est joué mais les commandes qui suivent sont exécutées immédiatement et donc en parallèle. « Jouer le son ‘XXX’ jusqu’au bout » nous sera utile par exemple pour une musique, si vous souhaitez ajouter un fond sonore au jeu. On peut ainsi charger une musique dans la partie « sons » du décor et ensuite la jouer en boucle. Pensez culture libre (à partager sans modération !) en utilisant des sites comme CCMixter, Jamendo, Auboutdufil, Dogmazic et bien sur l’incontournable bibliothèque d’Alexandrie ou caverne d’Ali Baba, Archive.org. Pour ma part, j’ai récupéré une de mes productions ambient que vous pouvez retrouver notamment sur mon Bandcamp en téléchargement libre et gratuit.

musique de fond

Occupons-nous maintenant de nos aliens. J’ai ajouté plusieurs costumes différents en récupérant sur le site OpenClipArt plusieurs images de vaisseau spatial. J’en ai profité pour changer le costume du sprite « spaceship » pour quelque chose de plus moderne. Pour les aliens, j’ai chargé plusieurs costumes que j’ai respectivement nommés UFO1, UFO2, UFO3 et UFO4. C’est très important que les noms soient similaires car cela permet d’ajouter un peu d’aléatoire dans le choix des costumes grâce à la modification suivante du code de notre alien (ex – « bananas »).

costumes UFO

Comme vous pouvez le remarquer, les aliens se mettent à la file et arrivent un par un, ce qui est loin de rendre notre jeu passionnant. Nous allons leur permettre d’arriver par vagues de manière aléatoire. Pour cela, il faut utiliser la fonction « clone » de Scratch. Un clone n’est autre qu’une copie de votre sprite à laquelle on va pouvoir donner un certain nombre d’instructions. Nous modifions donc le code de notre alien comme ceci.

Code Alien

Cela reste encore assez facile, tout simplement parce que le temps de « renouvellement » de notre alien est compris entre 1 et 5 secondes. Cinq secondes dans un jeu vidéo, c’est long. De même, la vitesse de déplacement des aliens est assez lente (4 secondes pour atteindre le bas de l’écran). Nous allons donc ajouter un peu de difficulté au fur et à mesure du jeu, c’est-à-dire diminuer le temps d’attente et augmenter la vitesse de déplacement chaque fois que le joueur abat dix aliens. Vous allez voir que rapidement cela va devenir très instable. Pour cela, je vais créer trois variables supplémentaires : une pour le temps d’attente, une pour la vitesse et enfin une troisième qui va me permettre de calculer de dix en dix pour le score.

Alien Code 2

Et voila le travail ! Au bout d’un certain temps, l’espace devient plus fréquenté que l’autoroute Lille-Dunkerque un vendredi soir à 18h. Néanmoins pour corser le tout, on peut dupliquer le sprite de notre alien en prenant soin sur sa copie de créer une nouvelle variable pour la coordonnée X sinon nos deux sprites seront à la même position car se référant à la même coordonnée X.

Le jeu est-il fini ? Non. Il s’agit plus d’un moteur de jeu que d’un jeu vidéo. Il reste encore beaucoup de choses à faire pour lui donner un aspect un peu plus pro. Pas de code pour l’instant. Je vous laisse chercher. La suite au… prochain épisode !

Scratch : un jeu vidéo spatial (tutoriel) – partie 1

Étiquettes

, , , , , ,

Galaxie

Celui-là, je le dédie à quelqu’un dont le prénom commence par un Z et qui se reconnaîtra sans aucun souci. 😉 Nous commençons aujourd’hui un tutoriel en deux parties d’un petit jeu sans prétention mais qui permettra de poser les bases d’un jeu vidéo type Galaxian (dont seuls les plus de 30 ans se souviendront sûrement).

Pour une fois, nous n’allons pas supprimer le chat. Il nous sera utile par la suite pour créer le décor. Ajoutons par contre un sprite qui soit orienté vers le haut de l’écran.

spaceship

Commençons par faire bouger notre sprite en lui permettant d’aller de haut en bas et de gauche à droite. Si vous avez lu mon précédent article sur la gestion des touches, vous ne vous étonnerez pas de la méthode.

spaceship moves

On peut aussi imaginer la possibilité de le faire pivoter en utilisant par exemple les touches « d » et « f », « espace » servant pour tirer. On n’oublie pas non plus de modifier sa taille, ni de le positionner correctement dès le début du programme. Pour ce tutoriel, j’utilise les graphismes de la bibliothèque de Scratch mais je vous rappelle qu’il existe l’excellent site OpenClipArt qui regorge de ressources. Je vous conseille cependant pour l’instant de vous contenter du premier code car faire pivoter complique quelque peu le code par la suite. Nous y reviendrons.

spaceship move 2

Vous n’êtes pas sans avoir remarqué que notre vaisseau évolue sur un fond blanc. Pour ce qui est de représenter l’espace, on a déjà vu plus crédible. C’est là que le chat nous vient en aide. Nous allons en effet créer un fond noir avec l’outil de dessin des décors (outil « pot de peinture »), puis au hasard à l’aide des commandes de stylo dessiner 70 étoiles plus ou moins grandes et lumineuses. Pour l’anecdote, les hackers du MIT ayant créé le jeu Spacewar, premier jeu de l’histoire du jeu vidéo, recréaient le ciel en prenant l’exacte position des étoiles.

Cat and stars

Il n’est pas beau mon ciel étoilé ?

Maintenant il faudrait peut-être penser à armer notre vaisseau. Ajoutons un troisième sprite, par exemple une balle dont le fonctionnement va être assez simple. On la cache au démarrage du jeu. Lorsque l’on appuie sur espace, elle apparaît et avance jusqu’à ce qu’elle rencontre le bord de l’écran ou un ennemi.

spaceship gun

Pour l’instant, les ennemis ne sont pas gérés par le script car on ne les a pas encore codés. Ajoutons donc un quatrième et dernier sprite, pour ma part des bananes, histoire de faire dans l’absurde. Comportement simple de nos ennemis (ou plutôt de notre ennemi pour l’instant) : apparaître en haut de l’écran à des positions aléatoires et descendre vers le bas de l’écran. Ajoutons donc un quatrième sprite et ajoutons-lui ce bout de code.

Banana moves

Comme vous pouvez le constater, j’utilise une variable pour stocker la position X de la banane. Pour l’instant, une seule banane à la fois peut attaquer. Nous verrons comment les multiplier.

Nous allons créer deux variables supplémentaires : vies et score, qui cette fois ne seront pas masquées. J’aurais tendance à placer le code d’initialisation sur le sprite « spaceship ». Car, comme vous avez pu de nouveau le remarquer, tout cela manque un peu d’action et de piment.

Variables

Ajoutons maintenant les instructions qui vont permettre de créer une interaction entre les différents éléments sur le sprite « bananas » au travers d’une boucle.

Bananas interactions

Le message « GameOver » est envoyé à tous et c’est « spaceship » qui le réceptionne et indique la fin du jeu.

Game Over

Ce jeu n’est bien évidemment pas fini. Il y manque entre autres du son, la gestion de la difficulté et de la vitesse et la possibilité de multiplier les aliens. On verra aussi comment utiliser des personnages et des décors différents. Si vous avez opté pour une fusée pivotante, vous n’aurez pas été sans remarquer qu’il nous reste un dernier souci : la fusée tire toujours vers le haut… Suite au prochain épisode !