User prompt
mirror hat position when player switched direction
User prompt
make sure hat x position is updated when player position is updated
User prompt
update hat position if player switches direction on tick
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'scale')' in or related to this line: 'self.hat.scale.x = -1;' Line Number: 103
Code edit (1 edits merged)
Please save this source code
User prompt
when candidate is moving left and ishaton, then mirror asset for hat
User prompt
mirror hat when candidate switches direction
User prompt
mirror hat position when candidate is moving left
User prompt
mirror hat asset when candidate moves the other way
Code edit (3 edits merged)
Please save this source code
User prompt
also mirror candidate asset when moving the other way
User prompt
create an alternate asset image to use when candidate is still
User prompt
change movement of player to stop on the position the player touched or clicked
Code edit (1 edits merged)
Please save this source code
User prompt
every time vote speed increases make them spawn 30 ticks sooner
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'speed')' in or related to this line: 'if (LK.ticks % Math.max(100 - Math.floor(LK.ticks / (600 + newVote.speed)), 20) == 0) {' Line Number: 245
User prompt
spawn more votes as their speed increases
Code edit (2 edits merged)
Please save this source code
User prompt
game score cant be negative
Code edit (1 edits merged)
Please save this source code
User prompt
make initial spawn rate of obstacles shorter
Code edit (2 edits merged)
Please save this source code
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'anchor')' in or related to this line: 'startText.anchor.set(0.5, 0.5);' Line Number: 209
Code edit (8 edits merged)
Please save this source code
User prompt
obstacles spawn rate should be reduced in 30 ticks every time the obstacle speed is incremented.
/**** * 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 % Math.max(100 - Math.floor(LK.ticks / 600), 20) == 0) { // Spawn a vote more frequently as time progresses 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(180 - Math.floor(LK.ticks / 300), 20) - 60 * Math.floor(LK.ticks / 600); // Decrease the maximum interval and increase the rate of difficulty over time if (LK.ticks % Math.max(obstacleSpawnRate - Math.floor(LK.ticks / 600), 20) == 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 % 2400 == 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 + 110; 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], 60)) { if (candidate.isHatOn) { var popUpWords = ['Fake News!', 'Fake News!', '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(); } } } }); var startText = new Text2('Collect Votes! \n\nDodge Justice! \n\nWear invulneravility \nMAGA hat!', { size: 80, fill: '#ffffff', dropShadow: true, dropShadowColor: '#000000', dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6, align: 'center' }); startText.x = 2048 / 2; startText.y = 2732 / 2 - 900; startText.anchor.set(0.5, 0.5); game.addChild(startText); var startTimeout = LK.setTimeout(function () { game.removeChild(startText); }, 3000); // 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.
===================================================================
--- original.js
+++ change.js
@@ -235,9 +235,9 @@
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) - 60 * Math.floor(LK.ticks / 600); // Decrease the maximum interval and increase the rate of difficulty over time
+ var obstacleSpawnRate = Math.max(180 - Math.floor(LK.ticks / 300), 20) - 60 * Math.floor(LK.ticks / 600); // Decrease the maximum interval and increase the rate of difficulty over time
if (LK.ticks % Math.max(obstacleSpawnRate - Math.floor(LK.ticks / 600), 20) == 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
@@ -302,9 +302,9 @@
for (var i = obstacles.length - 1; i >= 0; i--) {
obstacles[i].move();
if (candidate.intersects(obstacles[i], 60)) {
if (candidate.isHatOn) {
- var popUpWords = ['Biased!', 'Unfair!', 'Fake News!'];
+ var popUpWords = ['Fake News!', 'Fake News!', '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;
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..