/****
* Classes
****/
// Class for the Bingo Board
var BingoBoard = Container.expand(function () {
var self = Container.call(this);
self.cells = [];
self.freeSpacePosition = {
x: 2,
y: 2
};
self.init = function () {
var numbers = Array.from({
length: 25
}, (_, i) => i + 1);
numbers = shuffleArray(numbers);
for (var i = 0; i < 5; i++) {
self.cells[i] = [];
for (var j = 0; j < 5; j++) {
var cell = new BingoCell();
if (i === self.freeSpacePosition.x && j === self.freeSpacePosition.y) {
cell.init('FREE');
cell.mark();
} else {
cell.init(numbers.pop());
}
cell.x = i * 150 + 100;
cell.y = j * 150 + 100;
self.cells[i][j] = cell;
self.addChild(cell);
}
}
};
self.markNumber = function (number) {
for (var i = 0; i < 5; i++) {
for (var j = 0; j < 5; j++) {
if (self.cells[i][j].number === number) {
self.cells[i][j].mark();
return;
}
}
}
};
self.checkBingo = function () {
// Check rows, columns, and diagonals for Bingo
for (var i = 0; i < 5; i++) {
if (self.cells[i].every(cell => cell.marked) || self.cells.map(row => row[i]).every(cell => cell.marked)) {
return true;
}
}
if (self.cells.map((row, index) => row[index]).every(cell => cell.marked) || self.cells.map((row, index) => row[4 - index]).every(cell => cell.marked)) {
return true;
}
return false;
};
});
//<Assets used in the game will automatically appear here>
// Class for a Bingo Cell
var BingoCell = Container.expand(function () {
var self = Container.call(this);
self.number = null;
self.marked = false;
self.init = function (number) {
self.number = number;
var cellGraphics = self.attachAsset('cell', {
anchorX: 0.5,
anchorY: 0.5
});
var numberText = new Text2(number.toString(), {
size: 50,
fill: "#ffffff"
});
numberText.anchor.set(0.5, 0.5);
self.addChild(numberText);
};
self.mark = function () {
if (!self.marked) {
self.marked = true;
self.alpha = 0.5; // Visually indicate the cell is marked
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var bingoBoard = new BingoBoard();
bingoBoard.init();
game.addChild(bingoBoard);
var calledNumbers = [];
var numberDisplay = new Text2('', {
size: 100,
fill: "#ffffff"
});
numberDisplay.anchor.set(0.5, 0);
LK.gui.top.addChild(numberDisplay);
function callNumber() {
if (calledNumbers.length >= 25) return;
var number;
do {
number = Math.floor(Math.random() * 25) + 1;
} while (calledNumbers.includes(number));
calledNumbers.push(number);
numberDisplay.setText('Number: ' + number);
bingoBoard.markNumber(number);
if (bingoBoard.checkBingo()) {
LK.effects.flashScreen(0x00ff00, 1000);
LK.showGameOver();
}
}
var callInterval = LK.setInterval(callNumber, 3000);
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
} /****
* Classes
****/
// Class for the Bingo Board
var BingoBoard = Container.expand(function () {
var self = Container.call(this);
self.cells = [];
self.freeSpacePosition = {
x: 2,
y: 2
};
self.init = function () {
var numbers = Array.from({
length: 25
}, (_, i) => i + 1);
numbers = shuffleArray(numbers);
for (var i = 0; i < 5; i++) {
self.cells[i] = [];
for (var j = 0; j < 5; j++) {
var cell = new BingoCell();
if (i === self.freeSpacePosition.x && j === self.freeSpacePosition.y) {
cell.init('FREE');
cell.mark();
} else {
cell.init(numbers.pop());
}
cell.x = i * 150 + 100;
cell.y = j * 150 + 100;
self.cells[i][j] = cell;
self.addChild(cell);
}
}
};
self.markNumber = function (number) {
for (var i = 0; i < 5; i++) {
for (var j = 0; j < 5; j++) {
if (self.cells[i][j].number === number) {
self.cells[i][j].mark();
return;
}
}
}
};
self.checkBingo = function () {
// Check rows, columns, and diagonals for Bingo
for (var i = 0; i < 5; i++) {
if (self.cells[i].every(cell => cell.marked) || self.cells.map(row => row[i]).every(cell => cell.marked)) {
return true;
}
}
if (self.cells.map((row, index) => row[index]).every(cell => cell.marked) || self.cells.map((row, index) => row[4 - index]).every(cell => cell.marked)) {
return true;
}
return false;
};
});
//<Assets used in the game will automatically appear here>
// Class for a Bingo Cell
var BingoCell = Container.expand(function () {
var self = Container.call(this);
self.number = null;
self.marked = false;
self.init = function (number) {
self.number = number;
var cellGraphics = self.attachAsset('cell', {
anchorX: 0.5,
anchorY: 0.5
});
var numberText = new Text2(number.toString(), {
size: 50,
fill: "#ffffff"
});
numberText.anchor.set(0.5, 0.5);
self.addChild(numberText);
};
self.mark = function () {
if (!self.marked) {
self.marked = true;
self.alpha = 0.5; // Visually indicate the cell is marked
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
var bingoBoard = new BingoBoard();
bingoBoard.init();
game.addChild(bingoBoard);
var calledNumbers = [];
var numberDisplay = new Text2('', {
size: 100,
fill: "#ffffff"
});
numberDisplay.anchor.set(0.5, 0);
LK.gui.top.addChild(numberDisplay);
function callNumber() {
if (calledNumbers.length >= 25) return;
var number;
do {
number = Math.floor(Math.random() * 25) + 1;
} while (calledNumbers.includes(number));
calledNumbers.push(number);
numberDisplay.setText('Number: ' + number);
bingoBoard.markNumber(number);
if (bingoBoard.checkBingo()) {
LK.effects.flashScreen(0x00ff00, 1000);
LK.showGameOver();
}
}
var callInterval = LK.setInterval(callNumber, 3000);
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}