Code edit (3 edits merged)
Please save this source code
User prompt
make sure magatext appears in the same position as magagraphics, on top of them.
Code edit (1 edits merged)
Please save this source code
User prompt
make sure maga text appears in the center of maga and that its z index is highr
Code edit (1 edits merged)
Please save this source code
User prompt
make sure magatext is showed insidemaga
Code edit (1 edits merged)
Please save this source code
User prompt
make sure magatext is displayed in a top layer than maga asset
Code edit (3 edits merged)
Please save this source code
User prompt
add alpha to maga
User prompt
magatext should be in front of maga asset
Code edit (1 edits merged)
Please save this source code
User prompt
add text inside of maga asset. it should read:
User prompt
make sure maga asset is displayed again the second and next times the hat intersects the candidate
User prompt
Fix Bug: 'TypeError: Cannot set properties of undefined (setting 'visible')' in or related to this line: 'maga.visible = true;' Line Number: 99
Code edit (1 edits merged)
Please save this source code
User prompt
every time ishaton is true, show maga asset in the center of the screen for only 1.5 seconds
User prompt
on tick set maga asset to invisble if it has been visible for more than 1.5 seconds.
User prompt
show maga asset for 1.5 second in the center of the screen when ishaton is set to true.
User prompt
when candidate intersects with hat, spawn maga asset in the center of the screen and destroy it after 1.5 seconds of spawning.
User prompt
when candidate intersects with hat, add maga asset in the center of the screen and make it disappear after 1.5 seconds
User prompt
Fix Bug: 'Timeout.tick error: LK.resumeGame is not a function' in or related to this line: 'LK.resumeGame();' Line Number: 303
User prompt
Fix Bug: 'TypeError: LK.pauseGame is not a function' in or related to this line: 'LK.pauseGame();' Line Number: 294
User prompt
when candidate intersects with hat, pause game, add a white flicker effect on the screen, show maga asset in the center of the screen for 1.5 seconds, and then continue game.
User prompt
make hat flicker before it is destroyed when it reaches y >2550
/**** * Classes ****/ var DestroyPop = Container.expand(function () { var self = Container.call(this); var destroyPopGraphics = self.attachAsset('destroyPop', { anchorX: 0.5, anchorY: 0.5 }); self.alpha = 1; self.move = function () { self.alpha -= 0.02; if (self.alpha <= 0) { self.destroy(); } }; }); var ScorePop = Container.expand(function () { var self = Container.call(this); var scorePopText = new Text2('+1', { size: 100, fill: '#00ff00' }); scorePopText.anchor.set(0.5, 0.5); self.addChild(scorePopText); self.alpha = 1; self.move = function () { self.y -= 2; self.alpha -= 0.02; if (self.alpha <= 0) { self.destroy(); } }; }); var ScorePopNegative = Container.expand(function () { var self = Container.call(this); var scorePopText = new Text2('-1', { size: 100, fill: '#ff0000' }); scorePopText.anchor.set(0.5, 0.5); self.addChild(scorePopText); self.alpha = 1; self.move = function () { self.y -= 2; self.alpha -= 0.02; if (self.alpha <= 0) { self.destroy(); } }; }); var Candidate = Container.expand(function () { var self = Container.call(this); var candidateGraphics = self.attachAsset('candidate', { anchorX: 0.5, anchorY: 0.5 }); var shadowGraphics = self.attachAsset('shadow', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 0.6, alpha: 0.5, y: candidateGraphics.height / 2 }); shadowGraphics.tint = 0x000000; self.direction = 1; // 1 for right, -1 for left self.speed = 10; // Speed of candidate's sideways movement self.isHatOn = false; // Indicates whether the candidate is wearing a hat self.update = function () { var candidateGraphics = self.children[0]; var speed = self.isHatOn ? self.speed * 1.5 : self.speed; self.x += self.direction * speed; if (self.x > 2048 - candidateGraphics.width / 2) { self.direction = -1; } else if (self.x < candidateGraphics.width / 2) { self.direction = 1; } if (self.direction === 1) { candidateGraphics.scale.x = 1; // Normal orientation } else if (self.direction === -1) { candidateGraphics.scale.x = -1; // Mirrored orientation } }; }); var Vote = Container.expand(function () { var self = Container.call(this); var voteGraphics = self.attachAsset('vote', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 3; self.move = function () { self.y += self.speed; self.x += Math.sin(self.y / 100) * 3; // Smoother and smaller oscillation if (self.y > 2550) { self.tint = 0xff0000; LK.setScore(LK.getScore() - 1); scoreTxt.setText(LK.getScore()); var scorePopNegative = new ScorePopNegative(); scorePopNegative.x = self.x; scorePopNegative.y = self.y; game.addChild(scorePopNegative); var index = votes.indexOf(self); if (index > -1) { votes.splice(index, 1); } var flickerInterval = LK.setInterval(function () { self.visible = !self.visible; self.tint = self.visible ? 0xff0000 : 0xffffff; }, 100); LK.setTimeout(function () { LK.clearInterval(flickerInterval); self.destroy(); }, 500); } }; }); var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 3; self.move = function () { self.y += self.speed; self.rotation += 0.05; if (self.y > 2550) { var destroyPop = new DestroyPop(); destroyPop.x = self.x; destroyPop.y = self.y; game.addChild(destroyPop); self.destroy(); var index = obstacles.indexOf(self); if (index > -1) { obstacles.splice(index, 1); } } }; }); var Hat = Container.expand(function () { var self = Container.call(this); var hatGraphics = self.attachAsset('hat', { anchorX: 0.5, anchorY: 0.5 }); self.speed = Math.random() * 2 + 2; self.move = function () { self.y += self.speed; self.x += Math.sin(self.y / 100) * 10; // Swing movement if (self.y > 2550) { var flickerInterval = LK.setInterval(function () { self.visible = !self.visible; }, 100); LK.setTimeout(function () { LK.clearInterval(flickerInterval); self.destroy(); }, 500); } }; }); var PopUpText = Container.expand(function (text) { var self = Container.call(this); var popUpText = new Text2(text, { size: 100, fill: '#ffffff' }); popUpText.anchor.set(0.5, 0.5); self.addChild(popUpText); self.alpha = 1; self.move = function () { self.y -= 2; self.alpha -= 0.01; if (self.alpha <= 0) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game(); /**** * Game Code ****/ var background = game.addChild(LK.getAsset('background', { width: 2048, height: 2732, anchorX: 0, anchorY: 0, alpha: 0.5 })); var candidate = game.addChild(new Candidate()); candidate.x = 2048 / 2; candidate.y = 2732 - candidate.height / 2 - 90; var votes = []; var obstacles = []; var obstacles = []; var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff", dropShadow: true, dropShadowColor: "#000000", dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6 }); var scoreBackground = LK.getAsset('scoreBackground', { anchorX: 1, anchorY: 0, alpha: 0.8 }); LK.gui.topRight.addChild(scoreBackground); scoreBackground.x -= 10; scoreTxt.anchor.set(1, 0); LK.gui.topRight.addChild(scoreTxt); scoreTxt.x -= 70; scoreTxt.y += 50; var targetX = candidate.x; game.on('down', function (obj) { var event = obj.event; var pos = event.getLocalPosition(game); candidate.direction = pos.x > candidate.x ? 1 : -1; }); LK.on('tick', function () { candidate.update(targetX); if (LK.ticks % 100 == 0) { // Spawn a vote every second var newVote = new Vote(); newVote.x = Math.random() * 2048; // Random x position across the screen width newVote.y = -newVote.height / 2; // Start just above the screen newVote.speed += Math.floor(LK.ticks / 600); // Increase speed over time votes.push(newVote); game.addChild(newVote); } var obstacleSpawnRate = Math.max(360 - Math.floor(LK.ticks / 300), 20); // Decrease the maximum interval and increase the rate of difficulty over time if (LK.ticks % obstacleSpawnRate == 0) { // Spawn an obstacle more frequently as time progresses var newObstacle = new Obstacle(); newObstacle.x = Math.random() * 2048; // Random x position across the screen width newObstacle.y = -newObstacle.height / 2; // Start just above the screen newObstacle.speed += Math.floor(LK.ticks / 600); // Increase speed over time obstacles.push(newObstacle); game.addChild(newObstacle); } if (LK.ticks == 600 || LK.ticks > 600 && LK.ticks % 1800 == 0) { // Spawn a hat after 10 seconds and then every 30 seconds var newHat = new Hat(); newHat.x = Math.random() * (2048 - 1000) + 500; // Random x position across the screen width, at least 500 pixels from each side newHat.y = -newHat.height / 2; // Start just above the screen votes.push(newHat); game.addChild(newHat); } }); LK.on('tick', function () { for (var i = votes.length - 1; i >= 0; i--) { votes[i].move(); if (votes[i] instanceof Vote && candidate.intersects(votes[i])) { var scorePop = new ScorePop(); scorePop.x = votes[i].x; scorePop.y = votes[i].y; game.addChild(scorePop); votes[i].destroy(); votes.splice(i, 1); LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); } else if (votes[i] instanceof Hat && candidate.intersects(votes[i])) { var hat = votes[i]; hat.y = candidate.y - candidate.height / 2 - hat.height / 2 + 90; hat.x = candidate.x; hat.speed = 0; candidate.isHatOn = true; if (candidate.children[0].scale.x === -1) { hat.children[0].scale.x = -1; } else { hat.children[0].scale.x = 1; } LK.setTimeout(function () { var blinkInterval = LK.setInterval(function () { hat.visible = !hat.visible; }, 200); LK.setTimeout(function () { LK.clearInterval(blinkInterval); hat.destroy(); var index = votes.indexOf(hat); if (index > -1) { votes.splice(index, 1); } candidate.isHatOn = false; }, 2000); }, 8000); } } for (var i = game.children.length - 1; i >= 0; i--) { if (game.children[i] instanceof ScorePop || game.children[i] instanceof ScorePopNegative || game.children[i] instanceof PopUpText || game.children[i] instanceof DestroyPop) { game.children[i].move(); } } for (var i = obstacles.length - 1; i >= 0; i--) { obstacles[i].move(); if (candidate.intersects(obstacles[i])) { if (candidate.isHatOn) { var popUpWords = ['Biased!', 'Unfair!', 'Fake News!']; var randomWord = popUpWords[Math.floor(Math.random() * popUpWords.length)]; var popUpText = new PopUpText(randomWord); popUpText.x = obstacles[i].x; popUpText.y = obstacles[i].y; game.addChild(popUpText); obstacles[i].destroy(); var index = obstacles.indexOf(obstacles[i]); if (index > -1) { obstacles.splice(index, 1); } } else { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } } } }); // This is a simple initial game structure with a candidate collecting votes. // The game is designed to be mobile-friendly and uses touch events to place votes. // The candidate is centered at the bottom of the screen, and votes move upwards. // When a vote intersects with the candidate, the score increases.
/****
* Classes
****/
var DestroyPop = Container.expand(function () {
var self = Container.call(this);
var destroyPopGraphics = self.attachAsset('destroyPop', {
anchorX: 0.5,
anchorY: 0.5
});
self.alpha = 1;
self.move = function () {
self.alpha -= 0.02;
if (self.alpha <= 0) {
self.destroy();
}
};
});
var ScorePop = Container.expand(function () {
var self = Container.call(this);
var scorePopText = new Text2('+1', {
size: 100,
fill: '#00ff00'
});
scorePopText.anchor.set(0.5, 0.5);
self.addChild(scorePopText);
self.alpha = 1;
self.move = function () {
self.y -= 2;
self.alpha -= 0.02;
if (self.alpha <= 0) {
self.destroy();
}
};
});
var ScorePopNegative = Container.expand(function () {
var self = Container.call(this);
var scorePopText = new Text2('-1', {
size: 100,
fill: '#ff0000'
});
scorePopText.anchor.set(0.5, 0.5);
self.addChild(scorePopText);
self.alpha = 1;
self.move = function () {
self.y -= 2;
self.alpha -= 0.02;
if (self.alpha <= 0) {
self.destroy();
}
};
});
var Candidate = Container.expand(function () {
var self = Container.call(this);
var candidateGraphics = self.attachAsset('candidate', {
anchorX: 0.5,
anchorY: 0.5
});
var shadowGraphics = self.attachAsset('shadow', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 0.6,
alpha: 0.5,
y: candidateGraphics.height / 2
});
shadowGraphics.tint = 0x000000;
self.direction = 1; // 1 for right, -1 for left
self.speed = 10; // Speed of candidate's sideways movement
self.isHatOn = false; // Indicates whether the candidate is wearing a hat
self.update = function () {
var candidateGraphics = self.children[0];
var speed = self.isHatOn ? self.speed * 1.5 : self.speed;
self.x += self.direction * speed;
if (self.x > 2048 - candidateGraphics.width / 2) {
self.direction = -1;
} else if (self.x < candidateGraphics.width / 2) {
self.direction = 1;
}
if (self.direction === 1) {
candidateGraphics.scale.x = 1; // Normal orientation
} else if (self.direction === -1) {
candidateGraphics.scale.x = -1; // Mirrored orientation
}
};
});
var Vote = Container.expand(function () {
var self = Container.call(this);
var voteGraphics = self.attachAsset('vote', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 2 + 3;
self.move = function () {
self.y += self.speed;
self.x += Math.sin(self.y / 100) * 3; // Smoother and smaller oscillation
if (self.y > 2550) {
self.tint = 0xff0000;
LK.setScore(LK.getScore() - 1);
scoreTxt.setText(LK.getScore());
var scorePopNegative = new ScorePopNegative();
scorePopNegative.x = self.x;
scorePopNegative.y = self.y;
game.addChild(scorePopNegative);
var index = votes.indexOf(self);
if (index > -1) {
votes.splice(index, 1);
}
var flickerInterval = LK.setInterval(function () {
self.visible = !self.visible;
self.tint = self.visible ? 0xff0000 : 0xffffff;
}, 100);
LK.setTimeout(function () {
LK.clearInterval(flickerInterval);
self.destroy();
}, 500);
}
};
});
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 2 + 3;
self.move = function () {
self.y += self.speed;
self.rotation += 0.05;
if (self.y > 2550) {
var destroyPop = new DestroyPop();
destroyPop.x = self.x;
destroyPop.y = self.y;
game.addChild(destroyPop);
self.destroy();
var index = obstacles.indexOf(self);
if (index > -1) {
obstacles.splice(index, 1);
}
}
};
});
var Hat = Container.expand(function () {
var self = Container.call(this);
var hatGraphics = self.attachAsset('hat', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = Math.random() * 2 + 2;
self.move = function () {
self.y += self.speed;
self.x += Math.sin(self.y / 100) * 10; // Swing movement
if (self.y > 2550) {
var flickerInterval = LK.setInterval(function () {
self.visible = !self.visible;
}, 100);
LK.setTimeout(function () {
LK.clearInterval(flickerInterval);
self.destroy();
}, 500);
}
};
});
var PopUpText = Container.expand(function (text) {
var self = Container.call(this);
var popUpText = new Text2(text, {
size: 100,
fill: '#ffffff'
});
popUpText.anchor.set(0.5, 0.5);
self.addChild(popUpText);
self.alpha = 1;
self.move = function () {
self.y -= 2;
self.alpha -= 0.01;
if (self.alpha <= 0) {
self.destroy();
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game();
/****
* Game Code
****/
var background = game.addChild(LK.getAsset('background', {
width: 2048,
height: 2732,
anchorX: 0,
anchorY: 0,
alpha: 0.5
}));
var candidate = game.addChild(new Candidate());
candidate.x = 2048 / 2;
candidate.y = 2732 - candidate.height / 2 - 90;
var votes = [];
var obstacles = [];
var obstacles = [];
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff",
dropShadow: true,
dropShadowColor: "#000000",
dropShadowBlur: 4,
dropShadowAngle: Math.PI / 6,
dropShadowDistance: 6
});
var scoreBackground = LK.getAsset('scoreBackground', {
anchorX: 1,
anchorY: 0,
alpha: 0.8
});
LK.gui.topRight.addChild(scoreBackground);
scoreBackground.x -= 10;
scoreTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreTxt);
scoreTxt.x -= 70;
scoreTxt.y += 50;
var targetX = candidate.x;
game.on('down', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(game);
candidate.direction = pos.x > candidate.x ? 1 : -1;
});
LK.on('tick', function () {
candidate.update(targetX);
if (LK.ticks % 100 == 0) {
// Spawn a vote every second
var newVote = new Vote();
newVote.x = Math.random() * 2048; // Random x position across the screen width
newVote.y = -newVote.height / 2; // Start just above the screen
newVote.speed += Math.floor(LK.ticks / 600); // Increase speed over time
votes.push(newVote);
game.addChild(newVote);
}
var obstacleSpawnRate = Math.max(360 - Math.floor(LK.ticks / 300), 20); // Decrease the maximum interval and increase the rate of difficulty over time
if (LK.ticks % obstacleSpawnRate == 0) {
// Spawn an obstacle more frequently as time progresses
var newObstacle = new Obstacle();
newObstacle.x = Math.random() * 2048; // Random x position across the screen width
newObstacle.y = -newObstacle.height / 2; // Start just above the screen
newObstacle.speed += Math.floor(LK.ticks / 600); // Increase speed over time
obstacles.push(newObstacle);
game.addChild(newObstacle);
}
if (LK.ticks == 600 || LK.ticks > 600 && LK.ticks % 1800 == 0) {
// Spawn a hat after 10 seconds and then every 30 seconds
var newHat = new Hat();
newHat.x = Math.random() * (2048 - 1000) + 500; // Random x position across the screen width, at least 500 pixels from each side
newHat.y = -newHat.height / 2; // Start just above the screen
votes.push(newHat);
game.addChild(newHat);
}
});
LK.on('tick', function () {
for (var i = votes.length - 1; i >= 0; i--) {
votes[i].move();
if (votes[i] instanceof Vote && candidate.intersects(votes[i])) {
var scorePop = new ScorePop();
scorePop.x = votes[i].x;
scorePop.y = votes[i].y;
game.addChild(scorePop);
votes[i].destroy();
votes.splice(i, 1);
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
} else if (votes[i] instanceof Hat && candidate.intersects(votes[i])) {
var hat = votes[i];
hat.y = candidate.y - candidate.height / 2 - hat.height / 2 + 90;
hat.x = candidate.x;
hat.speed = 0;
candidate.isHatOn = true;
if (candidate.children[0].scale.x === -1) {
hat.children[0].scale.x = -1;
} else {
hat.children[0].scale.x = 1;
}
LK.setTimeout(function () {
var blinkInterval = LK.setInterval(function () {
hat.visible = !hat.visible;
}, 200);
LK.setTimeout(function () {
LK.clearInterval(blinkInterval);
hat.destroy();
var index = votes.indexOf(hat);
if (index > -1) {
votes.splice(index, 1);
}
candidate.isHatOn = false;
}, 2000);
}, 8000);
}
}
for (var i = game.children.length - 1; i >= 0; i--) {
if (game.children[i] instanceof ScorePop || game.children[i] instanceof ScorePopNegative || game.children[i] instanceof PopUpText || game.children[i] instanceof DestroyPop) {
game.children[i].move();
}
}
for (var i = obstacles.length - 1; i >= 0; i--) {
obstacles[i].move();
if (candidate.intersects(obstacles[i])) {
if (candidate.isHatOn) {
var popUpWords = ['Biased!', 'Unfair!', 'Fake News!'];
var randomWord = popUpWords[Math.floor(Math.random() * popUpWords.length)];
var popUpText = new PopUpText(randomWord);
popUpText.x = obstacles[i].x;
popUpText.y = obstacles[i].y;
game.addChild(popUpText);
obstacles[i].destroy();
var index = obstacles.indexOf(obstacles[i]);
if (index > -1) {
obstacles.splice(index, 1);
}
} else {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
}
});
// This is a simple initial game structure with a candidate collecting votes.
// The game is designed to be mobile-friendly and uses touch events to place votes.
// The candidate is centered at the bottom of the screen, and votes move upwards.
// When a vote intersects with the candidate, the score increases.
2d. 8-bit. red baseball cap. maga.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
2d. 8-bit. dust cloud. brown. no shadow.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a 2d funny character in 8-bit and cartoon of joe biden on an airplane..