Le jeu du serpent
From OFSET Wiki
Cette réalisation guidée est aussi une introduction à Squeak.
Pour obtenir les halos d'un objet, cliquer sur cet objet avec la touche 'Alt' ou 'pomme' enfoncée. S'il y a combinaison d'objets cliquer plusieurs fois jusqu'à obtenir l'objet voulu.
Article de Pierre-André Dreyfuss
[edit] Construction du serpent
Prendre une ellipse, la nommer 'serpent' et lui donner une forme allongée verticalement.
Pour distinguer l'avant de l'arrière, poser une petite ellipse d'une autre couleur, la nommer 'tête' et la placer à l'avant du serpent.
Pour poser cette ellipse, il y a deux moyens :
- Poser l'ellipse (tête) sur l'autre et activer le menu de l'ellipse tête (hallo rouge). Choisir inclu dans serpent.
- Ouvrir le menu du serpent et cocher
accepte des objet inclus.- Placer l'ellipse tête dans le serpent , Attention c'est la flèche de la souris qui doit être dans la zone du serpent, la position de la tête peut ensuite être ajustée à l'aide du halo brun.
- Supprimer la coche
accepte des objet incluspour éviter que d'autres objets se collent au serpent.
[edit] Le serpent avance
Ouvrir le visualisateur de commandes du serpent avec le halo bleu (oeil).
Glisser la tuile avance de 5 dans la zone blanche (le monde).
Une fenêtre de script s'ouvre avec la commande avance de 5 en première place.
Cliquer sur le point d'exclamation jaune. Le script s'exécute et le serpent avance. Si l'on reste appuyé le script se répète.
Nommer ce script 'bouge' en éditant le titre 'script1'.
Pour faire exécuter le script automatiquement 8 fois par seconde, cliquer sur la montre:
Le statut du script change et devient:
, la montre tourne.
Pour arrêter, cliquer à nouveau sur la montre, le statut du script devient 'en pause'
On peut changer l'état de tous les scripts en pause ou actifs à l'aide des feux de signalisation que l'on trouve dans les accessoires.
[edit] Boutons droite et gauche pour faire tourner le serpent
- Glisser la commande
tourne 5 - Un script s'ouvre. Modifier 5 en 90, nommer ce script 'droite'
- Aller avec la souris sur le mot 'serpent' de la barre de titre, le curseur de la souris prend la forme d'un menu. Cliquer pour obtenir le menu.
Dans ce menu cliquer bouton pour lancer ce script.
Vous obtenez le bouton
, le placer dans le monde.
- Faire de même pour gauche. La seule différence est la commande
tourne -90au lieu detourne 90et le nom du nouveau script 'gauche' au lieu de 'droite'.
Maintenant, on peut diriger le serpent avec les boutons gauche et droite.
Ranger les scripts gauche et droite avec le halo rond beige. Les scripts quittent l'écran, on peut les ouvrir de nouveau en tirant la tuile correspondant au nom du script dans la catégorie scripts.
[edit] Placer le serpent sur un fond vert terrain de jeu
Prendre une Scène dans le volet rouge Accessoires, à l'aide du halo jaune ajuster sa taille, poser le serpent dedans et les boutons au bord.
Pour déplacer les objets, utiliser le halo noir pour les soulever et les changer de milieu, le halo brun pour les dépléacer dans leur milieu.
Pour placer un objet dans un milieu, il faut que la souris soit dans ce milieu au moment où on le lâche. Cela veut dire que si l'on tient le serpent par le halo noir, le halo noir doit être dans le terrain de jeu au moment oû l'on clique pour lâcher le serpent, si non le serpent est placé dans le monde devant le terrain de jeu.
Pour rendre déplaçable le terrain de jeu avec la souris, cliquer le halo rouge menu et enlever la coche ne peut être déplacé.
[edit] Pilotage du serpent avec les touches du clavier
Avant chaque pas du serpent, on va tester si l'une des touches flèche droite ou flèche gauche est appuyée, si oui on tourne du côté voulu et on remplace le code de la touche appuyée par un espace. Cet espace sera remplacé par le code d'une touche dès qu'une nouvelle touche sera appuyée.
Reprendre le script bouge et tirer une structure de test icône saumon à droite dans le titre.
Cliquer dans le fond avec la roulette du milieu ou alt/bouton gauche (sur mac pomme clic) pour avoir les halos du monde (le fond).
Chercher la catégorie entrée.
et tirer la brique lastKeystroke (dernière touche) dans la partie test, la brique se transforme en question (une égalité avec le texte abc).
Placer cette structure dans le script 'bouge', avant la tuile avance de 5 et remplacer abc par <left>, le code produit si l'on appuie la flèche gauche.
Cette question teste si l'on a appuyé la flèche gauche. Si oui on exécute le script gauche en plaçant sa brique en face de oui.
Sinon, on teste si l'on a appuyé la flèche droite.
Pour cela on place une nouvelle structure de test dans la branche non.
Pour que cela fonctionne, il faut encore remplacer par un espace le code de la touche, sinon, on va continuer de tourner comme si la touche était restée appuyée.
Pour cela on appuie sur la barre d'espace pour mette un espace dans la commande lastKeystroke (dernière touche).
On tire cette commande depuis la grosse flèche verte (on veut faire une affectation et mettre un espace dans cette variable) pour la placer après la brique gauche, on fait de même pour le test de la touche (droite).
C'est déjà fait dans l'image du script ci-contre.
Ainsi avant chaque pas, le serpent va voir s'il doit tourner parce qu'une touche flèche droite ou flèche gauche a été appuyée, si oui, il tourne.
[edit] Le serpent mange des pastilles
On va programmer une pastille qui va se cacher lorsque le serpent entre en collision avec. Ensuite il suffira de copier cette patille pour en avoir d'autres avec le même comportement.
C'est la pastille qui doit reconnaître la collision avec le serpent et non l'inverse car le serpent devrait avoir un script pour chaque pastille alors que toutes les pastille n'ont que le serpent à reconnaître.
- Prendre une ellipse lui donner une petite taille, ouvrir son visualiseur de commandes et la nommer 'pastille' en changeant le titre 'ellipse' du visualiseur. Le visualiseur de script du serpent se range à droite, on pourra le rouvrir en cliquant sur son onglet.
- Ouvrir la catégorie 'script', pour celà cliquer sur le nom d'une catégorie, base par exemple. Le menu des catégories s'ouvre, choisir 'script', ouvrir un script vide et poser un test.
- Ouvrir la catégorie
testet prendre la tuileintersection.
La réponse à cette question est toujours oui car l'objet a toujours une intersection avec lui-même. Il nous faut donc remplacer le 'pastille' de droite par 'serpent'. Le 'pastille' de gauche désigne l'objet qui exécute la commande et ici c'est bient la pastille qui teste si elle touche le serpent.
On peut remplacer un élément d'une tuile par un élément de même nature. Ici 'pastille' est le nom d'un objet, on peut donc le remplacer par le nom de l'objet 'serpent'.
Pour obtenir le nom d'un objet, il y a plusieurs possibilités, ici on va utiliser le halo brun (dessous l'oeil bleu) du serpent. Cliquez sur cet halo et vous aurez une tuile avec le mot 'serpent'. Posez cette tuile sur le mot 'pastille' de droite. Le mot 'pastille' s'allume en vert pour montrer que la substitution est possible.
- Nommer le script 'mangee' sans accent car les noms de scripts passent tels quels dans Smalltalk qui n'accepte pas les accents. En fait si vous mettez des accents, les lettres accentuées seront supprimées.
- Ajoutez en face de oui la commande
cachequi se trouve dans la catégoriedivers. - Mettre ce script en
pausepour qu'il soit actif lorsqu'on appuie surgo.
[edit] Les pastilles reviennent
- Dans le visualiseur de script de 'pastille', catégorie
divers, glisser la commandemontredans le monde. Un nouveau script est créé avec la commandemontre. Nommer ce script 'visible'.
Nous aurons plusieurs pastilles. Pour montrer toutes les pastilles nous allons demander au terrain de jeu de lancer la commande 'visible' de tous ses objets si cette commande existe pour l'objet. La commande qui fait ce travail se trouve dans le visualiser du 'terrain de jeu'. Ouvrir ce visualiseur avec le halo oeil bleu de la scène et choisir la catégorie collection cette catégorie concerne la collection des objets contenus. A la fin, on trouve la tuile :
Si l'on clique sur le nom du script à droite (ici sur bouge), on a un menu avec la liste de tous les noms de script du projet. Choisir visible.
- Nommer le script 'pastilles' et faire un bouton pour lancer le script. Ce bouton fera réapparaître les pastilles. Vous pouvez copier la pastille et en faire deux ou trois, pas plus car on n'a pas fini de programmer la pastille.
On jettera toutes les pastilles sauf une pour continuer la programmation.
[edit] Affichage du score
Pour afficher le score, on va créer une variable dans le serpent.
- Ouvrir le visualiseur de script du serpent en cliquant sur son onglet à droite de la fenêtre ou sur son halo oeil bleu.
- Cliquer sur le bouton avec la lettre V dans la barre de titre du visualiseur. Une fenêtre s'ouvre avec le mot
var1déjà sélectionné. Veillez à ce que la souris soit dans la fenêtre et taper le nom 'score', acceptez. Une nouvelle catégorievariablesapparaît avec la variable score
.
Cliquer sur l'icône de menu à gauche, un menu apparaît :
Cliquer sur affichage simple. Un double de la valeur du score se trouve au bout de la souris, déposer ce double en haut dans la scène.
- Vérifiez que si l'on change la valeur du double, la valeur du score se met à jour et inversément.
- Mettre à zéro la valeur du score et glisser la commande par la grosse flèche verte dans le monde.
- nommer 'debut' le script qui s'ouvre et en tirer un bouton pour le lancer. Ce bouton remet le score à zéro pour une nouvelle partie. Il serait bien que le serpent se mette en marche ensuite avec ce bouton.
- Chercher les halos du bouton 'go'. Il faut plusieur clics pur l'obtenir.
- Chercher la catégorie 'divers' et la commande clique :
- Ajoutez cette commande au script 'debut'
Il faut maintenant programmer la pastille pour qu'elle augmente le score lorsqu'elle est mangée.
- Jeter toutes les pastilles SAUF UNE !
- Ouvrir le visualiseur de commandes de la pastille restante.
- Ouvrir la catégorie
scriptet glisser le script 'mangee' dans le monde pour l'ouvrir. - Ouvrir le visualiseur de commandes du serpent, glisser la tuile
scorede la catégorievariablespar la grosse flèche verte et la placer dans le test du script 'mangee' en face de oui après la tuilecache. - Changer la flèche d'affectation par la phrase
incrémente deà l'aide des triangles verts. Mettre la valeur à 1. - Copier les pastilles.
[edit] Les pastilles reviennent en touchant l'étoile
- Mettre une étoile sur le terrain de jeu.
- Programmer l'étoile pour que les pastilles reviennent si le serpent touche l'étoile. Le procédé est le même que pour les pastilles qui se font manger, simplement en cas de collision, on utilise la commande 'pastilles' de la scène, dans sa catégorie
scripts. - Jetez les boutons qui ne servent plus, ne gardez que le bouton debut.


