User prompt
Make a big corner meme but all's photo is different
User prompt
Make a little big corner meme foto but all the different
User prompt
Create all corner randomly meme photo
User prompt
Do back backrooms theme
User prompt
Make back color is blue
Code edit (1 edits merged)
Please save this source code
User prompt
Impossible Reflex
Initial prompt
Make a game the hardest game all the time
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Obstacle class: moves in a straight or curved unpredictable path, fast
var Obstacle = Container.expand(function () {
var self = Container.call(this);
// Randomly pick a shape and color
var type = Math.floor(Math.random() * 4);
var assetId = 'obstacleBox';
if (type === 1) assetId = 'obstacleEllipse';
if (type === 2) assetId = 'obstacleBox2';
if (type === 3) assetId = 'obstacleEllipse2';
var obstacleGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
// Tint obstacles to a backrooms yellow
obstacleGraphics.tint = 0xffe066;
// Randomize size a bit for more chaos
var scale = 0.8 + Math.random() * 0.7;
obstacleGraphics.scaleX = scale;
obstacleGraphics.scaleY = scale;
// Movement: random direction, speed, and optional curve
// Start position: randomly from one of the four edges
var edge = Math.floor(Math.random() * 4); // 0: top, 1: right, 2: bottom, 3: left
var startX = 0,
startY = 0,
endX = 0,
endY = 0;
var w = 2048,
h = 2732;
// For curved movement, we use a simple parametric curve (sin/cos offset)
self.curve = Math.random() < 0.5; // 50% chance to curve
self.curvePhase = Math.random() * Math.PI * 2;
self.curveAmp = 80 + Math.random() * 120;
// Speed: fast, but random
self.speed = 22 + Math.random() * 18; // px per frame
// Set start/end positions based on edge
if (edge === 0) {
// top
startX = 100 + Math.random() * (w - 200);
startY = -100;
endX = 100 + Math.random() * (w - 200);
endY = h + 100;
} else if (edge === 1) {
// right
startX = w + 100;
startY = 100 + Math.random() * (h - 200);
endX = -100;
endY = 100 + Math.random() * (h - 200);
} else if (edge === 2) {
// bottom
startX = 100 + Math.random() * (w - 200);
startY = h + 100;
endX = 100 + Math.random() * (w - 200);
endY = -100;
} else {
// left
startX = -100;
startY = 100 + Math.random() * (h - 200);
endX = w + 100;
endY = 100 + Math.random() * (h - 200);
}
self.x = startX;
self.y = startY;
self.startX = startX;
self.startY = startY;
self.endX = endX;
self.endY = endY;
// For movement progress
self.progress = 0; // 0 to 1
// For collision detection
self.lastIntersecting = false;
// Update method: move along the path
self.update = function () {
// Move progress
var dx = self.endX - self.startX;
var dy = self.endY - self.startY;
var dist = Math.sqrt(dx * dx + dy * dy);
var totalFrames = dist / self.speed;
self.progress += 1 / totalFrames;
if (self.progress > 1.1) {
self.progress = 1.1;
}
// Linear movement
var px = self.startX + dx * self.progress;
var py = self.startY + dy * self.progress;
// Add curve if needed
if (self.curve) {
// Perpendicular direction
var perpAngle = Math.atan2(dy, dx) + Math.PI / 2;
var curveOffset = Math.sin(self.progress * Math.PI + self.curvePhase) * self.curveAmp;
px += Math.cos(perpAngle) * curveOffset;
py += Math.sin(perpAngle) * curveOffset;
}
self.x = px;
self.y = py;
};
return self;
});
// Player class: draggable circle
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
// Tint player to a faded yellow for backrooms vibe
playerGraphics.tint = 0xfff7b2;
// For touch feedback
self.flash = function () {
tween(playerGraphics, {
tint: 0xff0000
}, {
duration: 100,
easing: tween.linear,
onFinish: function onFinish() {
tween(playerGraphics, {
tint: 0xffffff
}, {
duration: 200,
easing: tween.linear
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xffe066 // Backrooms yellow
});
/****
* Game Code
****/
// Game variables
// Obstacles: fast-moving, unpredictable shapes (boxes and ellipses, different colors/sizes)
// Player: small, bright circle
// Sound for dodge (optional, not used as per guidelines)
// LK.init.sound('dodge', {volume: 0.5});
var player = new Player();
var obstacles = [];
var dragNode = null;
var lastGameOver = false;
var timeSurvived = 0; // in ms
var timerText = null;
var spawnInterval = 36; // frames between spawns, will decrease
var minSpawnInterval = 12;
var spawnTick = 0;
var gameOver = false;
// Place player at center
player.x = 2048 / 2;
player.y = 2732 / 2;
game.addChild(player);
// Timer text (top center)
timerText = new Text2('0.00', {
size: 120,
fill: "#fff"
});
timerText.anchor.set(0.5, 0);
LK.gui.top.addChild(timerText);
// Prevent player from being placed in top left 100x100
function clampPlayerPosition(x, y) {
var px = x,
py = y;
var r = player.width / 2;
if (px < r + 10) px = r + 10;
if (px > 2048 - r - 10) px = 2048 - r - 10;
if (py < r + 10) py = r + 10;
if (py > 2732 - r - 10) py = 2732 - r - 10;
// Avoid top left menu
if (px - r < 100 && py - r < 100) {
if (px > py) px = 100 + r + 10;else py = 100 + r + 10;
}
return {
x: px,
y: py
};
}
// Dragging logic
function handleMove(x, y, obj) {
if (gameOver) return;
if (dragNode) {
var pos = clampPlayerPosition(x, y);
dragNode.x = pos.x;
dragNode.y = pos.y;
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
// Only allow drag if touch is on player
var dx = x - player.x;
var dy = y - player.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < player.width / 2 + 10) {
dragNode = player;
handleMove(x, y, obj);
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Main update loop
game.update = function () {
if (gameOver) return;
// Update timer
timeSurvived += 1000 / 60;
var t = Math.floor(timeSurvived) / 1000;
timerText.setText(t.toFixed(2));
// Increase difficulty over time
if (timeSurvived > 8000 && spawnInterval > minSpawnInterval) {
spawnInterval = 24;
}
if (timeSurvived > 18000 && spawnInterval > minSpawnInterval) {
spawnInterval = 16;
}
if (timeSurvived > 30000 && spawnInterval > minSpawnInterval) {
spawnInterval = minSpawnInterval;
}
// Spawn new obstacles
spawnTick++;
if (spawnTick >= spawnInterval) {
spawnTick = 0;
var obs = new Obstacle();
obstacles.push(obs);
game.addChild(obs);
}
// Update obstacles
for (var i = obstacles.length - 1; i >= 0; i--) {
var obs = obstacles[i];
obs.update();
// Remove if out of bounds
if (obs.progress > 1.05) {
obs.destroy();
obstacles.splice(i, 1);
continue;
}
// Collision detection
var intersecting = obs.intersects(player);
if (!obs.lastIntersecting && intersecting) {
// Game over
player.flash();
LK.effects.flashScreen(0xff0000, 800);
gameOver = true;
LK.setTimeout(function () {
LK.showGameOver();
}, 600);
break;
}
obs.lastIntersecting = intersecting;
}
};
// Reset logic (when game restarts)
game.on('reset', function () {
// Remove all obstacles
for (var i = 0; i < obstacles.length; i++) {
obstacles[i].destroy();
}
obstacles = [];
// Reset player position
player.x = 2048 / 2;
player.y = 2732 / 2;
dragNode = null;
timeSurvived = 0;
spawnInterval = 36;
spawnTick = 0;
gameOver = false;
timerText.setText('0.00');
}); ===================================================================
--- original.js
+++ change.js
@@ -18,8 +18,10 @@
var obstacleGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
+ // Tint obstacles to a backrooms yellow
+ obstacleGraphics.tint = 0xffe066;
// Randomize size a bit for more chaos
var scale = 0.8 + Math.random() * 0.7;
obstacleGraphics.scaleX = scale;
obstacleGraphics.scaleY = scale;
@@ -107,8 +109,10 @@
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
+ // Tint player to a faded yellow for backrooms vibe
+ playerGraphics.tint = 0xfff7b2;
// For touch feedback
self.flash = function () {
tween(playerGraphics, {
tint: 0xff0000
@@ -131,9 +135,9 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x0000ff
+ backgroundColor: 0xffe066 // Backrooms yellow
});
/****
* Game Code