Code edit (6 edits merged)
Please save this source code
User prompt
add a Text2 in the Billboard class
Code edit (4 edits merged)
Please save this source code
User prompt
add a Billboard class
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: jumpButtonHelpText is undefined' in or related to this line: 'jumpButtonHelpText.visible = true;' Line Number: 1686
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
implement setRoundColors use a random color for the tint except the 1st color '0x1188FF' which is fixed for the player (line 0)
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'TypeError: athlete is undefined' in or related to this line: 'usedColors.push(opponents[i] ? opponents[i].tint : athlete.tint);' Line Number: 1624
Code edit (3 edits merged)
Please save this source code
User prompt
in getRunnerColor, ensure that runners don't get the same color
Code edit (1 edits merged)
Please save this source code
User prompt
in Athlete class, use a random color for the tint except the 1st color '0x1188FF' which is fixed for the player (line 0)
User prompt
add more unique colors to the colorsArray
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: 'TypeError: LK.gameover is not a function' in or related to this line: 'LK.gameover();' Line Number: 1008
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 (1 edits merged)
Please save this source code
===================================================================
--- original.js
+++ change.js
@@ -308,9 +308,9 @@
self.isOnGround = false;
// Handle jump bonus
if (!self.isAI && self.justTookBonus) {
self.nbJumps++;
- if (self.nbJumps > 3) {
+ if (self.nbJumps > nbBonusJumps) {
log("JUMPS FINISHED " + self.nbJumps);
self.justTookBonus = false;
self.jumpSpeed = self.jumpSpeedDefault;
self.speedBeforeBonus = 0;
@@ -756,9 +756,9 @@
self.rightRod = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.0,
x: 95,
- y: -450,
+ y: -445,
//-460
tint: 0x999999
});
self.centralRod = self.attachAsset('obstacle', {
@@ -810,10 +810,11 @@
// Pointer
self.pointer = self.attachAsset('pointer', {
anchorX: 0.5,
anchorY: 0.5,
- x: athleteX - 420,
- y: groundLevelY + 150,
+ x: athleteX - 430,
+ y: groundLevelY + 145,
+ rotation: 0.03,
visible: line == 0 && currentRoundNumber == 1
});
/*
x: 150,
@@ -846,12 +847,12 @@
/****
* Game Code
****/
+// Enumeration for game states
/****************************************************************************************** */
/************************************** GLOBAL VARIABLES ********************************** */
/****************************************************************************************** */
-// Enumeration for game states
var GAME_STATE = {
INIT: 'INIT',
MENU: 'MENU',
HELP: 'HELP',
@@ -866,13 +867,14 @@
var numberOfOpponents = 4; // Adjust based on the actual number of opponents in the game
var groundLevel = 2732 - 200; // Ground level set 200px from the bottom
var linesGroundLevels = []; // Ground level set 200px from the bottom
var numberOfLines = 1 + numberOfOpponents;
-var numberOfObstacles = 2; // 20; // Total number of hurdles
+var numberOfObstacles = 20; // Total number of hurdles
var obstacles = [[]];
var obstacleSpawnTicker = 0;
var obstacleSpawnDistanceRate = 1.5; // Ratio of screen width between obstacles
var obstacleJustPassed = false;
+var nbBonusJumps = 3;
var startingBlocks = [];
var blockers = [];
var startX = 600;
var lastRunTime = 0;
@@ -890,9 +892,10 @@
var drone;
var bonusManager;
var currentFinishPosition = 1;
var difficultyLevel = 1;
-var globalBaseSpeed = -20 - 5 * difficultyLevel;
+var difficultyLevelMax = 4;
+var globalBaseSpeed = -20 - 3 * difficultyLevel * difficultyLevel;
var globalSpeedPerLine = []; // Global speed for tracks and obstacles default -10 / min = -4
var speedGauge = 0;
var raceFinishTime = 0;
var raceStartTime = 0;
@@ -919,9 +922,9 @@
// Purple
0x008080 // Teal;
];
var currentRoundColors = [];
-var isDebug = true;
+var isDebug = false;
var debugMarker;
// UI
var startText;
var startButton;
@@ -1020,9 +1023,9 @@
case GAME_STATE.MENU:
gameMenuDown(x, y, obj);
break;
case GAME_STATE.STARTING:
- hurdlesStartingPlayingDown(x, y, obj);
+ gameStartingDown(x, y, obj);
break;
case GAME_STATE.PLAYING:
gamePlayingDown(x, y, obj);
break;
@@ -1033,12 +1036,12 @@
});
function gameMenuDown(x, y, obj) {
log("gameMenuDown...");
cleanMenuState();
- initHurdlesStartingState();
+ initStartingState();
}
-function hurdlesStartingPlayingDown(x, y, obj) {
- cleanHurdlesStartingState();
+function gameStartingDown(x, y, obj) {
+ cleanStartingState();
initPlayingState();
}
function gamePlayingDown(x, y, obj) {
log("gamePlayingDown ...");
@@ -1064,9 +1067,9 @@
} else {
log("gamePlayingDown : raceFinishTime : " + raceFinishTime + " => " + (Date.now() - raceFinishTime));
if (Date.now() - raceFinishTime > 1000) {
// Next round
- cleanPlayingHurdlesState();
+ cleanPlayingState();
initMenuState();
}
}
}
@@ -1204,11 +1207,11 @@
startText.destroy();
game.removeChild(startButton);
startButton.destroy();
}
-// STARTING HURDLES
-function initHurdlesStartingState() {
- log("initHurdlesStartingState...");
+// STARTING
+function initStartingState() {
+ log("initStartingState...");
// Initialize ground levels & speeds
for (var line = 0; line < numberOfLines; line++) {
linesGroundLevels[line] = groundLevel - 200 - 220 * line;
globalSpeedPerLine[line] = globalBaseSpeed * (line ? 1.0 : speedGauge);
@@ -1275,9 +1278,9 @@
LK.gui.center.addChild(jumpButtonHelpText);
showRunButtons();
gameState = GAME_STATE.STARTING;
}
-function cleanHurdlesStartingState() {
+function cleanStartingState() {
for (var i = numberOfOpponents - 1; i >= 0; i--) {
opponents[i].setPosture(idlePosture);
opponents[i].isRunning = true;
}
@@ -1285,19 +1288,19 @@
athlete.isRunning = true;
runButtonHelpText.visible = false;
jumpButtonHelpText.visible = false;
}
-function hurdlesStarting() {
- log("hurdlesStarting...");
+function gameStarting() {
+ log("gameStarting...");
for (var i = 0; i <= numberOfOpponents; i++) {
var athletes = [athlete].concat(opponents);
athletes[i]._update_migrated();
}
if (drone) {
drone._update_migrated();
}
}
-// PLAYING HURDLES
+// PLAYING
function initPlayingState() {
scoreTxt = new Text2("0/" + numberOfObstacles.toString(), {
size: 80,
fill: "#FFFFFF"
@@ -1318,19 +1321,41 @@
game.addChild(drone);
raceStartTime = Date.now();
gameState = GAME_STATE.PLAYING;
}
-function cleanPlayingHurdlesState() {
+function gamePlaying() {
+ //log("Game playing...");
+ // Update fields
+ updateFields();
+ // Update obstacles
+ updateObstacles();
+ // Update Progress
+ updateProgress();
+ // Update opponents
+ for (var i = numberOfOpponents - 1; i >= 0; i--) {
+ opponents[i]._update_migrated();
+ game.addChild(opponents[i]);
+ }
+ // Update athlete
+ athlete._update_migrated();
+ game.addChild(athlete);
+ // Check for collisions
+ checkForCollisions();
+ // Update drone
+ drone._update_migrated();
+ bonusManager._update_migrated();
+}
+function cleanPlayingState() {
// Increment round number
currentRoundNumber++;
// Increase difficulty if the athlete has won the race
if (athlete.finishPosition == 1) {
difficultyLevel++;
- if (difficultyLevel > 3) {
+ if (difficultyLevel > difficultyLevelMax) {
// TODO SWITCH TO SCORE STATE
LK.showGameOver();
}
- globalBaseSpeed = -20 - 5 * difficultyLevel;
+ globalBaseSpeed = -20 - 3 * difficultyLevel * difficultyLevel;
}
// Remove Opponents & Athlete
for (var i = numberOfOpponents - 1; i >= 0; i--) {
game.removeChild(opponents[i]);
@@ -1353,30 +1378,8 @@
// Remove Score Text
LK.gui.top.removeChild(scoreTxt);
scoreTxt.destroy();
}
-function gamePlaying() {
- //log("Game playing...");
- // Update fields
- updateFields();
- // Update obstacles
- updateObstacles();
- // Update Progress
- updateProgress();
- // Update opponents
- for (var i = numberOfOpponents - 1; i >= 0; i--) {
- opponents[i]._update_migrated();
- game.addChild(opponents[i]);
- }
- // Update athlete
- athlete._update_migrated();
- game.addChild(athlete);
- // Check for collisions
- checkForCollisions();
- // Update drone
- drone._update_migrated();
- bonusManager._update_migrated();
-}
/****************************************************************************************** */
/************************************** GAME FUNCTIONS ************************************ */
/****************************************************************************************** */
function updateFields() {
@@ -1435,9 +1438,9 @@
// 3 obstacles per line
var newObstacle = new Obstacle(line);
newObstacle.x = obstacles[0][i].x + 100 * line; // Start from the right edge
//log("Obstacle "+ line+","+i+" +> x="+ newObstacle.x);
- newObstacle.y = groundLevel + 200 - 215 * line; //- 220 * line;
+ newObstacle.y = groundLevel + 200 - 212 * line; //- 220 * line;
obstacles[line].push(newObstacle);
game.addChild(newObstacle);
}
}
@@ -1544,9 +1547,9 @@
globalSpeedPerLine[line] = 0;
}
}
}
- if (drone && !drone.entered && numberOfObstacles - obstacles[0].length > droneEnrtyObstacleNumber) {
+ if (drone && !drone.entered && difficultyLevel > 1 && numberOfObstacles - obstacles[0].length > droneEnrtyObstacleNumber) {
drone.enter();
}
}
function checkForCollisions() {
@@ -1687,9 +1690,9 @@
case GAME_STATE.MENU:
menuHandling();
break;
case GAME_STATE.STARTING:
- hurdlesStarting();
+ gameStarting();
break;
case GAME_STATE.PLAYING:
gamePlaying();
break;
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.