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 !

Cornebredouille ! Bachi-bouzouk ! Mille sabords ! Une question de vocabulaire…

adult words

Parfois mes oreilles saignent et je relève le nez de ce que je suis en train de faire pour lancer un vibrant « Vocabulaire ! » auquel une voix répond le plus souvent « Oui, pardon. ». « Ta g… » et autres insultes sont chez quelques-uns le lot courant et ce n’est pas du meilleur goût. On s’inspire du capitaine Haddock, on va chercher des insultes issues du temps jadis pour remplacer de vils mots condamnables. Parfois ça marche, parfois le naturel revient au galop. Surtout quand on se tape sur les doigts… Il en faut pourtant du temps pour user au quotidien de « flûte, zut, mince ou diantre » plutôt que d’autres termes. Et moi-même je succombe au fruit défendu, notamment lors d’un récent atelier en me prenant les pieds dans une chaise et me ramassant comme un malpropre.   😉

Le plus dramatique, c’est avec les plus jeunes, les très très jeunes, ceux dont vous ne vous souveniez pas qu’ils pouvaient être si petits, par exemple les 4 à 6 ans. Heureusement ils sont encore un peu naïfs et j’use d’une petite astuce qui fonctionne plutôt bien (et qui n’est pas de moi, je l’avoue, mais je ne me souviens plus de qui je la tiens). Si j’entends un mot incongru, je gronde légèrement en leur indiquant que je connais le plus gros mot de la terre (et même de l’univers, l’infini et au-delà). Il n’en faut pas beaucoup plus pour attiser leur curiosité. Il ne reste plus qu’à les faire mariner un petit moment, leur dire qu’on n’a pas le droit de leur en parler puis, devant l’insistance, lâcher le morceau mais en leur demandant d’être prudent. Ce mot n’est autre que « saperlipopette ». Et comme l’interdit attire toujours, c’est avec un large sourire que je savoure mon escroquerie en les entendant répéter à qui mieux mieux « saperlipopette »… A bon entendeur !