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 rectilignes (laser)
Code principal
Reste du code
Commentaires (enseignant)
Modifier dy de façon à atteindre les différentes cibles colorées...
//Point de départ du tir var x = 0; var y = 150; var dx = 1; //Modifier dy de façon à atteindre les différentes cibles colorées... var dy = 0.25; function draw() { //On efface tout et on dessine un point rouge clear(); circle(x, y, 2,'red'); //On prépare la position du prochain point rouge x = x+15*dx; y = y+15*dy; } init(); //On répète "draw{}" toutes les 10 millisecondes loopdraw();
suiv.
préc.
var droite = false; var gauche = false; var haut = false; var bas = false; var WIDTH; var HEIGHT; var ctx; function clear() { ctx.fillStyle='green'; ctx.fillRect(295,0,5,10); ctx.fillStyle='yellow'; ctx.fillRect(295,70,5,10); ctx.fillStyle='orange'; ctx.fillRect(295,220,5,10); ctx.fillStyle='blue'; ctx.fillRect(295,145,5,10); ctx.fillStyle='pink'; ctx.fillRect(295,290,5,10); ctx.fillStyle='red'; ctx.fillRect(145,295,10,5); ctx.fillStyle='skyblue'; ctx.fillRect(145,0,10,5); ctx.fillStyle='brown'; ctx.fillRect(70,295,10,5); ctx.fillStyle='grey'; ctx.fillRect(70,0,10,5); ctx.fillRect(75,0,1,300); ctx.fillRect(150,0,1,300); ctx.fillRect(225,0,1,300); ctx.fillRect(0,75,300,1); ctx.fillRect(0,150,300,1); ctx.fillRect(0,225,300,1); } 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 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
Activité pour travailler sur la notion de pente ou coefficient directeur d'une droite.