Le jeu du serpent

From OFSET Wiki

Jump to: navigation, search

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

Contents

[edit] Construction du serpent

Prendre une ellipse, la nommer 'serpent' et lui donner une forme allongée verticalement.

Image:serprent.png

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.

Image:serprentComplet.png

Pour poser cette ellipse, il y a deux moyens :

  1. Poser l'ellipse (tête) sur l'autre et activer le menu de l'ellipse tête (hallo rouge). Choisir inclu dans serpent.
  2. 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 inclus pour éviter que d'autres objets se collent au serpent.

[edit] Le serpent avance

Notre script
Notre script

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'.

Le script une fois renommé
Le script une fois renommé

Pour faire exécuter le script automatiquement 8 fois par seconde, cliquer sur la montre: Image:ScriptStatusControlNormal.png

Le statut du script change et devient: Image:ScriptStatusControl1Actif.png, 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.

Panneaux (règlette) de contrôle de tous les scripts
Panneaux (règlette) de contrôle de tous les scripts

[edit] Boutons droite et gauche pour faire tourner le serpent

Notre script 'droite'
Notre script 'droite'
  • 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.
Le menu associé à notre script 'droite'
Le menu associé à notre script 'droite'

Dans ce menu cliquer bouton pour lancer ce script.

Vous obtenez le bouton Image:buttonDroite.png, le placer dans le monde.

  • Faire de même pour gauche. La seule différence est la commande tourne -90 au lieu de tourne 90 et 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

La structure de test est tirée depuis là
La structure de test est tirée depuis là

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.

La structure de test encore vide
La structure de test encore vide

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.

La catégorie 'entrée' du monde
La catégorie 'entrée' du monde
Test de la touche pressée
Test de la touche pressé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.

Le script avec la structure de test insérée
Le script avec la structure de test insérée

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.

Notre script avec une deuxième structure de test. Noter l'emboîtement des tests.
Notre script avec une deuxième structure de test. Noter l'emboîtement des tests.

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 test et prendre la tuile intersection.

Image:PhraseTileIntersection.png

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'.

Le script de l'objet 'pastille' terminé
Le script de l'objet 'pastille' terminé

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 cache qui se trouve dans la catégorie divers.
  • Mettre ce script en pause pour qu'il soit actif lorsqu'on appuie sur go.

[edit] Les pastilles reviennent

  • Dans le visualiseur de script de 'pastille', catégorie divers, glisser la commande montre dans le monde. Un nouveau script est créé avec la commande montre. 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 : Image:PhraseTile1direatous.png

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.

Le script final de la scène
Le script final de la scène
  • 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 var1 déjà sélectionné. Veillez à ce que la souris soit dans la fenêtre et taper le nom 'score', acceptez. Une nouvelle catégorie variables apparaît avec la variable score Image:ViewerLinescore.png.
Un clic sur l'icône de menu, à gauche du nom de variable, affiche le menu de la variable
Un clic sur l'icône de menu, à gauche du nom de variable, affiche le menu de la variable

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 : Image:PhraseTile2cliquego.png
  • Ajoutez cette commande au script 'debut'
Script final pour compter le score des pastilles mangées
Script final pour compter le score des pastilles mangées

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 script et glisser le script 'mangee' dans le monde pour l'ouvrir.
  • Ouvrir le visualiseur de commandes du serpent, glisser la tuile score de la catégorie variables par la grosse flèche verte et la placer dans le test du script 'mangee' en face de oui après la tuile cache.
  • 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

Le script sur l'objet étoile, pour faire reapparaître les pastilles
Le script sur l'objet étoile, pour faire reapparaître les pastilles
  • 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.
Personal tools