Code edit (15 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: opponents[(line - 1)] is undefined' in or related to this line: 'if (!opponents[line - 1].finishPosition && opponents[line - 1].x > finishLine.x) {' Line Number: 897
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
in victoryAnim, clamp the rotations
Code edit (15 edits merged)
Please save this source code
User prompt
implement the victoryAnim
Code edit (5 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: opponents[0] is undefined' in or related to this line: 'opponents[0].update();' Line Number: 706
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 (6 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'var distance = obstacles[self.lineIndex][0].x - nextX;' Line Number: 173
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'var distance = obstacles[self.lineIndex][0].x - nextX;' Line Number: 171
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (22 edits merged)
Please save this source code
User prompt
Please fix the bug: 'ReferenceError: deltaSpeed is not defined' in or related to this line: 'if (distance > 0 && distance <= 250) {' Line Number: 164
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'globalSpeedPerLine[line] = globalBaseSpeed;' Line Number: 621
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'length')' in or related to this line: 'if (!obstacles[line].length && !finishLine.isCut) {' Line Number: 836
Code edit (1 edits merged)
Please save this source code
===================================================================
--- original.js
+++ change.js
@@ -118,97 +118,117 @@
self.leftLeg.x += (self.targetPosture.leftLeg.x - self.leftLeg.x) * speed;
self.leftLeg.y += (self.targetPosture.leftLeg.y - self.leftLeg.y) * speed;
};
self.update = function () {
- if (!self.isFalling) {
- if (self.isOnGround) {
- self.leftLeg.height = 200;
- self.leftArm.height = 200;
- self.trunk.rotation = 0.125;
- if (self.isRunning) {
- self.runAnim();
+ self.updatePosture();
+ /* ********************************************************** AI ATHLETE **************************************************** */
+ if (self.isAi) {
+ // AI Athlete
+ var nextX = self.x;
+ self.previousX = self.x;
+ if (!self.isFalling) {
+ // Normal running
+ if (self.isOnGround) {
+ // Running
+ self.leftLeg.height = 200;
+ self.leftArm.height = 200;
+ self.trunk.rotation = 0.125;
+ if (self.isRunning) {
+ self.runAnim();
+ }
+ // Auto jump first hurdle of the line
+ if (obstacles[self.lineIndex].length) {
+ var distance = obstacles[self.lineIndex][0].x - nextX;
+ if (self.lineIndex == 3) {
+ log((self.isOnGround ? 'On ground' : 'In air') + " / y=" + self.y + " / DeltaY=" + (obstacles[self.lineIndex][0].centralRod.y - self.y) + " / distance=" + distance);
+ }
+ var deltaSpeed = globalSpeedPerLine[self.lineIndex] - globalSpeedPerLine[0];
+ if (distance > 0 && distance <= 250) {
+ self.jump();
+ } else if (distance > 1000 && !deltaSpeed) {
+ // When hurdle is far, apply inter-hurdle randomness
+ nextX += self.nextHurdleSpeedX;
+ }
+ }
+ } else {
+ // Jumping
+ self.speedY += self.gravity * Math.abs(globalSpeedPerLine[self.lineIndex] / 10);
+ self.y += self.speedY * Math.abs(globalSpeedPerLine[self.lineIndex] / 10);
+ if (self.y >= linesGroundLevels[self.lineIndex]) {
+ // Reached the ground
+ self.isOnGround = true;
+ self.speedY = 0;
+ self.y = linesGroundLevels[self.lineIndex];
+ // Define speed for next hurdle
+ var difficultyLevel = 1; // TODO : Move to global
+ self.nextHurdleSpeedX = -8 + difficultyLevel * 3 * Math.random();
+ } else {
+ self.jumpAnim();
+ }
}
} else {
- var deltaSpeed = globalSpeedPerLine[self.lineIndex] - globalSpeedPerLine[0];
- if (self.lineIndex == 3) {
- log("Delta Speed" + deltaSpeed + " /Multiplier=" + Math.abs(globalSpeedPerLine[self.lineIndex] / 10));
- }
- //self.speedY += self.gravity * Math.abs(globalSpeedPerLine[self.lineIndex] / 10); //self.lineIndex
- //self.y += self.speedY * Math.abs(globalSpeedPerLine[self.lineIndex] / 10); //self.lineIndex
- self.speedY += self.gravity * Math.abs((globalSpeedPerLine[self.lineIndex] - deltaSpeed) / 10); //self.lineIndex
- self.y += self.speedY * Math.abs((globalSpeedPerLine[self.lineIndex] - deltaSpeed) / 10); //self.lineIndex
- //log("self.speedY=" + self.speedY, " / self.y=" + self.y);
+ // Falling
+ self.y += 5;
if (self.y >= linesGroundLevels[self.lineIndex]) {
- self.y = linesGroundLevels[self.lineIndex];
self.isOnGround = true;
self.speedY = 0;
- // Define speed for next hurdle
- var difficultyLevel = 1; // TODO : Move to global
- self.nextHurdleSpeedX = -6 + difficultyLevel * 3 * Math.random();
+ self.y = linesGroundLevels[self.lineIndex];
} else {
- self.jumpAnim();
+ self.fallAnim();
}
}
- } else {
- self.y += 5;
- if (self.y >= linesGroundLevels[self.lineIndex] + 200) {
- self.y = linesGroundLevels[self.lineIndex] + 200;
- self.isOnGround = true;
- self.speedY = 0;
- }
- }
- self.updatePosture();
- /* ********************************************************** ATHLETE AI **************************************************** */
- if (self.isAi) {
- var nextX = self.x;
+ // Update athlete position
+ self.x = nextX;
self.previousX = self.x;
- // Do nothing during fall or jump
- if (self.isFalling || !self.isOnGround) {
- return;
- }
- // Advance right if athlete is falling
- /*
- if (athlete.isFalling) {
- var advanceRate = -1.25 * globalSpeedPerLine[self.lineIndex]; // speedX;
- if (self.lineIndex == 3) {
- log("Player falls add=" + advanceRate);
+ } else {
+ // Player Athlete
+ /* ********************************************************** PLAYER ATHLETE **************************************************** */
+ if (!self.isFalling) {
+ // Normal running
+ if (self.isOnGround) {
+ // Running
+ self.leftLeg.height = 200;
+ self.leftArm.height = 200;
+ self.trunk.rotation = 0.125;
+ if (self.isRunning) {
+ self.runAnim();
}
- nextX += advanceRate;
- }*/
- var deltaSpeed = globalSpeedPerLine[self.lineIndex] - globalSpeedPerLine[0];
- if (self.lineIndex == 3 && deltaSpeed) {
- log("Delta speed=" + deltaSpeed);
- }
- nextX += -1 * deltaSpeed;
- // Auto jump first hurdle of the line
- if (obstacles[self.lineIndex].length) {
- var distance = obstacles[self.lineIndex][0].x - nextX;
- if (self.lineIndex == 3) {
- log("distance=" + distance);
+ } else {
+ // Jumping
+ self.speedY += self.gravity * Math.abs(globalSpeedPerLine[self.lineIndex] / 10);
+ self.y += self.speedY * Math.abs(globalSpeedPerLine[self.lineIndex] / 10);
+ if (self.y >= linesGroundLevels[self.lineIndex]) {
+ // Reached the ground
+ self.isOnGround = true;
+ self.speedY = 0;
+ self.y = linesGroundLevels[self.lineIndex];
+ } else {
+ self.jumpAnim();
+ }
}
- // calculate optimal distance to jump depending on current hurdle speed (globalSpeedPerLine[self.lineIndex])
- // and jump speed (self.jumpSpeed) : trunk must be higher than hurdle when reaching it
- var optimalDistance = 0; // To be defined
- if (distance > 0 && distance <= 250) {
- self.jump();
- } else if (distance > 1000 && !deltaSpeed) {
- // When hurdle is far, apply inter-hurdle randomness
- nextX += self.nextHurdleSpeedX;
+ } else {
+ // Falling
+ self.y += 5;
+ if (self.y >= linesGroundLevels[self.lineIndex]) {
+ self.isOnGround = true;
+ self.speedY = 0;
+ self.y = linesGroundLevels[self.lineIndex];
+ } else {
+ self.fallAnim();
}
}
- self.x = nextX;
- self.previousX = self.x;
}
};
self.jump = function () {
if (Date.now() - self.lastJumpTime > self.interJumpDelayMs) {
if (self.isOnGround) {
self.isOnGround = false;
- self.speedY = self.jumpSpeed;
+ var deltaSpeed = globalSpeedPerLine[self.lineIndex] - globalSpeedPerLine[0];
+ self.speedY = self.jumpSpeed - deltaSpeed;
self.lastJumpTime = Date.now();
//globalSpeedPerLine[self.lineIndex] = globalSpeedPerLine[self.lineIndex] * 1.1;
if (self.lineIndex == 3) {
- log("--------------- JUMP --------------------");
+ log("--------------- JUMP -------------------- speedY :" + self.speedY);
}
}
}
};
@@ -781,14 +801,14 @@
obstacleJustPassed = false;
LK.setScore(LK.getScore() + 1); // Add 1 to score for each hurdle passed only if not falling
scoreTxt.setText(LK.getScore()); // Update score text with prefix
// Increase global speed after each obstacle passed and add 1 to score only if not falling
- for (var line = 0; line < numberOfLines; line++) {
+ /*for (var line = 0; line < numberOfLines; line++) {
globalSpeedPerLine[line] -= globalSpeedIncreaseStep;
if (line == 3) {
log("new Speed :" + globalSpeedPerLine[line]);
}
- }
+ }.*/
}
if (finishLine.isCut) {
for (var line = 0; line < numberOfLines; line++) {
// Ensure a smooth transition to 0 speed
@@ -821,16 +841,16 @@
if (line === 0) {
if (athlete.intersects(obstacle.centralRod)) {
athlete.isFalling = true;
athlete.isOnGround = false;
- athlete.fallAnim(); // Call fall animation before game over
+ //athlete.fallAnim(); // Call fall animation before game over
}
} else {
if (opponents[line - 1].intersects(obstacle.centralRod)) {
log("Line " + line + " : opponent " + opponents[line - 1].lineIndex + " collided with obstacle " + obstacle.lineIndex);
opponents[line - 1].isFalling = true;
opponents[line - 1].isOnGround = false;
- opponents[line - 1].fallAnim(); // Call fall animation before game over
+ //opponents[line - 1].fallAnim(); // Call fall animation before game over
}
}
}
}
Elongated elipse with black top half and white bottom half.
full close and front view of empty stands. retro gaming style
delete
delete
Basquettes à ressort futuriste. vue de profile. Retro gaming style
a blue iron man style armor flying. Retro gaming style
a blue iron man style armor flying horizontally. Retro gaming style
round button with a big "up" arrow icon and a small line under it. UI
A big black horizontal arrow pointing left with centred text 'YOU' in capital letters, painted on an orange floor.. horizontal and pointing left
remove
gold athletics medal with ribbon. retro gaming style
a black oval with a crying smiley face.