Disons qu'une bonne bibliothèque pourrait réduire ton temps de travail de moitié au moins, et te fournirait tout ce que tu as besoin. C'est le meilleur moyen d'arriver à un jeu correct, mais bien entendu tout faire soi-même est bien plus enrichissant sur le plan pédagogique. Encore faut-il avoir le temps et les capacités.
Si la console te sort undefined, c'est parce qu'une déclaration de variable n'est pas sensée retourner de valeur. Ce qui s'affiche dans la console est l'évaluation de l'instruction au-dessus, rien de plus.
> var x = 5;
undefined
> 5 + 5
10
> x
5
Quant à ton code, en regardant de plus près il y a beaucoup d'erreurs de logique :
1 2 3
| var largeur = setInterval(generateurPositionAleatoireLargeur(),1000);
var hauteur = setInterval(generateurPositionAleatoireHauteur(),1000);
var generation = setInterval(generationMob(largeur, hauteur),1000); |
Plein d'erreurs ici. Déjà pourquoi trois setInterval ? largeur et hauteur ne sont pas des timers. Et on passe à setInterval une fonction, pas le résultat de cette fonction après son appel. Donc un code plus correct serait :
1 2 3 4 5 6 7 8
| function generationMob(){
var largeur = generateurPositionAleatoireLargeur();
var hauteur = generateurPositionAleatoireHauteur();
context.beginPath();
context.fillRect(largeur,hauteur,5,5);
context.closePath();
}
var generation = setInterval(generationMob,1000); |
Reste à comprendre la logique des fonctions generateurPositionAleatoireXXX. De ce que je vois, tu remplis un tableau avec dix valeurs au hasard, puis parmi ces dix valeurs au hasard, tu en prends une au hasard. Multiplier les tirages au sort ne sert pas à grand chose ici, un seul random suffit amplement
Pour moi, la seule ligne utile est :
var largeur = Math.floor(canvas.width*Math.random());
Partager