Introduction
Coordonnées, fonctions
Tests et conditions
Intervalles et collisions
Diriger avec les touches du clavier
Vecteurs
Faire rebondir une balle
Jouer avec une balle qui rebondit
Tirs rectilignes (laser)
Tirs paraboliques
Remerciements
Tirs paraboliques
Code principal
Reste du code
Commentaires (enseignant)
A FAIRE !!
//coordonnées du projectile var x = 0; var y = 0; //position de la cible (choisie au hasard) var z=alea(100,260); var dx=1; function draw() { clear(); //dessin de la cible : rect(z,5,40,10,'red'); circle(x, y, 10,'black'); x = x+dx; y = 4*x*(z-x)/z; } init(); loopdraw();
A FAIRE !!
suiv.
préc.
var droite = false; var gauche = false; var haut = false; var bas = false; var WIDTH; var HEIGHT; var ctx; function init() { // cette fonction permet d'initialiser et de démarer le jeu ctx = $('#canvas')[0].getContext("2d"); WIDTH = $("#canvas").width(); HEIGHT = $("#canvas").height(); } function loopdraw() { // la ligne suivante permet d'exécuter la fonction "draw" toutes les 10 millisecondes ! return setInterval(draw, 10); } function circle(x,y,r,color) { //cette fonction permet de tracer un disque (cercle plein), de centre (x,y) et de rayon r //pour mettre la couleur, utiliser le mot anglais entre guillemets simples, //par exemple 'red' pour la couleur rouge ctx.beginPath(); ctx.arc(x, HEIGHT-y, r, 0, Math.PI*2, true); ctx.closePath(); ctx.fillStyle = color; ctx.fill(); } function rect(x,y,w,h,color) { ctx.beginPath(); ctx.rect(x-w/2,HEIGHT-(y+h/2),w,h); ctx.closePath(); ctx.fillStyle = color; ctx.fill(); } function clear() { ctx.clearRect(0, 0, WIDTH, HEIGHT); ctx.fillStyle='white'; ctx.rect(0,0,WIDTH,HEIGHT); } function alea(a,b) { //cette fonction renvoie un nombre entier au hasard compris entre a et b (inclus) return Math.floor(Math.random()*(b+1-a)+a); } function repeatdraw(n,t) { //répéter draw n fois avec une attente de t ms à chaque fois var rep=0; var time=0; while( rep < n){ time=rep*t; setTimeout(draw,time); rep++; } } function axes() { ctx.beginPath(); ctx.moveTo(5,HEIGHT); ctx.lineTo(5,0); ctx.lineTo(0,5); ctx.moveTo(10,5); ctx.lineTo(5,0); ctx.moveTo(0,HEIGHT-5); ctx.lineTo(WIDTH,HEIGHT-5); ctx.lineTo(WIDTH-5,HEIGHT); ctx.moveTo(WIDTH-5,HEIGHT-10); ctx.lineTo(WIDTH,HEIGHT-5); ctx.stroke(); ctx.strokeText("300",10,10); ctx.strokeText("300",WIDTH-20,HEIGHT-10); ctx.strokeText("0",10,HEIGHT-10); } function explode(cx,cy,color){ // Cette fonction affiche une explosion centrée au point de // coordonnées (x,y). // la couleur est 'color' : par exemple, pour avoir du orange, // indiquer 'orange'. var spikes=13; var outerRadius=30; var innerRadius=10; var rot=Math.PI/2*3; cy=HEIGHT-cy var xx=cx; var yy=cy; var step=Math.PI/spikes; ctx.beginPath(); ctx.moveTo(cx,cy-outerRadius); for(i=0;i