User prompt
There are 3 cards in the game. The number of cards increases with each level. In the final, there are 9 cards. If I choose the right one, I win.
User prompt
undo action
User prompt
I accidentally deleted it, make it final
User prompt
move the cards to the right of the screen
User prompt
Please fix the bug: 'actualSpacing is not defined' in or related to this line: 'card.x = startX + col * actualSpacing;' Line Number: 127
User prompt
center cards on screen
User prompt
Separate the cards from each other so they don't stick together
User prompt
open the cards
User prompt
increase card sizes
User prompt
The cards should be a little closer to the side, 3 rows up, 6 rows up
User prompt
be chosen with a stick in the game
User prompt
have a background in the game
User prompt
let there be music in the game
User prompt
The correct card is worth 1000 points.
User prompt
May the cars increase in every section
User prompt
At the beginning of the game, show me the card and deal 3 cards on the ground. Shuffle them slowly. If I find the correct card, I win. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
pacman
Code edit (1 edits merged)
Please save this source code
User prompt
Beauty Contest Judge
Initial prompt
Miss Mister World '96 tarzı oyun yapacaksın resimlerini benim seçeceğim yükleyeceğim
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Ghost = Container.expand(function (startX, startY, color) {
var self = Container.call(this);
var ghostSprite = self.attachAsset('ghost', {
anchorX: 0.5,
anchorY: 0.5
});
ghostSprite.tint = color;
self.gridX = startX;
self.gridY = startY;
self.targetX = startX;
self.targetY = startY;
self.direction = 0;
self.speed = 1.5;
self.moving = false;
self.vulnerable = false;
self.update = function () {
if (powerMode) {
self.vulnerable = true;
ghostSprite.tint = 0x0000FF;
} else {
self.vulnerable = false;
ghostSprite.tint = color;
}
if (!self.moving) {
var possibleDirections = [];
// Check all 4 directions
if (maze[self.gridY][self.gridX + 1] !== 1) possibleDirections.push(0); // right
if (maze[self.gridY + 1] && maze[self.gridY + 1][self.gridX] !== 1) possibleDirections.push(1); // down
if (maze[self.gridY][self.gridX - 1] !== 1) possibleDirections.push(2); // left
if (maze[self.gridY - 1] && maze[self.gridY - 1][self.gridX] !== 1) possibleDirections.push(3); // up
if (possibleDirections.length > 0) {
self.direction = possibleDirections[Math.floor(Math.random() * possibleDirections.length)];
if (self.direction === 0) self.targetX = self.gridX + 1;else if (self.direction === 1) self.targetY = self.gridY + 1;else if (self.direction === 2) self.targetX = self.gridX - 1;else if (self.direction === 3) self.targetY = self.gridY - 1;
self.moving = true;
}
}
if (self.moving) {
var targetPixelX = self.targetX * 40 + 20;
var targetPixelY = self.targetY * 40 + 20;
var dx = targetPixelX - self.x;
var dy = targetPixelY - self.y;
if (Math.abs(dx) < self.speed && Math.abs(dy) < self.speed) {
self.x = targetPixelX;
self.y = targetPixelY;
self.gridX = self.targetX;
self.gridY = self.targetY;
self.moving = false;
} else {
if (dx > 0) self.x += Math.min(self.speed, dx);else if (dx < 0) self.x += Math.max(-self.speed, dx);
if (dy > 0) self.y += Math.min(self.speed, dy);else if (dy < 0) self.y += Math.max(-self.speed, dy);
}
}
// Check collision with Pacman
if (self.gridX === pacman.gridX && self.gridY === pacman.gridY) {
if (self.vulnerable) {
// Ghost eaten
LK.setScore(LK.getScore() + 200);
self.gridX = 10;
self.gridY = 10;
self.x = self.gridX * 40 + 20;
self.y = self.gridY * 40 + 20;
self.targetX = self.gridX;
self.targetY = self.gridY;
self.moving = false;
} else {
// Pacman dies
LK.getSound('death').play();
LK.effects.flashScreen(0xFF0000, 1000);
LK.showGameOver();
}
}
};
return self;
});
var Pacman = Container.expand(function () {
var self = Container.call(this);
var pacmanSprite = self.attachAsset('pacman', {
anchorX: 0.5,
anchorY: 0.5
});
self.direction = 0; // 0=right, 1=down, 2=left, 3=up
self.nextDirection = 0;
self.speed = 2;
self.gridX = 1;
self.gridY = 1;
self.targetX = 1;
self.targetY = 1;
self.moving = false;
self.setDirection = function (dir) {
self.nextDirection = dir;
};
self.update = function () {
if (!self.moving) {
// Check if we can change direction
var canMove = false;
var newTargetX = self.gridX;
var newTargetY = self.gridY;
if (self.nextDirection === 0) {
// right
newTargetX = self.gridX + 1;
canMove = maze[self.gridY][newTargetX] !== 1;
} else if (self.nextDirection === 1) {
// down
newTargetY = self.gridY + 1;
canMove = maze[newTargetY] && maze[newTargetY][self.gridX] !== 1;
} else if (self.nextDirection === 2) {
// left
newTargetX = self.gridX - 1;
canMove = maze[self.gridY][newTargetX] !== 1;
} else if (self.nextDirection === 3) {
// up
newTargetY = self.gridY - 1;
canMove = maze[newTargetY] && maze[newTargetY][self.gridX] !== 1;
}
if (canMove) {
self.direction = self.nextDirection;
self.targetX = newTargetX;
self.targetY = newTargetY;
self.moving = true;
}
}
if (self.moving) {
var targetPixelX = self.targetX * 40 + 20;
var targetPixelY = self.targetY * 40 + 20;
var dx = targetPixelX - self.x;
var dy = targetPixelY - self.y;
if (Math.abs(dx) < self.speed && Math.abs(dy) < self.speed) {
self.x = targetPixelX;
self.y = targetPixelY;
self.gridX = self.targetX;
self.gridY = self.targetY;
self.moving = false;
// Check for dots
if (maze[self.gridY][self.gridX] === 2) {
maze[self.gridY][self.gridX] = 0;
LK.setScore(LK.getScore() + 10);
LK.getSound('chomp').play();
dotsRemaining--;
if (dotsRemaining <= 0) {
LK.showYouWin();
}
}
// Check for power pellets
if (maze[self.gridY][self.gridX] === 3) {
maze[self.gridY][self.gridX] = 0;
LK.setScore(LK.getScore() + 50);
LK.getSound('powerup').play();
powerMode = true;
powerTimer = 300; // 5 seconds at 60fps
}
} else {
if (dx > 0) self.x += Math.min(self.speed, dx);else if (dx < 0) self.x += Math.max(-self.speed, dx);
if (dy > 0) self.y += Math.min(self.speed, dy);else if (dy < 0) self.y += Math.max(-self.speed, dy);
}
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Pacman maze layout (1 = wall, 0 = empty, 2 = dot, 3 = power pellet)
var maze = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1], [1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 3, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1], [1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1], [1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1], [1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1], [0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0], [1, 1, 1, 1, 1, 2, 1, 0, 1, 1, 0, 1, 1, 0, 1, 2, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 2, 1, 0, 1, 1, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 1], [0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0], [1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1], [1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1], [1, 3, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1], [1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1], [1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1], [1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]];
var walls = [];
var dots = [];
var powerPellets = [];
var ghosts = [];
var pacman;
var dotsRemaining = 0;
var powerMode = false;
var powerTimer = 0;
// Create maze visual elements
for (var y = 0; y < maze.length; y++) {
for (var x = 0; x < maze[y].length; x++) {
if (maze[y][x] === 1) {
// Wall
var wall = game.addChild(LK.getAsset('wall', {
anchorX: 0.5,
anchorY: 0.5
}));
wall.x = x * 40 + 20;
wall.y = y * 40 + 20;
walls.push(wall);
} else if (maze[y][x] === 2) {
// Dot
var dot = game.addChild(LK.getAsset('dot', {
anchorX: 0.5,
anchorY: 0.5
}));
dot.x = x * 40 + 20;
dot.y = y * 40 + 20;
dots.push(dot);
dotsRemaining++;
} else if (maze[y][x] === 3) {
// Power pellet
var pellet = game.addChild(LK.getAsset('powerPellet', {
anchorX: 0.5,
anchorY: 0.5
}));
pellet.x = x * 40 + 20;
pellet.y = y * 40 + 20;
powerPellets.push(pellet);
}
}
}
// Create Pacman
pacman = game.addChild(new Pacman());
pacman.x = 40 + 20;
pacman.y = 40 + 20;
// Create ghosts
var ghostColors = [0xFF0000, 0xFFB6C1, 0x00FFFF, 0xFFB347];
for (var i = 0; i < 4; i++) {
var ghost = game.addChild(new Ghost(9 + i, 9, ghostColors[i]));
ghost.x = (9 + i) * 40 + 20;
ghost.y = 9 * 40 + 20;
ghosts.push(ghost);
}
// Score display
var scoreDisplay = new Text2('Score: 0', {
size: 32,
fill: 0xFFFFFF
});
scoreDisplay.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreDisplay);
// Touch controls
var touchStartX = 0;
var touchStartY = 0;
game.down = function (x, y, obj) {
touchStartX = x;
touchStartY = y;
};
game.up = function (x, y, obj) {
var deltaX = x - touchStartX;
var deltaY = y - touchStartY;
if (Math.abs(deltaX) > Math.abs(deltaY)) {
// Horizontal swipe
if (deltaX > 30) {
pacman.setDirection(0); // Right
} else if (deltaX < -30) {
pacman.setDirection(2); // Left
}
} else {
// Vertical swipe
if (deltaY > 30) {
pacman.setDirection(1); // Down
} else if (deltaY < -30) {
pacman.setDirection(3); // Up
}
}
};
game.update = function () {
scoreDisplay.setText('Score: ' + LK.getScore());
// Update power mode timer
if (powerMode) {
powerTimer--;
if (powerTimer <= 0) {
powerMode = false;
}
}
// Update dots visibility
for (var y = 0; y < maze.length; y++) {
for (var x = 0; x < maze[y].length; x++) {
if (maze[y][x] === 0) {
// Find and hide corresponding dot
for (var i = 0; i < dots.length; i++) {
if (dots[i].x === x * 40 + 20 && dots[i].y === y * 40 + 20) {
dots[i].visible = false;
break;
}
}
}
}
}
}; ===================================================================
--- original.js
+++ change.js
@@ -6,319 +6,286 @@
/****
* Classes
****/
-var ContestantCard = Container.expand(function (contestantData) {
+var Ghost = Container.expand(function (startX, startY, color) {
var self = Container.call(this);
- self.contestantData = contestantData;
- self.isSelected = false;
- self.currentRating = 0;
- // Card background
- var cardBg = self.attachAsset('contestantCard', {
+ var ghostSprite = self.attachAsset('ghost', {
anchorX: 0.5,
anchorY: 0.5
});
- // Photo placeholder
- var photo = self.attachAsset('contestantPhoto', {
- anchorX: 0.5,
- anchorY: 0.5,
- y: -20
- });
- // Contestant name
- var nameText = new Text2(contestantData.name, {
- size: 24,
- fill: 0x333333
- });
- nameText.anchor.set(0.5, 0.5);
- nameText.x = 0;
- nameText.y = 120;
- self.addChild(nameText);
- // Rating display
- var ratingText = new Text2('Rating: 0', {
- size: 20,
- fill: 0x666666
- });
- ratingText.anchor.set(0.5, 0.5);
- ratingText.x = 0;
- ratingText.y = 150;
- self.addChild(ratingText);
- // Rating buttons
- var ratingButtons = [];
- for (var i = 1; i <= 5; i++) {
- var button = self.attachAsset('ratingButton', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: (i - 3) * 60,
- y: 180
- });
- var buttonText = new Text2(i.toString(), {
- size: 18,
- fill: 0xFFFFFF
- });
- buttonText.anchor.set(0.5, 0.5);
- button.addChild(buttonText);
- button.rating = i;
- ratingButtons.push(button);
- }
- self.setRating = function (rating) {
- self.currentRating = rating;
- ratingText.setText('Rating: ' + rating);
- // Update button colors
- for (var i = 0; i < ratingButtons.length; i++) {
- var button = ratingButtons[i];
- if (button.rating <= rating) {
- button.tint = 0xf39c12;
+ ghostSprite.tint = color;
+ self.gridX = startX;
+ self.gridY = startY;
+ self.targetX = startX;
+ self.targetY = startY;
+ self.direction = 0;
+ self.speed = 1.5;
+ self.moving = false;
+ self.vulnerable = false;
+ self.update = function () {
+ if (powerMode) {
+ self.vulnerable = true;
+ ghostSprite.tint = 0x0000FF;
+ } else {
+ self.vulnerable = false;
+ ghostSprite.tint = color;
+ }
+ if (!self.moving) {
+ var possibleDirections = [];
+ // Check all 4 directions
+ if (maze[self.gridY][self.gridX + 1] !== 1) possibleDirections.push(0); // right
+ if (maze[self.gridY + 1] && maze[self.gridY + 1][self.gridX] !== 1) possibleDirections.push(1); // down
+ if (maze[self.gridY][self.gridX - 1] !== 1) possibleDirections.push(2); // left
+ if (maze[self.gridY - 1] && maze[self.gridY - 1][self.gridX] !== 1) possibleDirections.push(3); // up
+ if (possibleDirections.length > 0) {
+ self.direction = possibleDirections[Math.floor(Math.random() * possibleDirections.length)];
+ if (self.direction === 0) self.targetX = self.gridX + 1;else if (self.direction === 1) self.targetY = self.gridY + 1;else if (self.direction === 2) self.targetX = self.gridX - 1;else if (self.direction === 3) self.targetY = self.gridY - 1;
+ self.moving = true;
+ }
+ }
+ if (self.moving) {
+ var targetPixelX = self.targetX * 40 + 20;
+ var targetPixelY = self.targetY * 40 + 20;
+ var dx = targetPixelX - self.x;
+ var dy = targetPixelY - self.y;
+ if (Math.abs(dx) < self.speed && Math.abs(dy) < self.speed) {
+ self.x = targetPixelX;
+ self.y = targetPixelY;
+ self.gridX = self.targetX;
+ self.gridY = self.targetY;
+ self.moving = false;
} else {
- button.tint = 0x4a90e2;
+ if (dx > 0) self.x += Math.min(self.speed, dx);else if (dx < 0) self.x += Math.max(-self.speed, dx);
+ if (dy > 0) self.y += Math.min(self.speed, dy);else if (dy < 0) self.y += Math.max(-self.speed, dy);
}
}
- };
- self.setSelected = function (selected) {
- self.isSelected = selected;
- if (selected) {
- cardBg.tint = 0xf1c40f;
- tween(self, {
- scaleX: 1.1,
- scaleY: 1.1
- }, {
- duration: 300,
- easing: tween.easeOut
- });
- } else {
- cardBg.tint = 0xffffff;
- tween(self, {
- scaleX: 1.0,
- scaleY: 1.0
- }, {
- duration: 300,
- easing: tween.easeOut
- });
- }
- };
- self.down = function (x, y, obj) {
- // Check if clicked on rating button
- for (var i = 0; i < ratingButtons.length; i++) {
- var button = ratingButtons[i];
- var buttonPos = button.getBounds();
- var globalPos = self.toGlobal({
- x: x,
- y: y
- });
- if (globalPos.x >= buttonPos.x && globalPos.x <= buttonPos.x + buttonPos.width && globalPos.y >= buttonPos.y && globalPos.y <= buttonPos.y + buttonPos.height) {
- self.setRating(button.rating);
- LK.getSound('select').play();
- return;
+ // Check collision with Pacman
+ if (self.gridX === pacman.gridX && self.gridY === pacman.gridY) {
+ if (self.vulnerable) {
+ // Ghost eaten
+ LK.setScore(LK.getScore() + 200);
+ self.gridX = 10;
+ self.gridY = 10;
+ self.x = self.gridX * 40 + 20;
+ self.y = self.gridY * 40 + 20;
+ self.targetX = self.gridX;
+ self.targetY = self.gridY;
+ self.moving = false;
+ } else {
+ // Pacman dies
+ LK.getSound('death').play();
+ LK.effects.flashScreen(0xFF0000, 1000);
+ LK.showGameOver();
}
}
- // Otherwise select/deselect contestant
- self.setSelected(!self.isSelected);
- LK.getSound('select').play();
};
return self;
});
-var JudgePanel = Container.expand(function () {
+var Pacman = Container.expand(function () {
var self = Container.call(this);
- var panelBg = self.attachAsset('judgePanel', {
+ var pacmanSprite = self.attachAsset('pacman', {
anchorX: 0.5,
anchorY: 0.5
});
- var titleText = new Text2('Beauty Contest Judge', {
- size: 36,
- fill: 0xFFFFFF
- });
- titleText.anchor.set(0.5, 0.5);
- titleText.x = 0;
- titleText.y = -60;
- self.addChild(titleText);
- var scoreText = new Text2('Score: 0', {
- size: 24,
- fill: 0xFFFFFF
- });
- scoreText.anchor.set(0.5, 0.5);
- scoreText.x = -300;
- scoreText.y = -20;
- self.addChild(scoreText);
- var roundText = new Text2('Round: 1', {
- size: 24,
- fill: 0xFFFFFF
- });
- roundText.anchor.set(0.5, 0.5);
- roundText.x = 0;
- roundText.y = -20;
- self.addChild(roundText);
- var categoryText = new Text2('Evening Wear', {
- size: 24,
- fill: 0xFFFFFF
- });
- categoryText.anchor.set(0.5, 0.5);
- categoryText.x = 300;
- categoryText.y = -20;
- self.addChild(categoryText);
- var nextButton = self.attachAsset('nextRoundButton', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 0,
- y: 40
- });
- var nextButtonText = new Text2('Next Round', {
- size: 20,
- fill: 0xFFFFFF
- });
- nextButtonText.anchor.set(0.5, 0.5);
- nextButton.addChild(nextButtonText);
- self.updateScore = function (score) {
- scoreText.setText('Score: ' + score);
+ self.direction = 0; // 0=right, 1=down, 2=left, 3=up
+ self.nextDirection = 0;
+ self.speed = 2;
+ self.gridX = 1;
+ self.gridY = 1;
+ self.targetX = 1;
+ self.targetY = 1;
+ self.moving = false;
+ self.setDirection = function (dir) {
+ self.nextDirection = dir;
};
- self.updateRound = function (round) {
- roundText.setText('Round: ' + round);
- };
- self.updateCategory = function (category) {
- categoryText.setText(category);
- };
- self.down = function (x, y, obj) {
- var buttonPos = nextButton.getBounds();
- var globalPos = self.toGlobal({
- x: x,
- y: y
- });
- if (globalPos.x >= buttonPos.x && globalPos.x <= buttonPos.x + buttonPos.width && globalPos.y >= buttonPos.y && globalPos.y <= buttonPos.y + buttonPos.height) {
- nextRound();
- LK.getSound('nextRound').play();
+ self.update = function () {
+ if (!self.moving) {
+ // Check if we can change direction
+ var canMove = false;
+ var newTargetX = self.gridX;
+ var newTargetY = self.gridY;
+ if (self.nextDirection === 0) {
+ // right
+ newTargetX = self.gridX + 1;
+ canMove = maze[self.gridY][newTargetX] !== 1;
+ } else if (self.nextDirection === 1) {
+ // down
+ newTargetY = self.gridY + 1;
+ canMove = maze[newTargetY] && maze[newTargetY][self.gridX] !== 1;
+ } else if (self.nextDirection === 2) {
+ // left
+ newTargetX = self.gridX - 1;
+ canMove = maze[self.gridY][newTargetX] !== 1;
+ } else if (self.nextDirection === 3) {
+ // up
+ newTargetY = self.gridY - 1;
+ canMove = maze[newTargetY] && maze[newTargetY][self.gridX] !== 1;
+ }
+ if (canMove) {
+ self.direction = self.nextDirection;
+ self.targetX = newTargetX;
+ self.targetY = newTargetY;
+ self.moving = true;
+ }
}
+ if (self.moving) {
+ var targetPixelX = self.targetX * 40 + 20;
+ var targetPixelY = self.targetY * 40 + 20;
+ var dx = targetPixelX - self.x;
+ var dy = targetPixelY - self.y;
+ if (Math.abs(dx) < self.speed && Math.abs(dy) < self.speed) {
+ self.x = targetPixelX;
+ self.y = targetPixelY;
+ self.gridX = self.targetX;
+ self.gridY = self.targetY;
+ self.moving = false;
+ // Check for dots
+ if (maze[self.gridY][self.gridX] === 2) {
+ maze[self.gridY][self.gridX] = 0;
+ LK.setScore(LK.getScore() + 10);
+ LK.getSound('chomp').play();
+ dotsRemaining--;
+ if (dotsRemaining <= 0) {
+ LK.showYouWin();
+ }
+ }
+ // Check for power pellets
+ if (maze[self.gridY][self.gridX] === 3) {
+ maze[self.gridY][self.gridX] = 0;
+ LK.setScore(LK.getScore() + 50);
+ LK.getSound('powerup').play();
+ powerMode = true;
+ powerTimer = 300; // 5 seconds at 60fps
+ }
+ } else {
+ if (dx > 0) self.x += Math.min(self.speed, dx);else if (dx < 0) self.x += Math.max(-self.speed, dx);
+ if (dy > 0) self.y += Math.min(self.speed, dy);else if (dy < 0) self.y += Math.max(-self.speed, dy);
+ }
+ }
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x2c3e50
+ backgroundColor: 0x000000
});
/****
* Game Code
****/
-var contestants = [{
- name: 'Contestant 1',
- id: 1
-}, {
- name: 'Contestant 2',
- id: 2
-}, {
- name: 'Contestant 3',
- id: 3
-}, {
- name: 'Contestant 4',
- id: 4
-}, {
- name: 'Contestant 5',
- id: 5
-}, {
- name: 'Contestant 6',
- id: 6
-}];
-var categories = ['Evening Wear', 'Swimsuit', 'Talent', 'Interview', 'Final'];
-var currentRound = 1;
-var currentCategory = 0;
-var judgeScore = storage.judgeScore || 0;
-var contestantCards = [];
-// Create judge panel
-var judgePanel = game.addChild(new JudgePanel());
-judgePanel.x = 1024;
-judgePanel.y = 150;
-// Create contestant cards
-function createContestantCards() {
- // Clear existing cards
- for (var i = 0; i < contestantCards.length; i++) {
- contestantCards[i].destroy();
- }
- contestantCards = [];
- var startX = 350;
- var startY = 500;
- var spacing = 350;
- for (var i = 0; i < contestants.length; i++) {
- var card = game.addChild(new ContestantCard(contestants[i]));
- card.x = startX + i % 3 * spacing;
- card.y = startY + Math.floor(i / 3) * 500;
- contestantCards.push(card);
- }
-}
-function nextRound() {
- // Calculate round score based on ratings
- var roundScore = 0;
- var selectedCount = 0;
- for (var i = 0; i < contestantCards.length; i++) {
- var card = contestantCards[i];
- if (card.isSelected) {
- selectedCount++;
- roundScore += card.currentRating * 10;
+// Pacman maze layout (1 = wall, 0 = empty, 2 = dot, 3 = power pellet)
+var maze = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1], [1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 3, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1], [1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1], [1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1], [1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1], [0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0], [1, 1, 1, 1, 1, 2, 1, 0, 1, 1, 0, 1, 1, 0, 1, 2, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 2, 1, 0, 1, 1, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 1], [0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0], [1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1], [1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1], [1, 3, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, 1], [1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1], [1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1], [1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1], [1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]];
+var walls = [];
+var dots = [];
+var powerPellets = [];
+var ghosts = [];
+var pacman;
+var dotsRemaining = 0;
+var powerMode = false;
+var powerTimer = 0;
+// Create maze visual elements
+for (var y = 0; y < maze.length; y++) {
+ for (var x = 0; x < maze[y].length; x++) {
+ if (maze[y][x] === 1) {
+ // Wall
+ var wall = game.addChild(LK.getAsset('wall', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ wall.x = x * 40 + 20;
+ wall.y = y * 40 + 20;
+ walls.push(wall);
+ } else if (maze[y][x] === 2) {
+ // Dot
+ var dot = game.addChild(LK.getAsset('dot', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ dot.x = x * 40 + 20;
+ dot.y = y * 40 + 20;
+ dots.push(dot);
+ dotsRemaining++;
+ } else if (maze[y][x] === 3) {
+ // Power pellet
+ var pellet = game.addChild(LK.getAsset('powerPellet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ pellet.x = x * 40 + 20;
+ pellet.y = y * 40 + 20;
+ powerPellets.push(pellet);
}
- roundScore += card.currentRating * 5;
}
- // Bonus for selecting the right number of contestants
- var expectedSelections = Math.max(1, Math.floor(contestants.length / 2));
- if (selectedCount === expectedSelections) {
- roundScore += 50;
- }
- judgeScore += roundScore;
- LK.setScore(judgeScore);
- storage.judgeScore = judgeScore;
- // Eliminate non-selected contestants
- var newContestants = [];
- for (var i = 0; i < contestantCards.length; i++) {
- var card = contestantCards[i];
- if (card.isSelected || contestants.length <= 3) {
- newContestants.push(card.contestantData);
- }
- }
- contestants = newContestants;
- // Advance to next round
- currentRound++;
- currentCategory = (currentCategory + 1) % categories.length;
- // Check if final round
- if (contestants.length === 1) {
- LK.getSound('winner').play();
- LK.effects.flashScreen(0xf1c40f, 1000);
- // Add winner bonus
- judgeScore += 100;
- LK.setScore(judgeScore);
- storage.judgeScore = judgeScore;
- LK.showYouWin();
- return;
- }
- // Update UI
- judgePanel.updateScore(judgeScore);
- judgePanel.updateRound(currentRound);
- judgePanel.updateCategory(categories[currentCategory]);
- // Recreate cards for remaining contestants
- createContestantCards();
- // Flash effect for round transition
- LK.effects.flashScreen(0x3498db, 500);
}
-// Initialize game
-createContestantCards();
-judgePanel.updateScore(judgeScore);
-judgePanel.updateRound(currentRound);
-judgePanel.updateCategory(categories[currentCategory]);
-// Update score display
-var scoreDisplay = new Text2('Score: ' + judgeScore, {
+// Create Pacman
+pacman = game.addChild(new Pacman());
+pacman.x = 40 + 20;
+pacman.y = 40 + 20;
+// Create ghosts
+var ghostColors = [0xFF0000, 0xFFB6C1, 0x00FFFF, 0xFFB347];
+for (var i = 0; i < 4; i++) {
+ var ghost = game.addChild(new Ghost(9 + i, 9, ghostColors[i]));
+ ghost.x = (9 + i) * 40 + 20;
+ ghost.y = 9 * 40 + 20;
+ ghosts.push(ghost);
+}
+// Score display
+var scoreDisplay = new Text2('Score: 0', {
size: 32,
fill: 0xFFFFFF
});
scoreDisplay.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreDisplay);
+// Touch controls
+var touchStartX = 0;
+var touchStartY = 0;
+game.down = function (x, y, obj) {
+ touchStartX = x;
+ touchStartY = y;
+};
+game.up = function (x, y, obj) {
+ var deltaX = x - touchStartX;
+ var deltaY = y - touchStartY;
+ if (Math.abs(deltaX) > Math.abs(deltaY)) {
+ // Horizontal swipe
+ if (deltaX > 30) {
+ pacman.setDirection(0); // Right
+ } else if (deltaX < -30) {
+ pacman.setDirection(2); // Left
+ }
+ } else {
+ // Vertical swipe
+ if (deltaY > 30) {
+ pacman.setDirection(1); // Down
+ } else if (deltaY < -30) {
+ pacman.setDirection(3); // Up
+ }
+ }
+};
game.update = function () {
scoreDisplay.setText('Score: ' + LK.getScore());
- // Auto-advance if only one contestant remains
- if (contestants.length === 1 && currentRound > 1) {
- if (LK.ticks % 180 === 0) {
- // Wait 3 seconds
- nextRound();
+ // Update power mode timer
+ if (powerMode) {
+ powerTimer--;
+ if (powerTimer <= 0) {
+ powerMode = false;
}
}
-};
-// Game over condition - if no progress after many rounds
-var maxRounds = 10;
-if (currentRound > maxRounds) {
- LK.showGameOver();
-}
\ No newline at end of file
+ // Update dots visibility
+ for (var y = 0; y < maze.length; y++) {
+ for (var x = 0; x < maze[y].length; x++) {
+ if (maze[y][x] === 0) {
+ // Find and hide corresponding dot
+ for (var i = 0; i < dots.length; i++) {
+ if (dots[i].x === x * 40 + 20 && dots[i].y === y * 40 + 20) {
+ dots[i].visible = false;
+ break;
+ }
+ }
+ }
+ }
+ }
+};
\ No newline at end of file