Pong → Space Invaders
Durée estimée: 30 minutes
Pong | Space Invaders | ||
2 objets | 3 objets | ||
la |
le qui peut être détruit | ||
la |
l' et qui peut être détruit | ||
le |
La
On va modifier Pong pour réaliser Space Invaders, comme on a modifié le jeu de balles pour Pong.
Point de départ
Pour réaliser Space Invaders, vous pouvez partir de la version de Pong que vous avez réalisée. Vous pouvez également partir du projet à l'adresse suivante, avec des sons et images préchargés et un design modifié : http://onvaessayer.org/cycle4?repo=space0
Design : Pong → SpaceInvaders:
Le principal changement de design est l'ajout d'un "On utilisera de nouveaux sons et images que vous trouverez à cette adresse http://onvaessayer.org/cycle4/pong/resources , à importer dans les media.
- attaquant.png : l'image de l'attaquant
- vaisseau.png : l'image du défenseur
- attaquantExpl.png : l'image de l'attaquant après explosion
- vaisseauExpl.png : l'image du défenseur après explosion
- missile.png : l'image du missile
- tir.mp3 : le son du tir
- explosion.mp3 : le son des explosions
type | catégorie | Nom | rôle | propriété | valeur |
---|---|---|---|---|---|
Screen1 | racine | alignt horiz. alignt vertical image fond orient. écran status bar titre visible |
centré haut space.jpg portrait Non Non |
||
lutin image | dessin | lutinAttaquant |
hauteur largeur image Rotation orientation intervalle |
60 60 attaquant.png non coché 0 20 |
|
lutin image | dessin | lutinDefenseur |
hauteur largeur image |
100 60 vaisseau.png |
|
lutin image | dessin | lutinMissile | hauteur largeur image rotation activé orientation intervalle |
120 60 missile.png non coché non coché non coché 90 20 |
|
Son | media | SonTir |
Source | tir.mp3 | |
Son | media | SonExplosionDefenseur | Source | explosion.mp3 | |
Son | media | SonExplosionAttaquant | Source | explosion.mp3 |
Représentation des données :
Par rapport à Pong, le missile est nouveau : il est
Par ailleurs, ce qui est nouveau, c'est que l'attaquant et le défenseur peuvent exploser :
- Pour le défenseur, la partie s'arrête avec son explosion, il n'est donc pas utile d'enregistrer son état dans une variable,
- Par contre l'attaquant reste visible, actif et il continue à descendre après son explosion. Selon son état il n'aura pas le même effet sur le défenseur s'il entre en collision avec lui. Donc on doit enregistrer l'état de l'attaquant dans une nouvelle variable, pour savoir quoi faire en cas de collision avec le défenseur.
Décomposition :
Le jeu présenté dans la vidéo (à droite) est l'objectif à réaliser.
Regardez la bien et complétez la colonne de droite du tableau ci-dessous, pour décrire le comportement du vaisseau défenseur, de l'attaquant et du missile en réaction à chacun des évènements.
Pour vous aider, on a rappelé dans la colonne de gauche, les réponses données pour le jeu Pong.
Précisons 2 points :
- Comme dans Pong, on commence une partie en touchant l'écran, mais si la partie a déjà démarré, ce même évènement va déclencher le tir d'un missile.
- Pour traiter les collisions dans un seul script, on s'intéressera aux collisions de l'attaquant avec le défenseur ou le missile,
Ici on choisit de traiter les collisions détectées par l'attaquant, ce qui limite à un seul script.
Quand vous aurez fini l'analyse de chaque script, cliquez sur le bouton pour comparer avec la notre. Puis continuez avec les autres scripts ou commencez à coder en reprenant le code de Pong affiché à gauche.
Pong
lutinBalle lutinRaquette | Space Invaders
lutinAttaquant lutinDefenseur lutinMissile |
variables : |
variables : |
quand l'application démarre:
procedure
|
quand l'application démarre:
procedure
procedure
|
quand le joueur touche l'écran/le cadre :
appeler |
quand le joueur touche l'écran/le cadre :
si la partie n'a pas commencé
appeler sinon : appeler procedure rendre missile visible sur le défenseur activer le missile qui partira vers le haut, jouer le son d'un tir
|
A chaque intervalle d'horloge
|
A chaque intervalle d'horloge
|
quand
|
quand
|
quand
|
quand
|
quand le missile atteint un bord :
| |