User prompt
You can bump into things every time that it happens.
User prompt
Randomly, makes the game turn into a maze, that you have to win to continue playing.
User prompt
Make the text say, click, something will happen.
User prompt
Not click! Something will happen. Click!
User prompt
Make a text that says, quick, something will happen!
User prompt
There's another event where there's another golden zombie but it's a picture of a golden zombie.
User prompt
Now, every time you click, a random event happens, and those events will be a zombie attack on the screen, a door closing on you, and then you get kicked out the game, and last and not least, a golden zombie spawning, and then a zombie...
User prompt
Make another jump scare which is a question mark, and that happens every 3 seconds.
User prompt
Make the click sound happen every time, every 9 seconds and also make the jump scare happen every 9 seconds at the same time.
User prompt
Make a jump scare.
User prompt
Add the jump scare
User prompt
A jump scare at a random time. A jump scare.
User prompt
But keep the bingo thing off, like keep the bingo card thing off.
User prompt
Make the bingo not exist and make numbers appear on the screen over and over again.
Remix started
Copy Bingoooo
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
// AI Robot: Simple animated character that moves left and right
var AIRobot = Container.expand(function () {
var self = Container.call(this);
// Attach a robot body (use aiIndicator image as the robot's head/body)
var robotBody = self.attachAsset('aiIndicator', {
anchorX: 0.5,
anchorY: 0.5
});
// Add two "eyes" using small ellipses
var leftEye = self.attachAsset('freeSpace', {
width: 24,
height: 24,
color: 0xffffff,
anchorX: 0.5,
anchorY: 0.5
});
var rightEye = self.attachAsset('freeSpace', {
width: 24,
height: 24,
color: 0xffffff,
anchorX: 0.5,
anchorY: 0.5
});
leftEye.x = -36;
leftEye.y = -20;
rightEye.x = 36;
rightEye.y = -20;
// Animation state
self.direction = 1; // 1: right, -1: left
self.speed = 6 + Math.random() * 4; // px per frame
self.minX = 200;
self.maxX = 2048 - 200;
// For eye animation
self.eyeTick = 0;
// Initial position
self.x = 2048 * 3 / 4;
self.y = 2732 - 180;
// Update method for movement and eye animation
self.update = function () {
// Move left/right
self.x += self.direction * self.speed;
if (self.x > self.maxX) {
self.x = self.maxX;
self.direction = -1;
}
if (self.x < self.minX) {
self.x = self.minX;
self.direction = 1;
}
// Animate eyes (look in direction of movement)
self.eyeTick++;
var eyeOffset = 4 * self.direction + Math.sin(self.eyeTick / 10) * 2;
leftEye.x = -36 + eyeOffset;
rightEye.x = 36 + eyeOffset;
};
return self;
});
// BingoCell: Represents a single cell on the bingo card
var BingoCell = Container.expand(function () {
var self = Container.call(this);
// Properties
self.number = 0;
self.marked = false;
// Create cell background
var cellBg = self.attachAsset('bingoCellBg', {
width: cellSize,
height: cellSize,
anchorX: 0.5,
anchorY: 0.5
});
// Number text
var numberText = new Text2('', {
size: Math.floor(cellSize * 0.45),
fill: 0xffffff
});
numberText.anchor.set(0.5, 0.5);
self.addChild(numberText);
// Mark overlay (hidden by default)
var markOverlay = self.attachAsset('bingoMark', {
width: cellSize * 0.7,
height: cellSize * 0.7,
anchorX: 0.5,
anchorY: 0.5
});
markOverlay.alpha = 0;
self.markOverlay = markOverlay;
// Set number and update text
self.setNumber = function (num) {
self.number = num;
numberText.setText(num > 0 ? num : '');
};
// Mark/unmark cell
self.setMarked = function (val) {
self.marked = val;
if (val) {
tween(markOverlay, {
alpha: 0.8
}, {
duration: 200,
easing: tween.easeOut
});
numberText.setText(self.number);
numberText.setStyle({
fill: 0x000000
});
} else {
tween(markOverlay, {
alpha: 0
}, {
duration: 200,
easing: tween.easeOut
});
numberText.setStyle({
fill: 0xffffff
});
}
};
// Touch event
self.down = function (x, y, obj) {
// Play click sound on any cell tap
LK.getSound('Click').play();
if (self.marked) return;
if (game.state !== 'playing') return;
var p = self.playerIndex !== undefined ? self.playerIndex : 0;
if (self.number === game.currentNumber && p === currentPlayer) {
self.setMarked(true);
LK.effects.flashObject(self, 0xff6600, 200);
// Streak logic
if (typeof streak !== "undefined") {
streak[p]++;
streakText[p].setText("Streak: " + streak[p]);
if (streak[p] > 1) {
// Bonus: add 1s per streak above 1
timeLeft[p] += 1000;
tween(streakText[p], {
scaleX: 1.3,
scaleY: 1.3
}, {
duration: 100,
yoyo: true,
repeat: 1,
easing: tween.easeOut
});
}
}
game.checkWin();
} else {
if (typeof streak !== "undefined") {
streak[p] = 0;
streakText[p].setText("");
}
LK.effects.flashObject(self, 0x8b0000, 200);
}
};
// Example: Trigger action when cell crosses X = 1000 from left to right
if (self.lastX !== undefined && self.lastX <= 1000 && self.x > 1000) {
// Place your action here, e.g. console.log("Cell crossed X=1000!");
}
// Always update lastX at the end
self.lastX = self.x;
// Example: Trigger action when cell crosses Y = 800 from above to below
if (self.lastY !== undefined && self.lastY <= 800 && self.y > 800) {
// Place your action here, e.g. console.log("Cell crossed Y=800!");
}
// Always update lastY at the end
self.lastY = self.y;
// Example: Trigger action when cell crosses X=1000 and Y=800 at the same frame
if (self.lastY !== undefined && self.lastY <= 800 && self.y > 800 && self.lastX !== undefined && self.lastX <= 1000 && self.x > 1000) {
// Place your action here, e.g. console.log("Cell arrived at (1000,800)!");
}
// Always update lastX and lastY at the end
self.lastX = self.x;
self.lastY = self.y;
return self;
});
// CalledNumberBall: Shows a called number as a round ball
var CalledNumberBall = Container.expand(function () {
var self = Container.call(this);
// Ball background
var ball = self.attachAsset('bingoBall', {
anchorX: 0.5,
anchorY: 0.5
});
// Number text
var numberText = new Text2('', {
size: 60,
fill: 0x000000
});
numberText.anchor.set(0.5, 0.5);
numberText.x = 0;
numberText.y = 0;
self.addChild(numberText);
self.setNumber = function (num) {
numberText.setText(num);
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x181a1b
});
/****
* Game Code
****/
// Ses assets for ses1 to ses40
// Freeze Timer button and logic removed
// Reveal Row button removed
// Win highlight overlay (gold ellipse for winning line)
// Free space overlay (distinct color for center cell)
// Hint button background (green box, used for hint power-up)
// Mark overlay (beige box, used for marking cells)
// Bingo cell background (cyan box)
// Bingo ball (yellow ellipse)
// All bingo card and bingo cell logic removed as requested.
// Save the current game state (called numbers, card numbers, marked cells, time left, streaks)
// --- Added ses41 to ses75 sound assets (IDs to be filled by asset loader) ---
var gridSize = 5; // 5x5 bingo
// Adjust cellSize and card positions for two-player mode to fit both cards on screen
var cellSize = 180; // px, reduced to fit two cards side by side
var cardPadding = 30;
var cardWidth = gridSize * cellSize;
var cardHeight = gridSize * cellSize;
var cardStartX = 2048 / 4 - cardWidth / 2; // Player 1 card center at 1/4 width, Player 2 at 3/4 width
var cardStartY = 500; // Lowered to fit both cards and UI
var callIntervalStart = 4000; // ms (4 seconds initial call speed)
var callIntervalMin = 1200; // ms (slower minimum speed)
var callIntervalStep = 60; // ms, decrease per call (slower speedup)
var gameDuration = 225000; // ms (3 min 45 sec)
var numbersRange = 75; // 1-75
// Remove all bingo logic and display random numbers on screen repeatedly
// Create a big number text in the center
var numberCallText = new Text2('', {
size: 400,
fill: 0xff073a
});
numberCallText.anchor.set(0.5, 0.5);
numberCallText.x = 2048 / 2;
numberCallText.y = 2732 / 2;
game.addChild(numberCallText);
// Function to show a random number and play its sound
function showRandomNumber() {
var num = 1 + Math.floor(Math.random() * 75);
numberCallText.setText(num);
// Play ses1-ses75 sound if available
var soundId = 'ses' + num;
var sound = LK.getSound(soundId);
if (sound) sound.play();
// Animate the number
numberCallText.scale.x = 0.7;
numberCallText.scale.y = 0.7;
tween(numberCallText.scale, {
x: 1,
y: 1
}, {
duration: 200,
easing: tween.easeOut
});
}
// Call a new number every 2 seconds
LK.setInterval(showRandomNumber, 2000);
// Show the first number immediately
showRandomNumber();
// --- Jump Scare Overlay and Logic ---
var jumpScareOverlay = LK.getAsset('flashOverlay', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2,
alpha: 0
});
game.addChild(jumpScareOverlay);
// Optionally, you can add a scary text
var jumpScareText = new Text2('!', {
size: 600,
fill: 0xff0000
});
jumpScareText.anchor.set(0.5, 0.5);
jumpScareText.x = 2048 / 2;
jumpScareText.y = 2732 / 2;
jumpScareText.alpha = 0;
game.addChild(jumpScareText);
function triggerJumpScare() {
// Flash overlay and text in
jumpScareOverlay.alpha = 0.92;
jumpScareText.alpha = 1;
// Animate out after 600ms
LK.setTimeout(function () {
tween(jumpScareOverlay, {
alpha: 0
}, {
duration: 400,
easing: tween.easeOut
});
tween(jumpScareText, {
alpha: 0
}, {
duration: 400,
easing: tween.easeOut
});
}, 600);
}
// Schedule jump scare at a random interval (between 4s and 12s)
function scheduleJumpScare() {
var delay = 4000 + Math.random() * 8000;
LK.setTimeout(function () {
triggerJumpScare();
scheduleJumpScare();
}, delay);
}
scheduleJumpScare();
// --- Animated background color pulse for visual appeal ---
var bgPulseColors = [0x181a1b,
// near-black
0x23272a,
// dark gray
0x222326,
// blackish blue
0x181a1b,
// repeat for smooth loop
0x23272a]; // Blackish/dark palette
var bgPulseIndex = 0;
var bgPulseDuration = 3000;
function pulseBackground() {
var fromColor = bgPulseColors[bgPulseIndex];
var toColor = bgPulseColors[(bgPulseIndex + 1) % bgPulseColors.length];
var t = {
v: 0
};
tween(t, {
v: 1
}, {
duration: bgPulseDuration,
easing: tween.easeInOut,
onUpdate: function onUpdate() {
// Interpolate color
var r1 = fromColor >> 16 & 0xff,
g1 = fromColor >> 8 & 0xff,
b1 = fromColor & 0xff;
var r2 = toColor >> 16 & 0xff,
g2 = toColor >> 8 & 0xff,
b2 = toColor & 0xff;
var r = Math.round(r1 + (r2 - r1) * t.v);
var g = Math.round(g1 + (g2 - g1) * t.v);
var b = Math.round(b1 + (b2 - b1) * t.v);
var color = r << 16 | g << 8 | b;
game.setBackgroundColor(color);
},
onComplete: function onComplete() {
bgPulseIndex = (bgPulseIndex + 1) % bgPulseColors.length;
pulseBackground();
}
});
}
pulseBackground(); ===================================================================
--- original.js
+++ change.js
@@ -214,20 +214,20 @@
/****
* Game Code
****/
-// --- Added ses41 to ses75 sound assets (IDs to be filled by asset loader) ---
-// Save the current game state (called numbers, card numbers, marked cells, time left, streaks)
-// All bingo card and bingo cell logic removed as requested.
-// Bingo ball (yellow ellipse)
-// Bingo cell background (cyan box)
-// Mark overlay (beige box, used for marking cells)
-// Hint button background (green box, used for hint power-up)
-// Free space overlay (distinct color for center cell)
-// Win highlight overlay (gold ellipse for winning line)
-// Reveal Row button removed
-// Freeze Timer button and logic removed
// Ses assets for ses1 to ses40
+// Freeze Timer button and logic removed
+// Reveal Row button removed
+// Win highlight overlay (gold ellipse for winning line)
+// Free space overlay (distinct color for center cell)
+// Hint button background (green box, used for hint power-up)
+// Mark overlay (beige box, used for marking cells)
+// Bingo cell background (cyan box)
+// Bingo ball (yellow ellipse)
+// All bingo card and bingo cell logic removed as requested.
+// Save the current game state (called numbers, card numbers, marked cells, time left, streaks)
+// --- Added ses41 to ses75 sound assets (IDs to be filled by asset loader) ---
var gridSize = 5; // 5x5 bingo
// Adjust cellSize and card positions for two-player mode to fit both cards on screen
var cellSize = 180; // px, reduced to fit two cards side by side
var cardPadding = 30;
@@ -272,8 +272,56 @@
// Call a new number every 2 seconds
LK.setInterval(showRandomNumber, 2000);
// Show the first number immediately
showRandomNumber();
+// --- Jump Scare Overlay and Logic ---
+var jumpScareOverlay = LK.getAsset('flashOverlay', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2,
+ alpha: 0
+});
+game.addChild(jumpScareOverlay);
+// Optionally, you can add a scary text
+var jumpScareText = new Text2('!', {
+ size: 600,
+ fill: 0xff0000
+});
+jumpScareText.anchor.set(0.5, 0.5);
+jumpScareText.x = 2048 / 2;
+jumpScareText.y = 2732 / 2;
+jumpScareText.alpha = 0;
+game.addChild(jumpScareText);
+function triggerJumpScare() {
+ // Flash overlay and text in
+ jumpScareOverlay.alpha = 0.92;
+ jumpScareText.alpha = 1;
+ // Animate out after 600ms
+ LK.setTimeout(function () {
+ tween(jumpScareOverlay, {
+ alpha: 0
+ }, {
+ duration: 400,
+ easing: tween.easeOut
+ });
+ tween(jumpScareText, {
+ alpha: 0
+ }, {
+ duration: 400,
+ easing: tween.easeOut
+ });
+ }, 600);
+}
+// Schedule jump scare at a random interval (between 4s and 12s)
+function scheduleJumpScare() {
+ var delay = 4000 + Math.random() * 8000;
+ LK.setTimeout(function () {
+ triggerJumpScare();
+ scheduleJumpScare();
+ }, delay);
+}
+scheduleJumpScare();
// --- Animated background color pulse for visual appeal ---
var bgPulseColors = [0x181a1b,
// near-black
0x23272a,
Bingo thema. In-Game asset. 2d. High contrast. No shadows
Bingo Mark. In-Game asset. 2d. High contrast. No shadows
Streakbackground bingo. In-Game asset. 2d. High contrast. No shadows
Card border. In-Game asset. 2d. High contrast. No shadows
Djdj. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
A golden zombie with wide eyes. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Click
Sound effect
Numberthree
Sound effect
ses1
Sound effect
ses2
Sound effect
ses3
Sound effect
ses4
Sound effect
ses5
Sound effect
ses6
Sound effect
ses7
Sound effect
ses8
Sound effect
ses9
Sound effect
ses10
Sound effect
ses11
Sound effect
ses12
Sound effect
ses13
Sound effect
ses14
Sound effect
ses15
Sound effect
ses16
Sound effect
ses17
Sound effect
ses18
Sound effect
ses19
Sound effect
ses20
Sound effect
ses21
Sound effect
ses22
Sound effect
ses23
Sound effect
ses24
Sound effect
ses25
Sound effect
ses26
Sound effect
ses27
Sound effect
ses28
Sound effect
ses29
Sound effect
ses30
Sound effect
ses31
Sound effect
ses32
Sound effect
ses33
Sound effect
ses34
Sound effect
ses35
Sound effect
ses36
Sound effect
ses37
Sound effect
ses38
Sound effect
ses39
Sound effect
ses40
Sound effect
ses41
Sound effect
ses42
Sound effect
ses43
Sound effect
ses44
Sound effect
ses45
Sound effect
ses46
Sound effect
ses47
Sound effect
ses48
Sound effect
ses49
Sound effect
ses50
Sound effect
ses51
Sound effect
ses52
Sound effect
ses53
Sound effect
ses54
Sound effect
ses55
Sound effect
ses56
Sound effect
ses57
Sound effect
ses58
Sound effect
ses59
Sound effect
ses60
Sound effect
ses61
Sound effect
ses62
Sound effect
ses64
Sound effect
ses65
Sound effect
ses66
Sound effect
ses67
Sound effect
ses68
Sound effect
ses69
Sound effect
ses70
Sound effect
ses71
Sound effect
ses72
Sound effect
ses75
Sound effect
fart1
Sound effect
fart2
Sound effect
fart3
Sound effect
fart4
Sound effect
fart5
Sound effect
fart6
Sound effect
fart7
Sound effect