User prompt
Change l'interface blanche pour qu'elle soit rose
User prompt
Je veux personnalisé le fond de mon jeu avec mon propre asset
User prompt
Ajoute une musique de fond en boucle au jeu
User prompt
Fait en sorte que le joueur puisse déplacer son abeille a la même vitesse que les autres abeilles
User prompt
Ajuste le jeu pour que le joueur puisse déplacer son abeille moins loin à chaque appuie, et ajoute la possibilité de déplacer l'abeille sur les côtés ou n'importe où
Code edit (1 edits merged)
Please save this source code
User prompt
Course des abeilles
Initial prompt
Crée le jeu "Course des abeilles", voici la description : Course des abeilles est un jeu de course, dans lequel le joueur dirige une abeille parmi 4 autres pour gagner la course des abeilles ! le jeu se présente sous forme de jeu de plateforme dans la forêt , Les abeilles adversaires avancent automatiquement, le joueur doit appuyer sur son écran pour faire avancer son abeille , mais son abeille ne se déplace qu'un peu à chaque appuie Il doit y avoir des obstacles sous formes d'arbres mobiles qui apparaissent des fois pour perturber la course, le joueur doit les éviter, les abeilles adversaires évitent les obstacles automatiquement, mais leurs capacités a le faire est aléatoire !, Si le joueur entre en collision avec un obstacle, il perd le jeu , et doit recommencer depuis le niveau 1, il doit y avoir un système de niveaux, le joueur monte d'un niveau a chaque course gagnée par son abeille en atteignant la ligne d'arrivée, Si c'est une autre abeille qui y arrive avant celle du joueur, le joueur perd et doit recommencer à partir du niveau 1
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { level: 1 }); /**** * Classes ****/ // Classe pour les abeilles adversaires var EnemyBee = Container.expand(function () { var self = Container.call(this); // Couleur différente selon l'index var colorId = self.colorId || 1; var assetId = 'bee_enemy' + colorId; var bee = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); self.width = bee.width; self.height = bee.height; self.lane = 0; self.speed = 0; self.avoidCooldown = 0; self.update = function () { // Avance automatiquement self.x += self.speed; // Petite oscillation pour donner vie bee.y = Math.sin(LK.ticks / 20 + self.lane) * 10; }; // Pour éviter un obstacle, saute sur le côté (change de voie) self.tryAvoid = function (obstacles) { if (self.avoidCooldown > 0) { self.avoidCooldown--; return; } // Si un obstacle est proche devant, tente d'éviter for (var i = 0; i < obstacles.length; i++) { var obs = obstacles[i]; if (obs.lane === self.lane && obs.x > self.x && obs.x - self.x < 180) { // Tente de changer de voie (aléatoire) var dirs = []; if (self.lane > 0) dirs.push(-1); if (self.lane < 4) dirs.push(1); if (dirs.length > 0) { var dir = dirs[Math.floor(Math.random() * dirs.length)]; self.lane += dir; self.y = laneY(self.lane); self.avoidCooldown = 30 + Math.floor(Math.random() * 20); } break; } } }; return self; }); // Classe pour l'abeille du joueur var PlayerBee = Container.expand(function () { var self = Container.call(this); var bee = self.attachAsset('bee_player', { anchorX: 0.5, anchorY: 0.5 }); self.width = bee.width; self.height = bee.height; self.lane = 2; // Par défaut, voie centrale (0-4) self.isJumping = false; self.jumpTargetY = 0; self.jumpStartY = 0; self.jumpProgress = 0; self.jumpDuration = 18; // frames self.speed = 0; // Avance seulement sur input self.update = function () { // Gestion du saut (bond) if (self.isJumping) { self.jumpProgress++; var t = self.jumpProgress / self.jumpDuration; // Mouvement vertical (arc de saut) self.y = self.jumpStartY - Math.sin(Math.PI * t) * 90; // Mouvement horizontal (avance) self.x += self.speed; if (self.jumpProgress >= self.jumpDuration) { self.isJumping = false; self.y = self.jumpTargetY; self.speed = 0; } } }; // Déclenche un bond en avant self.jump = function () { if (self.isJumping) return; self.isJumping = true; self.jumpStartY = self.y; self.jumpTargetY = self.y; self.jumpProgress = 0; self.speed = 32 + 8 * level; // Avance plus vite à haut niveau }; return self; }); // Classe pour les obstacles (arbres) var TreeObstacle = Container.expand(function () { var self = Container.call(this); var tree = self.attachAsset('tree', { anchorX: 0.5, anchorY: 1 }); self.width = tree.width; self.height = tree.height; self.lane = 0; self.update = function () { // Les obstacles ne bougent pas, mais pourraient bouger à haut niveau if (level >= 4) { // Oscillation horizontale self.x += Math.sin(LK.ticks / 40 + self.lane) * 0.7; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2e3c1c }); /**** * Game Code ****/ // Ligne d'arrivée // Obstacles (arbres) // Abeilles adversaires (4 couleurs différentes) // Abeille du joueur // --- Variables globales --- var level = storage.level || 1; var lanes = [0, 1, 2, 3, 4]; // 5 voies horizontales var laneSpacing = 350; var startX = 200; var finishX = 2048 - 200; var playerBee; var enemyBees = []; var obstacles = []; var finishLine; var scoreTxt; var levelTxt; var dragNode = null; var gameOver = false; // --- Fonctions utilitaires --- function laneY(lane) { // Espace verticalement les voies return 500 + lane * laneSpacing; } // --- Initialisation du jeu --- function setupGame() { // Nettoyage game.removeChildren(); enemyBees = []; obstacles = []; gameOver = false; // Ligne d'arrivée finishLine = LK.getAsset('finish_line', { anchorX: 0, anchorY: 0 }); finishLine.x = 0; finishLine.y = 350; game.addChild(finishLine); // Score (niveau) if (!scoreTxt) { scoreTxt = new Text2('Niveau: ' + level, { size: 90, fill: '#fff' }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); } scoreTxt.setText('Niveau: ' + level); // Affichage du niveau (en haut à droite) if (!levelTxt) { levelTxt = new Text2('', { size: 60, fill: '#fff' }); levelTxt.anchor.set(1, 0); LK.gui.topRight.addChild(levelTxt); } levelTxt.setText('Course des abeilles'); // Joueur playerBee = new PlayerBee(); playerBee.lane = 2; playerBee.x = startX; playerBee.y = laneY(playerBee.lane); game.addChild(playerBee); // Abeilles adversaires for (var i = 0; i < 4; i++) { var bee = new EnemyBee(); bee.colorId = i + 1; bee.lane = i < 2 ? i : i + 1; // Sauter la voie centrale pour le joueur bee.x = startX; bee.y = laneY(bee.lane); bee.speed = 7 + level * 1.5 + Math.random() * 2; game.addChild(bee); enemyBees.push(bee); } // Obstacles var nbObstacles = 3 + Math.floor(level * 0.7); for (var i = 0; i < nbObstacles; i++) { var obs = new TreeObstacle(); obs.lane = Math.floor(Math.random() * 5); obs.x = 600 + Math.random() * (finishX - 800); obs.y = laneY(obs.lane) + 60; game.addChild(obs); obstacles.push(obs); } // Ligne d'arrivée (visuelle) finishLine.y = laneY(0) - 80; finishLine.height = laneSpacing * 5 + 60; } // --- Contrôles joueur --- game.down = function (x, y, obj) { if (gameOver) return; // Un tap = bond en avant playerBee.jump(); }; game.move = function (x, y, obj) { // Rien à faire ici (pas de drag) }; game.up = function (x, y, obj) { // Rien à faire ici }; // --- Boucle principale --- game.update = function () { if (gameOver) return; // Update player playerBee.update(); // Update ennemis for (var i = 0; i < enemyBees.length; i++) { var bee = enemyBees[i]; bee.update(); bee.tryAvoid(obstacles); } // Update obstacles for (var i = 0; i < obstacles.length; i++) { obstacles[i].update(); } // --- Collisions joueur/obstacles --- for (var i = 0; i < obstacles.length; i++) { var obs = obstacles[i]; // Collision si même voie et x proche if (playerBee.lane === obs.lane && Math.abs(playerBee.x - obs.x) < 70) { // Perdu ! LK.effects.flashScreen(0xff0000, 800); gameOver = true; storage.level = 1; LK.setTimeout(function () { LK.showGameOver(); }, 700); return; } } // --- Collisions ennemis/obstacles (ils évitent, mais si collision, ralentissent) --- for (var i = 0; i < enemyBees.length; i++) { var bee = enemyBees[i]; for (var j = 0; j < obstacles.length; j++) { var obs = obstacles[j]; if (bee.lane === obs.lane && Math.abs(bee.x - obs.x) < 70) { bee.speed *= 0.7; } } } // --- Arrivée joueur --- if (playerBee.x >= finishX) { // Gagné ! LK.effects.flashScreen(0xffff00, 800); gameOver = true; storage.level = level + 1; LK.setTimeout(function () { LK.showYouWin(); }, 700); return; } // --- Arrivée ennemis --- for (var i = 0; i < enemyBees.length; i++) { if (enemyBees[i].x >= finishX) { // Perdu ! LK.effects.flashScreen(0xff0000, 800); gameOver = true; storage.level = 1; LK.setTimeout(function () { LK.showGameOver(); }, 700); return; } } }; // --- Démarrage --- setupGame(); // --- Gestion du reset automatique par LK --- LK.on('reset', function () { level = storage.level || 1; setupGame(); });
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,304 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1", {
+ level: 1
+});
+
+/****
+* Classes
+****/
+// Classe pour les abeilles adversaires
+var EnemyBee = Container.expand(function () {
+ var self = Container.call(this);
+ // Couleur différente selon l'index
+ var colorId = self.colorId || 1;
+ var assetId = 'bee_enemy' + colorId;
+ var bee = self.attachAsset(assetId, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.width = bee.width;
+ self.height = bee.height;
+ self.lane = 0;
+ self.speed = 0;
+ self.avoidCooldown = 0;
+ self.update = function () {
+ // Avance automatiquement
+ self.x += self.speed;
+ // Petite oscillation pour donner vie
+ bee.y = Math.sin(LK.ticks / 20 + self.lane) * 10;
+ };
+ // Pour éviter un obstacle, saute sur le côté (change de voie)
+ self.tryAvoid = function (obstacles) {
+ if (self.avoidCooldown > 0) {
+ self.avoidCooldown--;
+ return;
+ }
+ // Si un obstacle est proche devant, tente d'éviter
+ for (var i = 0; i < obstacles.length; i++) {
+ var obs = obstacles[i];
+ if (obs.lane === self.lane && obs.x > self.x && obs.x - self.x < 180) {
+ // Tente de changer de voie (aléatoire)
+ var dirs = [];
+ if (self.lane > 0) dirs.push(-1);
+ if (self.lane < 4) dirs.push(1);
+ if (dirs.length > 0) {
+ var dir = dirs[Math.floor(Math.random() * dirs.length)];
+ self.lane += dir;
+ self.y = laneY(self.lane);
+ self.avoidCooldown = 30 + Math.floor(Math.random() * 20);
+ }
+ break;
+ }
+ }
+ };
+ return self;
+});
+// Classe pour l'abeille du joueur
+var PlayerBee = Container.expand(function () {
+ var self = Container.call(this);
+ var bee = self.attachAsset('bee_player', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.width = bee.width;
+ self.height = bee.height;
+ self.lane = 2; // Par défaut, voie centrale (0-4)
+ self.isJumping = false;
+ self.jumpTargetY = 0;
+ self.jumpStartY = 0;
+ self.jumpProgress = 0;
+ self.jumpDuration = 18; // frames
+ self.speed = 0; // Avance seulement sur input
+ self.update = function () {
+ // Gestion du saut (bond)
+ if (self.isJumping) {
+ self.jumpProgress++;
+ var t = self.jumpProgress / self.jumpDuration;
+ // Mouvement vertical (arc de saut)
+ self.y = self.jumpStartY - Math.sin(Math.PI * t) * 90;
+ // Mouvement horizontal (avance)
+ self.x += self.speed;
+ if (self.jumpProgress >= self.jumpDuration) {
+ self.isJumping = false;
+ self.y = self.jumpTargetY;
+ self.speed = 0;
+ }
+ }
+ };
+ // Déclenche un bond en avant
+ self.jump = function () {
+ if (self.isJumping) return;
+ self.isJumping = true;
+ self.jumpStartY = self.y;
+ self.jumpTargetY = self.y;
+ self.jumpProgress = 0;
+ self.speed = 32 + 8 * level; // Avance plus vite à haut niveau
+ };
+ return self;
+});
+// Classe pour les obstacles (arbres)
+var TreeObstacle = Container.expand(function () {
+ var self = Container.call(this);
+ var tree = self.attachAsset('tree', {
+ anchorX: 0.5,
+ anchorY: 1
+ });
+ self.width = tree.width;
+ self.height = tree.height;
+ self.lane = 0;
+ self.update = function () {
+ // Les obstacles ne bougent pas, mais pourraient bouger à haut niveau
+ if (level >= 4) {
+ // Oscillation horizontale
+ self.x += Math.sin(LK.ticks / 40 + self.lane) * 0.7;
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
+ backgroundColor: 0x2e3c1c
+});
+
+/****
+* Game Code
+****/
+// Ligne d'arrivée
+// Obstacles (arbres)
+// Abeilles adversaires (4 couleurs différentes)
+// Abeille du joueur
+// --- Variables globales ---
+var level = storage.level || 1;
+var lanes = [0, 1, 2, 3, 4]; // 5 voies horizontales
+var laneSpacing = 350;
+var startX = 200;
+var finishX = 2048 - 200;
+var playerBee;
+var enemyBees = [];
+var obstacles = [];
+var finishLine;
+var scoreTxt;
+var levelTxt;
+var dragNode = null;
+var gameOver = false;
+// --- Fonctions utilitaires ---
+function laneY(lane) {
+ // Espace verticalement les voies
+ return 500 + lane * laneSpacing;
+}
+// --- Initialisation du jeu ---
+function setupGame() {
+ // Nettoyage
+ game.removeChildren();
+ enemyBees = [];
+ obstacles = [];
+ gameOver = false;
+ // Ligne d'arrivée
+ finishLine = LK.getAsset('finish_line', {
+ anchorX: 0,
+ anchorY: 0
+ });
+ finishLine.x = 0;
+ finishLine.y = 350;
+ game.addChild(finishLine);
+ // Score (niveau)
+ if (!scoreTxt) {
+ scoreTxt = new Text2('Niveau: ' + level, {
+ size: 90,
+ fill: '#fff'
+ });
+ scoreTxt.anchor.set(0.5, 0);
+ LK.gui.top.addChild(scoreTxt);
+ }
+ scoreTxt.setText('Niveau: ' + level);
+ // Affichage du niveau (en haut à droite)
+ if (!levelTxt) {
+ levelTxt = new Text2('', {
+ size: 60,
+ fill: '#fff'
+ });
+ levelTxt.anchor.set(1, 0);
+ LK.gui.topRight.addChild(levelTxt);
+ }
+ levelTxt.setText('Course des abeilles');
+ // Joueur
+ playerBee = new PlayerBee();
+ playerBee.lane = 2;
+ playerBee.x = startX;
+ playerBee.y = laneY(playerBee.lane);
+ game.addChild(playerBee);
+ // Abeilles adversaires
+ for (var i = 0; i < 4; i++) {
+ var bee = new EnemyBee();
+ bee.colorId = i + 1;
+ bee.lane = i < 2 ? i : i + 1; // Sauter la voie centrale pour le joueur
+ bee.x = startX;
+ bee.y = laneY(bee.lane);
+ bee.speed = 7 + level * 1.5 + Math.random() * 2;
+ game.addChild(bee);
+ enemyBees.push(bee);
+ }
+ // Obstacles
+ var nbObstacles = 3 + Math.floor(level * 0.7);
+ for (var i = 0; i < nbObstacles; i++) {
+ var obs = new TreeObstacle();
+ obs.lane = Math.floor(Math.random() * 5);
+ obs.x = 600 + Math.random() * (finishX - 800);
+ obs.y = laneY(obs.lane) + 60;
+ game.addChild(obs);
+ obstacles.push(obs);
+ }
+ // Ligne d'arrivée (visuelle)
+ finishLine.y = laneY(0) - 80;
+ finishLine.height = laneSpacing * 5 + 60;
+}
+// --- Contrôles joueur ---
+game.down = function (x, y, obj) {
+ if (gameOver) return;
+ // Un tap = bond en avant
+ playerBee.jump();
+};
+game.move = function (x, y, obj) {
+ // Rien à faire ici (pas de drag)
+};
+game.up = function (x, y, obj) {
+ // Rien à faire ici
+};
+// --- Boucle principale ---
+game.update = function () {
+ if (gameOver) return;
+ // Update player
+ playerBee.update();
+ // Update ennemis
+ for (var i = 0; i < enemyBees.length; i++) {
+ var bee = enemyBees[i];
+ bee.update();
+ bee.tryAvoid(obstacles);
+ }
+ // Update obstacles
+ for (var i = 0; i < obstacles.length; i++) {
+ obstacles[i].update();
+ }
+ // --- Collisions joueur/obstacles ---
+ for (var i = 0; i < obstacles.length; i++) {
+ var obs = obstacles[i];
+ // Collision si même voie et x proche
+ if (playerBee.lane === obs.lane && Math.abs(playerBee.x - obs.x) < 70) {
+ // Perdu !
+ LK.effects.flashScreen(0xff0000, 800);
+ gameOver = true;
+ storage.level = 1;
+ LK.setTimeout(function () {
+ LK.showGameOver();
+ }, 700);
+ return;
+ }
+ }
+ // --- Collisions ennemis/obstacles (ils évitent, mais si collision, ralentissent) ---
+ for (var i = 0; i < enemyBees.length; i++) {
+ var bee = enemyBees[i];
+ for (var j = 0; j < obstacles.length; j++) {
+ var obs = obstacles[j];
+ if (bee.lane === obs.lane && Math.abs(bee.x - obs.x) < 70) {
+ bee.speed *= 0.7;
+ }
+ }
+ }
+ // --- Arrivée joueur ---
+ if (playerBee.x >= finishX) {
+ // Gagné !
+ LK.effects.flashScreen(0xffff00, 800);
+ gameOver = true;
+ storage.level = level + 1;
+ LK.setTimeout(function () {
+ LK.showYouWin();
+ }, 700);
+ return;
+ }
+ // --- Arrivée ennemis ---
+ for (var i = 0; i < enemyBees.length; i++) {
+ if (enemyBees[i].x >= finishX) {
+ // Perdu !
+ LK.effects.flashScreen(0xff0000, 800);
+ gameOver = true;
+ storage.level = 1;
+ LK.setTimeout(function () {
+ LK.showGameOver();
+ }, 700);
+ return;
+ }
+ }
+};
+// --- Démarrage ---
+setupGame();
+// --- Gestion du reset automatique par LK ---
+LK.on('reset', function () {
+ level = storage.level || 1;
+ setupGame();
});
\ No newline at end of file
Arbre. In-Game asset. 2d. High contrast. No shadows
Abeille rouge. In-Game asset. 2d. High contrast. No shadows
Abeille bleu. In-Game asset. 2d. High contrast. No shadows
Abeille verte. In-Game asset. 2d. High contrast. No shadows
Abeille orange. In-Game asset. 2d. High contrast. No shadows
Abeille jaune. In-Game asset. 2d. High contrast. No shadows
Fond d'écran forêt. In-Game asset. 2d. High contrast. No shadows