:: Enseignements :: ESIPE :: E3INFO :: 2019-2020 :: Programmation Web avec JavaScript ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) |
Programmation d'un jeu
|
Le but de ce TP est de programmer un jeu. Contrairement au TP précédent,
vous avez 2 semaines pour rendre le TP et il vous est demandé de faire un compte rendu de TP
plus etoffé que d'habitude en indiquant les choix de design et d'implantation que vous avez fait.
(j'insiste il y a 5 points sur cette partie !).
Exercice 1 - Lost in Space
Dans un futur pas si éloigné que cela, la terre et l'ensemble des planètes du système solaire
ont été colonisés par une race extra-terrestre et vous êtes le seul humain à avoir réussi
à vous échapper à bord d'un vaisseau extra-terrestre à forme triangulaire.
Pour vous arrêtez, un comptable parmis les extra-terestres décide que 250 vaisseaux devraient
être suffisant pour vous empécher d'activer l'hyper-propulsion permettant de vous échapper.
Avant de partir, vous avez bricolé un peu votre vaisseau en lui ajoutant à l'avant un canon
qui tire des boules d'énergie.
Contrairement aux TPs précédent, le but de ce TP est que vous arriviez à décomposer un problème
en fonctions et objets simples. Il n'y a donc pas de questions à suivre dans l'ordre.
De plus, comme le sujet offre pas mal de liberté, certains points spécifiques ne sont pas discutés
dans les règles ci-dessous et sont donc laissés à votre libre interprétation. Il serait donc étonnant d'avoir deux TPs implantant exactement les mêmes règles.
Dans le cas de code commun (même partiel) entre deux personnes de ce TP, le TP sera évalué à 0.
Voici les deux fichiers qui vont vous servir de base de travail
lost_in_space.html et
lost_in_space.js
Voici les règles :
-
Au début du jeu, le vaisseau rouge, que vous pilotez avec les touches haut, bas, gauche et droite, se trouve
en bas de l'écran au centre horizontalement, avec son canon pointé vers le haut de l'écran. Les vaisseaux extra-terrestres, jaunes,
se trouvent en haut de l'écran et décendent vers le bas attirer par votre vaisse
(pour aller tranquillement rentrer en collision avec le vaisseau que vous pilotez).
-
Lorsqu'un vaisseau extra-terrestre touche le haut ou le bas de l'écran, il rebondit et gagne 8% en vitesse à chaque rebond.
-
Un vaisseau extra-terreste se déplace soit à gauche ou à droite (le choix est aléatoire au démarrage) mais une fois tout les 10 tours de la boucle de jeu,
il se ré-oriente vers le vaisseau du joueur (et pas tous en même temps sinon, cela va faire bizarre).
-
Votre nombre de balles est infini. Lorsque vous tirez (avec la barre d'espace), la balle (1 ou 2 pixels) part avec la même vitesse que votre vaisseau vers l'avant.
Attention si vous accélerez vers une balle, vous pouvez vous tuer vous-même. A chaque tour de la boucle principale du jeu,
une balle garde 99% de sa vitesse. De plus, les balles ont une durée de vie correspondant au 2/3 de la hauteur de la zone de jeu.
-
Les aliens ne peuvent pas mourir lorsqu'ils se rentrent dedans, par contre, ils meurent si ils sont atteints par une balle.
Pour détecter les collisions, on considère un carré de 3 pixels par 3 pixels, centré sur le vaisseau et entourant celui-ci.
Un vaisseau ou une balle entre en collision avec le vaisseau si elle entre dans ce carré.
-
Quelques conseils d'implantation :
Le code que vous devez produire doit utiliser les syntaxes introduites avec JavaScript 2015, la notation class,
les mot clés let et const, etc.
Vous devez avoir des objets représentant un vaisseau, une balle, etc.
Toutes les valeurs, taille de la zone de jeu, taille de la zone de collision, durée de vie des balles, etc, ne doivent pas être écrite en dure dans le code
mais être déclarées sous forme de constante.
Note: lorsqu'un vaisseau meurt, il est plus rapide de dire qu'il est mort puis dans un second temps de nettoyer le tableau en supprimant tous
les vaisseaux morts plutôt que de les supprimer un par un à chaque fois que l'on détecte qu'un vaisseau est mort.
© Université de Marne-la-Vallée