Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (19 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: coconut is not defined' in or related to this line: 'scoreTest = "Zone contact = " + zoneIntersectParasol(coconut[i]);' Line Number: 434
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (16 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: livesLeftGraphics[i] is undefined' in or related to this line: 'livesLeftGraphics[i].destroy();' Line Number: 264
Code edit (1 edits merged)
Please save this source code
Code edit (7 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: Sprite is not a constructor' in or related to this line: 'var newLife = new Sprite('life');' Line Number: 267
Code edit (12 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: scor is not defined' in or related to this line: 'scor += 1;' Line Number: 120
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: OptionsZone is undefined' in or related to this line: 'parasol.y = OptionsZone.y - 400;' Line Number: 189
Code edit (1 edits merged)
Please save this source code
Code edit (23 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: abs is not defined' in or related to this line: 'var deltaX = abs(coconuts[i].x - coconuts[i].X1);' Line Number: 307
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (8 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: scoreText is not defined' in or related to this line: 'scoreText.setText(nouveauScore);' Line Number: 214
Code edit (1 edits merged)
Please save this source code
===================================================================
--- original.js
+++ change.js
@@ -10,13 +10,20 @@
});
self.speed = 5;
self.trajectory = new Trajectory();
self.update = function () {
- self.y += self.speed;
+ if (self.trajectory.typeTrajectory == 0) {
+ self.trajectory.updateLinear();
+ }
+ if (self.trajectory.typeTrajectory == 1) {
+ self.trajectory.updateParabol();
+ }
+ self.y = self.trajectory.yCurrent;
+ self.x = self.trajectory.xCurrent;
if (self.y > 2732) {
self.destroy();
}
- };
+ }; //fin update
});
//<Assets used in the game will automatically appear here>
// Class for the Monkey
var Monkey = Container.expand(function () {
@@ -41,53 +48,74 @@
};
});
//Class for the trajectory of the coconut
//Gestion d'une trajectoire parabolique de sommet ((X1 + X2)/2, Yh)
-//et de point de départ (X1, Y0) et d'arrivée (X2, Y0) avec Y0 > Yh et X1 < X2.
+//et de point de départ (X1, Y0) et d'arrivée (X2, Y0) avec Y0 > Yh et X1 < X2 et Yh != Y0 != 0 et X1 != X2 != 0
//la fonction de mise à jour calcule la position du point suivant en fonction de speed .
-//Sachant que speed correspond à un certain nombre de ticks avant le calcul de la position suivante.
-//L'equation de la trajectoire est de la forme y = a(x - X1)(x - X2) + Yh
+//L'equation de la trajectoire est de la forme y = a(x - X1)(x - X2) + Y0 avec a = 4(Y0 - Yh)/((X1 - X2)(X1 - X2))
+//Pour la trajectoire linéaire, le point de départ est (X1, Yh) et le point d'arrivée est (X1, Y0)
+//Le temps de parcours est totalTicks que se soit pour la trajectoire linéaire ou parabolique
var Trajectory = Container.expand(function () {
var self = Container.call(this);
var trajectoryGraphics = self.attachAsset('trajectory', {
anchorX: 0.5,
anchorY: 0.5
});
+ self.typeTrajectory = 0; //0: linear, 1: parabolic
self.X1 = 0;
self.X2 = 0;
self.Y0 = 0;
self.Yh = 0;
+ self.a = 0;
self.xCurrent = 0;
self.yCurrent = 0;
- self.speed = 1;
+ self.totalTicks = 0; //Nombre total de ticks pour passer de X1 à X2
+ self.xPerTick = 0; //Distance parcourue par tick
self.isStarted = false; //Indique si la trajectoire a commencé
- self.setParameters = function (X1, X2, Y0, Yh, speed) {
+ self.setParameters = function (typeTrajectory, X1, X2, Y0, Yh, totalTicks) {
+ //Initialisation des paramètres de la trajectoire
+ self.typeTrajectory = typeTrajectory;
self.X1 = X1;
self.X2 = X2;
self.Y0 = Y0;
self.Yh = Yh;
- self.speed = speed;
- self.a = (Y0 - Yh) / ((X1 - X2) * (X1 - X2));
+ self.totalTicks = totalTicks;
}; //fin setParameters
- self.update = function () {
+ self.updateLinear = function () {
// Trajectory logic can be added here
- if (!self.isStarted) {
+ if (self.typeTrajectory == 0 && !self.isStarted) {
self.xCurrent = self.X1;
+ self.yCurrent = self.Yh;
+ var distance_per_tick = (self.X2 - self.X1) / self.totalTicks;
+ self.isStarted = true;
+ } else {
+ if (self.yCurrent < self.Y0) {
+ self.yCurrent += distance_per_tick;
+ }
+ }
+ }; //fin updateLinear
+ self.updateParabol = function () {
+ // Trajectory logic can be added here
+ if (self.typeTrajectory == 1 && !self.isStarted) {
+ self.xCurrent = self.X1;
self.yCurrent = self.Y0;
+ self.a = 4 * (self.Y0 - self.Yh) / ((self.X1 - self.X2) * (self.X1 - self.X2));
+ self.xPerTick = (self.X2 - self.X1) / self.totalTicks;
self.isStarted = true;
- var distance_per_tick = (self.X2 - self.X1) / self.speed;
} else {
if (self.xCurrent < self.X2) {
- self.xCurrent += distance_per_tick;
- self.yCurrent = self.a * (self.xCurrent - self.X1) * (self.xCurrent - self.X2) + self.Yh;
+ self.xCurrent += self.xPerTick;
+ self.yCurrent = self.a * (self.xCurrent - self.X1) * (self.xCurrent - self.X2) + self.Y0;
}
}
- }; //fin update
+ }; //fin updateParabol
});
/****
* Initialize Game
****/
+//fin class Trajectory
+//fin class Trajectory
var game = new LK.Game({
backgroundColor: 0x87CEEB // Sky blue background
});
@@ -146,8 +174,9 @@
var parasol = game.addChild(new Parasol());
parasol.x = 2048 / 2;
parasol.y = 2500;
var coconuts = [];
+var nombreCoconuts = 1;
var score = 0;
var scoreTest = 0;
/****
* Game zones and backgrounds
@@ -211,31 +240,37 @@
function chooseNextStartPoint() {
var newCoconut = new Coconut();
// Choisir aléatoirement un point de départ
var randomIndex = Math.floor(Math.random() * startPoints.length);
- newCoconut.x = startPoints[randomIndex];
- newCoconut.y = monkey.y;
+ var typeTrajectory = 0;
+ var X1 = startPoints[randomIndex];
+ var X2 = X1;
+ var Y0 = 2732;
+ var Yh = monkey.y;
+ var totalTicks = 200;
+ newCoconut.trajectory.setParameters(typeTrajectory, X1, X2, Y0, Yh, totalTicks);
coconuts.push(newCoconut);
return newCoconut;
} //fin chooseNextStartPoint
/****
* Main loop
****/
game.update = function () {
//Mise à jour score
- scoreTest = score;
updateScoreTest(scoreTest);
updateScore(score);
//Autres actions à effectuer sans urgence
if (LK.ticks % 60 == 0) {
// Créer un nouveau coco
- var newCoconut = chooseNextStartPoint();
- game.addChild(newCoconut);
+ if (coconuts.length < nombreCoconuts) {
+ var newCoconut = chooseNextStartPoint();
+ game.addChild(newCoconut);
+ }
}
for (var i = coconuts.length - 1; i >= 0; i--) {
+ scoreTest = "Type trajectoire: " + coconuts[i].trajectory.typeTrajectory;
if (coconuts[i].intersects(parasol)) {
score += 1;
- //scoreTxt.setText(score);
coconuts[i].destroy();
coconuts.splice(i, 1);
} else if (coconuts[i].y > 2732) {
LK.effects.flashScreen(0xff0000, 1000);