/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var DJButton = Container.expand(function (buttonType, value) {
var self = Container.call(this);
var buttonGraphics;
if (buttonType === 'number') {
buttonGraphics = self.attachAsset('numberButton', {
anchorX: 0.5,
anchorY: 0.5
});
} else if (buttonType === 'blue') {
buttonGraphics = self.attachAsset('blueButton', {
anchorX: 0.5,
anchorY: 0.5
});
} else if (buttonType === 'red') {
buttonGraphics = self.attachAsset('redButton', {
anchorX: 0.5,
anchorY: 0.5
});
} else if (buttonType === 'green') {
buttonGraphics = self.attachAsset('greenButton', {
anchorX: 0.5,
anchorY: 0.5
});
}
var buttonText = new Text2(value.toString(), {
size: 40,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.buttonType = buttonType;
self.value = value;
self.isPressed = false;
self.press = function () {
if (!self.isPressed) {
self.isPressed = true;
tween(buttonGraphics, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100,
onFinish: function onFinish() {
tween(buttonGraphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 100,
onFinish: function onFinish() {
self.isPressed = false;
}
});
}
});
}
};
self.down = function (x, y, obj) {
self.press();
game.handleButtonPress(self.buttonType, self.value);
};
return self;
});
var Dancer = Container.expand(function () {
var self = Container.call(this);
var dancerGraphics = self.attachAsset('dancer', {
anchorX: 0.5,
anchorY: 1
});
self.state = 'neutral'; // neutral, happy, angry
self.isAnimating = false;
self.setHappy = function () {
if (self.state !== 'happy') {
self.state = 'happy';
dancerGraphics.tint = 0xffaa00;
self.startDanceAnimation();
}
};
self.setAngry = function () {
if (self.state !== 'angry') {
self.state = 'angry';
dancerGraphics.tint = 0x990000;
self.stopDanceAnimation();
}
};
self.setNeutral = function () {
self.state = 'neutral';
dancerGraphics.tint = 0xff6600;
self.stopDanceAnimation();
};
self.startDanceAnimation = function () {
if (!self.isAnimating) {
self.isAnimating = true;
self.danceLoop();
}
};
self.stopDanceAnimation = function () {
self.isAnimating = false;
tween.stop(self, {
scaleX: true,
scaleY: true,
rotation: true
});
self.scaleX = 1;
self.scaleY = 1;
self.rotation = 0;
};
self.danceLoop = function () {
if (!self.isAnimating) return;
tween(self, {
scaleX: 1.1,
scaleY: 0.9,
rotation: 0.1
}, {
duration: 300,
easing: tween.easeInOut,
onFinish: function onFinish() {
if (!self.isAnimating) return;
tween(self, {
scaleX: 0.9,
scaleY: 1.1,
rotation: -0.1
}, {
duration: 300,
easing: tween.easeInOut,
onFinish: function onFinish() {
if (!self.isAnimating) return;
tween(self, {
scaleX: 1,
scaleY: 1,
rotation: 0
}, {
duration: 200,
easing: tween.easeInOut,
onFinish: function onFinish() {
self.danceLoop();
}
});
}
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x220044
});
/****
* Game Code
****/
// Sounds
// Musical note decoration
// Dancers
// Buttons
// DJ Console and decorative elements
// Game variables
var dancers = [];
var djButtons = [];
var currentPrompt = null;
var promptSequence = [];
var gameSpeed = 2000; // ms between prompts
var consecutiveCorrect = 0;
var maxMistakes = 3;
var currentMistakes = 0;
var isGameActive = true;
var lightBeams = [];
var confettiParticles = [];
// UI elements
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var mistakesText = new Text2('Mistakes: 0/3', {
size: 40,
fill: 0xFF4444
});
mistakesText.anchor.set(1, 0);
mistakesText.x = LK.gui.topRight.x - 20;
mistakesText.y = 20;
LK.gui.topRight.addChild(mistakesText);
// Create DJ table
var djTable = game.addChild(LK.getAsset('djTable', {
anchorX: 0.5,
anchorY: 1,
x: 1024,
y: 2200
}));
// Add white stripes to DJ table
for (var i = 0; i < 4; i++) {
var stripe = djTable.addChild(LK.getAsset('whiteStripe', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -400 + i * 120
}));
}
// Create green screen
var greenScreen = djTable.addChild(LK.getAsset('greenScreen', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 200
}));
greenScreen.tint = 0xffffff; // White color
var promptText = new Text2('', {
size: 120,
fill: 0xFFFFFF
});
promptText.anchor.set(0.5, 0.5);
promptText.alpha = 0; // Start hidden
greenScreen.addChild(promptText);
// Add decorative knobs
for (var i = 0; i < 6; i++) {
var knob = djTable.addChild(LK.getAsset('knob', {
anchorX: 0.5,
anchorY: 0.5,
x: -600 + i * 120,
y: -450
}));
}
// Add piano keys
for (var i = 0; i < 12; i++) {
var key = djTable.addChild(LK.getAsset('key', {
anchorX: 0.5,
anchorY: 0.5,
x: -300 + i * 35,
y: -150
}));
}
// Add headphones
var headphones = djTable.addChild(LK.getAsset('headphones', {
anchorX: 0.5,
anchorY: 0.5,
x: -750,
y: -350
}));
// Add musical notes decoration
for (var i = 0; i < 8; i++) {
var note = djTable.addChild(LK.getAsset('musicalNote', {
anchorX: 0.5,
anchorY: 0.5,
x: -800 + i * 80,
y: -100
}));
}
// Create numbered buttons (1-5) in two rows: 1,2,3 on top, 4,5 on bottom
for (var i = 1; i <= 5; i++) {
var numberButton = new DJButton('number', i);
if (i <= 3) {
// Top row: buttons 1, 2, 3
numberButton.x = djTable.x + 200 + (i - 1) * 200;
numberButton.y = djTable.y - 350;
} else {
// Bottom row: buttons 4, 5
numberButton.x = djTable.x + 300 + (i - 4) * 200;
numberButton.y = djTable.y - 150;
}
game.addChild(numberButton);
djButtons.push(numberButton);
}
// Create colored buttons
var colorButtons = [{
type: 'blue',
color: 'B'
}, {
type: 'red',
color: 'R'
}, {
type: 'green',
color: 'G'
}];
for (var i = 0; i < colorButtons.length; i++) {
var colorButton = new DJButton(colorButtons[i].type, colorButtons[i].color);
colorButton.x = djTable.x - 450 + i * 180;
colorButton.y = djTable.y - 220;
game.addChild(colorButton);
djButtons.push(colorButton);
}
// Create light beams in background
for (var i = 0; i < 8; i++) {
var lightBeam = game.addChild(LK.getAsset('lightBeam', {
anchorX: 0.5,
anchorY: 0.5,
x: 200 + i * 250,
y: 1000
}));
var lightColors = [0xffff00, 0xff00ff, 0x00ffff, 0xff6600, 0x6600ff, 0x00ff66];
lightBeam.tint = lightColors[i % lightColors.length];
lightBeam.alpha = 0.3;
lightBeam.rotation = Math.PI / 4;
lightBeams.push(lightBeam);
}
// Create confetti particles
for (var i = 0; i < 25; i++) {
var confetti = game.addChild(LK.getAsset('confetti', {
anchorX: 0.5,
anchorY: 0.5,
x: Math.random() * 2048,
y: Math.random() * 2732
}));
var confettiColors = [0xff0066, 0x00ff66, 0x6600ff, 0xffff00, 0xff6600, 0x00ffff];
confetti.tint = confettiColors[i % confettiColors.length];
confetti.alpha = 0.7;
confetti.scaleX = Math.random() * 0.5 + 0.5;
confetti.scaleY = Math.random() * 0.5 + 0.5;
confetti.rotation = Math.random() * Math.PI * 2;
confettiParticles.push(confetti);
}
// Create dancers
for (var i = 0; i < 15; i++) {
var dancer = new Dancer();
// Position upper dancers in two rows with more spacing
if (i < 8) {
// First row (top) - 8 dancers
dancer.x = 50 + i * 250;
dancer.y = 600;
} else {
// Second row (below first row) - 7 dancers
dancer.x = 175 + (i - 8) * 250;
dancer.y = 800;
}
game.addChild(dancer);
dancers.push(dancer);
}
// Generate prompt from predefined sequence
var level1Sequence = ['B', 'R', 'G', '1', '2', '3', '4', '5'];
var sequenceIndex = 0;
function generatePrompt() {
// Show prompts randomly (karışık)
var randomIndex = Math.floor(Math.random() * level1Sequence.length);
var prompt = level1Sequence[randomIndex];
return prompt;
}
// Show new prompt
function showPrompt() {
if (!isGameActive) return;
currentPrompt = generatePrompt();
promptText.setText(currentPrompt);
// Make prompt text visible and animate it sliding through the screen
promptText.alpha = 1;
promptText.x = -greenScreen.width / 2 - 100; // Start from left side outside screen
promptText.y = 0; // Center vertically
// Animate text sliding from left to right through the green screen
tween(promptText, {
x: greenScreen.width / 2 + 100 // End at right side outside screen
}, {
duration: 5000,
easing: tween.linear,
onFinish: function onFinish() {
// Check if prompt was missed (still has current prompt when animation ends)
if (currentPrompt && isGameActive) {
// Play wrong sound for missed prompt
LK.getSound('wrongSound').play();
currentMistakes++;
consecutiveCorrect = 0;
// Make dancers angry
for (var i = 0; i < dancers.length; i++) {
dancers[i].setAngry();
}
// Check game over
if (currentMistakes >= maxMistakes) {
isGameActive = false;
isGameOver = true;
LK.clearInterval(promptTimer);
LK.showGameOver();
return;
}
// Update UI
scoreText.setText('Score: ' + LK.getScore());
mistakesText.setText('Mistakes: ' + currentMistakes + '/' + maxMistakes);
// Reset dancers to neutral after a delay
LK.setTimeout(function () {
if (isGameActive) {
for (var i = 0; i < dancers.length; i++) {
dancers[i].setNeutral();
}
}
}, 1000);
}
// Clear current prompt and reset position
currentPrompt = null;
promptText.setText('');
promptText.x = 0;
promptText.alpha = 0;
}
});
// Flash screen effect
tween(greenScreen, {
tint: 0xffffff
}, {
duration: 100,
onFinish: function onFinish() {
tween(greenScreen, {
tint: 0xffffff
}, {
duration: 100,
onFinish: function onFinish() {
greenScreen.tint = 0xffffff;
}
});
}
});
}
// Handle button press
game.handleButtonPress = function (buttonType, value) {
if (!isGameActive || !currentPrompt) return;
var isCorrect = false;
if (buttonType === 'number' && currentPrompt === value.toString()) {
isCorrect = true;
} else if (buttonType === 'blue' && currentPrompt === 'B') {
isCorrect = true;
} else if (buttonType === 'red' && currentPrompt === 'R') {
isCorrect = true;
} else if (buttonType === 'green' && currentPrompt === 'G') {
isCorrect = true;
}
if (isCorrect) {
LK.getSound('correctSound').play();
LK.setScore(LK.getScore() + 10);
consecutiveCorrect++;
// Make dancers happy
for (var i = 0; i < dancers.length; i++) {
dancers[i].setHappy();
}
// Increase speed every 5 correct answers
if (consecutiveCorrect % 5 === 0) {
gameSpeed = Math.max(800, gameSpeed - 200);
}
} else {
LK.getSound('wrongSound').play();
currentMistakes++;
consecutiveCorrect = 0;
// Make dancers angry
for (var i = 0; i < dancers.length; i++) {
dancers[i].setAngry();
}
// Check game over
if (currentMistakes >= maxMistakes) {
isGameActive = false;
isGameOver = true;
LK.clearInterval(promptTimer);
LK.showGameOver();
return;
}
}
// Update UI
scoreText.setText('Score: ' + LK.getScore());
mistakesText.setText('Mistakes: ' + currentMistakes + '/' + maxMistakes);
// Clear current prompt
currentPrompt = null;
promptText.setText('');
// Reset dancers to neutral after a delay
LK.setTimeout(function () {
if (isGameActive) {
for (var i = 0; i < dancers.length; i++) {
dancers[i].setNeutral();
}
}
}, 1000);
};
// Game timer for prompts
var promptTimer = LK.setInterval(function () {
showPrompt();
}, 2000);
// Game over click handler
var isGameOver = false;
game.down = function (x, y, obj) {
if (isGameOver) {
// Reset game state
isGameOver = false;
isGameActive = true;
currentMistakes = 0;
consecutiveCorrect = 0;
gameSpeed = 2000;
sequenceIndex = 0;
currentPrompt = null;
LK.setScore(0);
// Reset UI
scoreText.setText('Score: 0');
mistakesText.setText('Mistakes: 0/3');
promptText.setText('');
promptText.alpha = 0;
// Reset all dancers to neutral
for (var i = 0; i < dancers.length; i++) {
dancers[i].setNeutral();
}
// Restart music and game timer
LK.playMusic('gameMusic');
promptTimer = LK.setInterval(function () {
showPrompt();
}, 2000);
// Start first prompt
LK.setTimeout(function () {
showPrompt();
}, 2000);
}
};
// Start the game
LK.playMusic('gameMusic');
LK.setTimeout(function () {
showPrompt();
}, 2000);
game.update = function () {
// Animate light beams
for (var i = 0; i < lightBeams.length; i++) {
var beam = lightBeams[i];
beam.alpha = 0.2 + Math.sin(LK.ticks * 0.05 + i) * 0.3;
beam.scaleX = 0.8 + Math.sin(LK.ticks * 0.03 + i) * 0.4;
}
// Animate confetti particles
for (var i = 0; i < confettiParticles.length; i++) {
var particle = confettiParticles[i];
particle.y += Math.sin(LK.ticks * 0.02 + i) * 2;
particle.x += Math.cos(LK.ticks * 0.015 + i) * 1;
particle.rotation += 0.02;
// Reset position if particle goes off screen
if (particle.y > 2800) {
particle.y = -50;
particle.x = Math.random() * 2048;
}
if (particle.x > 2100) {
particle.x = -50;
}
if (particle.x < -50) {
particle.x = 2100;
}
}
}; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var DJButton = Container.expand(function (buttonType, value) {
var self = Container.call(this);
var buttonGraphics;
if (buttonType === 'number') {
buttonGraphics = self.attachAsset('numberButton', {
anchorX: 0.5,
anchorY: 0.5
});
} else if (buttonType === 'blue') {
buttonGraphics = self.attachAsset('blueButton', {
anchorX: 0.5,
anchorY: 0.5
});
} else if (buttonType === 'red') {
buttonGraphics = self.attachAsset('redButton', {
anchorX: 0.5,
anchorY: 0.5
});
} else if (buttonType === 'green') {
buttonGraphics = self.attachAsset('greenButton', {
anchorX: 0.5,
anchorY: 0.5
});
}
var buttonText = new Text2(value.toString(), {
size: 40,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.buttonType = buttonType;
self.value = value;
self.isPressed = false;
self.press = function () {
if (!self.isPressed) {
self.isPressed = true;
tween(buttonGraphics, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100,
onFinish: function onFinish() {
tween(buttonGraphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 100,
onFinish: function onFinish() {
self.isPressed = false;
}
});
}
});
}
};
self.down = function (x, y, obj) {
self.press();
game.handleButtonPress(self.buttonType, self.value);
};
return self;
});
var Dancer = Container.expand(function () {
var self = Container.call(this);
var dancerGraphics = self.attachAsset('dancer', {
anchorX: 0.5,
anchorY: 1
});
self.state = 'neutral'; // neutral, happy, angry
self.isAnimating = false;
self.setHappy = function () {
if (self.state !== 'happy') {
self.state = 'happy';
dancerGraphics.tint = 0xffaa00;
self.startDanceAnimation();
}
};
self.setAngry = function () {
if (self.state !== 'angry') {
self.state = 'angry';
dancerGraphics.tint = 0x990000;
self.stopDanceAnimation();
}
};
self.setNeutral = function () {
self.state = 'neutral';
dancerGraphics.tint = 0xff6600;
self.stopDanceAnimation();
};
self.startDanceAnimation = function () {
if (!self.isAnimating) {
self.isAnimating = true;
self.danceLoop();
}
};
self.stopDanceAnimation = function () {
self.isAnimating = false;
tween.stop(self, {
scaleX: true,
scaleY: true,
rotation: true
});
self.scaleX = 1;
self.scaleY = 1;
self.rotation = 0;
};
self.danceLoop = function () {
if (!self.isAnimating) return;
tween(self, {
scaleX: 1.1,
scaleY: 0.9,
rotation: 0.1
}, {
duration: 300,
easing: tween.easeInOut,
onFinish: function onFinish() {
if (!self.isAnimating) return;
tween(self, {
scaleX: 0.9,
scaleY: 1.1,
rotation: -0.1
}, {
duration: 300,
easing: tween.easeInOut,
onFinish: function onFinish() {
if (!self.isAnimating) return;
tween(self, {
scaleX: 1,
scaleY: 1,
rotation: 0
}, {
duration: 200,
easing: tween.easeInOut,
onFinish: function onFinish() {
self.danceLoop();
}
});
}
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x220044
});
/****
* Game Code
****/
// Sounds
// Musical note decoration
// Dancers
// Buttons
// DJ Console and decorative elements
// Game variables
var dancers = [];
var djButtons = [];
var currentPrompt = null;
var promptSequence = [];
var gameSpeed = 2000; // ms between prompts
var consecutiveCorrect = 0;
var maxMistakes = 3;
var currentMistakes = 0;
var isGameActive = true;
var lightBeams = [];
var confettiParticles = [];
// UI elements
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var mistakesText = new Text2('Mistakes: 0/3', {
size: 40,
fill: 0xFF4444
});
mistakesText.anchor.set(1, 0);
mistakesText.x = LK.gui.topRight.x - 20;
mistakesText.y = 20;
LK.gui.topRight.addChild(mistakesText);
// Create DJ table
var djTable = game.addChild(LK.getAsset('djTable', {
anchorX: 0.5,
anchorY: 1,
x: 1024,
y: 2200
}));
// Add white stripes to DJ table
for (var i = 0; i < 4; i++) {
var stripe = djTable.addChild(LK.getAsset('whiteStripe', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -400 + i * 120
}));
}
// Create green screen
var greenScreen = djTable.addChild(LK.getAsset('greenScreen', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 200
}));
greenScreen.tint = 0xffffff; // White color
var promptText = new Text2('', {
size: 120,
fill: 0xFFFFFF
});
promptText.anchor.set(0.5, 0.5);
promptText.alpha = 0; // Start hidden
greenScreen.addChild(promptText);
// Add decorative knobs
for (var i = 0; i < 6; i++) {
var knob = djTable.addChild(LK.getAsset('knob', {
anchorX: 0.5,
anchorY: 0.5,
x: -600 + i * 120,
y: -450
}));
}
// Add piano keys
for (var i = 0; i < 12; i++) {
var key = djTable.addChild(LK.getAsset('key', {
anchorX: 0.5,
anchorY: 0.5,
x: -300 + i * 35,
y: -150
}));
}
// Add headphones
var headphones = djTable.addChild(LK.getAsset('headphones', {
anchorX: 0.5,
anchorY: 0.5,
x: -750,
y: -350
}));
// Add musical notes decoration
for (var i = 0; i < 8; i++) {
var note = djTable.addChild(LK.getAsset('musicalNote', {
anchorX: 0.5,
anchorY: 0.5,
x: -800 + i * 80,
y: -100
}));
}
// Create numbered buttons (1-5) in two rows: 1,2,3 on top, 4,5 on bottom
for (var i = 1; i <= 5; i++) {
var numberButton = new DJButton('number', i);
if (i <= 3) {
// Top row: buttons 1, 2, 3
numberButton.x = djTable.x + 200 + (i - 1) * 200;
numberButton.y = djTable.y - 350;
} else {
// Bottom row: buttons 4, 5
numberButton.x = djTable.x + 300 + (i - 4) * 200;
numberButton.y = djTable.y - 150;
}
game.addChild(numberButton);
djButtons.push(numberButton);
}
// Create colored buttons
var colorButtons = [{
type: 'blue',
color: 'B'
}, {
type: 'red',
color: 'R'
}, {
type: 'green',
color: 'G'
}];
for (var i = 0; i < colorButtons.length; i++) {
var colorButton = new DJButton(colorButtons[i].type, colorButtons[i].color);
colorButton.x = djTable.x - 450 + i * 180;
colorButton.y = djTable.y - 220;
game.addChild(colorButton);
djButtons.push(colorButton);
}
// Create light beams in background
for (var i = 0; i < 8; i++) {
var lightBeam = game.addChild(LK.getAsset('lightBeam', {
anchorX: 0.5,
anchorY: 0.5,
x: 200 + i * 250,
y: 1000
}));
var lightColors = [0xffff00, 0xff00ff, 0x00ffff, 0xff6600, 0x6600ff, 0x00ff66];
lightBeam.tint = lightColors[i % lightColors.length];
lightBeam.alpha = 0.3;
lightBeam.rotation = Math.PI / 4;
lightBeams.push(lightBeam);
}
// Create confetti particles
for (var i = 0; i < 25; i++) {
var confetti = game.addChild(LK.getAsset('confetti', {
anchorX: 0.5,
anchorY: 0.5,
x: Math.random() * 2048,
y: Math.random() * 2732
}));
var confettiColors = [0xff0066, 0x00ff66, 0x6600ff, 0xffff00, 0xff6600, 0x00ffff];
confetti.tint = confettiColors[i % confettiColors.length];
confetti.alpha = 0.7;
confetti.scaleX = Math.random() * 0.5 + 0.5;
confetti.scaleY = Math.random() * 0.5 + 0.5;
confetti.rotation = Math.random() * Math.PI * 2;
confettiParticles.push(confetti);
}
// Create dancers
for (var i = 0; i < 15; i++) {
var dancer = new Dancer();
// Position upper dancers in two rows with more spacing
if (i < 8) {
// First row (top) - 8 dancers
dancer.x = 50 + i * 250;
dancer.y = 600;
} else {
// Second row (below first row) - 7 dancers
dancer.x = 175 + (i - 8) * 250;
dancer.y = 800;
}
game.addChild(dancer);
dancers.push(dancer);
}
// Generate prompt from predefined sequence
var level1Sequence = ['B', 'R', 'G', '1', '2', '3', '4', '5'];
var sequenceIndex = 0;
function generatePrompt() {
// Show prompts randomly (karışık)
var randomIndex = Math.floor(Math.random() * level1Sequence.length);
var prompt = level1Sequence[randomIndex];
return prompt;
}
// Show new prompt
function showPrompt() {
if (!isGameActive) return;
currentPrompt = generatePrompt();
promptText.setText(currentPrompt);
// Make prompt text visible and animate it sliding through the screen
promptText.alpha = 1;
promptText.x = -greenScreen.width / 2 - 100; // Start from left side outside screen
promptText.y = 0; // Center vertically
// Animate text sliding from left to right through the green screen
tween(promptText, {
x: greenScreen.width / 2 + 100 // End at right side outside screen
}, {
duration: 5000,
easing: tween.linear,
onFinish: function onFinish() {
// Check if prompt was missed (still has current prompt when animation ends)
if (currentPrompt && isGameActive) {
// Play wrong sound for missed prompt
LK.getSound('wrongSound').play();
currentMistakes++;
consecutiveCorrect = 0;
// Make dancers angry
for (var i = 0; i < dancers.length; i++) {
dancers[i].setAngry();
}
// Check game over
if (currentMistakes >= maxMistakes) {
isGameActive = false;
isGameOver = true;
LK.clearInterval(promptTimer);
LK.showGameOver();
return;
}
// Update UI
scoreText.setText('Score: ' + LK.getScore());
mistakesText.setText('Mistakes: ' + currentMistakes + '/' + maxMistakes);
// Reset dancers to neutral after a delay
LK.setTimeout(function () {
if (isGameActive) {
for (var i = 0; i < dancers.length; i++) {
dancers[i].setNeutral();
}
}
}, 1000);
}
// Clear current prompt and reset position
currentPrompt = null;
promptText.setText('');
promptText.x = 0;
promptText.alpha = 0;
}
});
// Flash screen effect
tween(greenScreen, {
tint: 0xffffff
}, {
duration: 100,
onFinish: function onFinish() {
tween(greenScreen, {
tint: 0xffffff
}, {
duration: 100,
onFinish: function onFinish() {
greenScreen.tint = 0xffffff;
}
});
}
});
}
// Handle button press
game.handleButtonPress = function (buttonType, value) {
if (!isGameActive || !currentPrompt) return;
var isCorrect = false;
if (buttonType === 'number' && currentPrompt === value.toString()) {
isCorrect = true;
} else if (buttonType === 'blue' && currentPrompt === 'B') {
isCorrect = true;
} else if (buttonType === 'red' && currentPrompt === 'R') {
isCorrect = true;
} else if (buttonType === 'green' && currentPrompt === 'G') {
isCorrect = true;
}
if (isCorrect) {
LK.getSound('correctSound').play();
LK.setScore(LK.getScore() + 10);
consecutiveCorrect++;
// Make dancers happy
for (var i = 0; i < dancers.length; i++) {
dancers[i].setHappy();
}
// Increase speed every 5 correct answers
if (consecutiveCorrect % 5 === 0) {
gameSpeed = Math.max(800, gameSpeed - 200);
}
} else {
LK.getSound('wrongSound').play();
currentMistakes++;
consecutiveCorrect = 0;
// Make dancers angry
for (var i = 0; i < dancers.length; i++) {
dancers[i].setAngry();
}
// Check game over
if (currentMistakes >= maxMistakes) {
isGameActive = false;
isGameOver = true;
LK.clearInterval(promptTimer);
LK.showGameOver();
return;
}
}
// Update UI
scoreText.setText('Score: ' + LK.getScore());
mistakesText.setText('Mistakes: ' + currentMistakes + '/' + maxMistakes);
// Clear current prompt
currentPrompt = null;
promptText.setText('');
// Reset dancers to neutral after a delay
LK.setTimeout(function () {
if (isGameActive) {
for (var i = 0; i < dancers.length; i++) {
dancers[i].setNeutral();
}
}
}, 1000);
};
// Game timer for prompts
var promptTimer = LK.setInterval(function () {
showPrompt();
}, 2000);
// Game over click handler
var isGameOver = false;
game.down = function (x, y, obj) {
if (isGameOver) {
// Reset game state
isGameOver = false;
isGameActive = true;
currentMistakes = 0;
consecutiveCorrect = 0;
gameSpeed = 2000;
sequenceIndex = 0;
currentPrompt = null;
LK.setScore(0);
// Reset UI
scoreText.setText('Score: 0');
mistakesText.setText('Mistakes: 0/3');
promptText.setText('');
promptText.alpha = 0;
// Reset all dancers to neutral
for (var i = 0; i < dancers.length; i++) {
dancers[i].setNeutral();
}
// Restart music and game timer
LK.playMusic('gameMusic');
promptTimer = LK.setInterval(function () {
showPrompt();
}, 2000);
// Start first prompt
LK.setTimeout(function () {
showPrompt();
}, 2000);
}
};
// Start the game
LK.playMusic('gameMusic');
LK.setTimeout(function () {
showPrompt();
}, 2000);
game.update = function () {
// Animate light beams
for (var i = 0; i < lightBeams.length; i++) {
var beam = lightBeams[i];
beam.alpha = 0.2 + Math.sin(LK.ticks * 0.05 + i) * 0.3;
beam.scaleX = 0.8 + Math.sin(LK.ticks * 0.03 + i) * 0.4;
}
// Animate confetti particles
for (var i = 0; i < confettiParticles.length; i++) {
var particle = confettiParticles[i];
particle.y += Math.sin(LK.ticks * 0.02 + i) * 2;
particle.x += Math.cos(LK.ticks * 0.015 + i) * 1;
particle.rotation += 0.02;
// Reset position if particle goes off screen
if (particle.y > 2800) {
particle.y = -50;
particle.x = Math.random() * 2048;
}
if (particle.x > 2100) {
particle.x = -50;
}
if (particle.x < -50) {
particle.x = 2100;
}
}
};
gri mor bir masa üzerinde tuşlar var dj stilinde. In-Game asset. 2d. High contrast. No shadows
etrafı sarı işleme çerçeveli beyaz. In-Game asset. 2d. High contrast. No shadows
dansöz kıyafetli ayakta duran elleri havada dans eden bir kedi. In-Game asset. 2d. High contrast. No shadows
bomb. In-Game asset. 2d. High contrast. No shadows