/**** * Classes ****/ // Class for the beach at the bottom of the screen var Beach = Container.expand(function () { var self = Container.call(this); var beachGraphics = self.attachAsset('beach', { anchorX: 0.5, anchorY: 0.5 }); }); // Class for the bullets that the gun will shoot var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10; self.update = function () { self.x += self.speedX; self.y += self.speedY; }; }); // Class for the coconut that the server will serve var Coconut = Container.expand(function () { var self = Container.call(this); var coconutGraphics = self.attachAsset('coconut', { anchorX: 0.5, anchorY: 0.5 }); }); // Class for the customer who collects the coconut water var Customer = Container.expand(function () { var self = Container.call(this); var customerGraphics = self.attachAsset('customer', { anchorX: 0.5, anchorY: 0.5 }); // Add a timer for the customer's patience self.patienceTimer = 20; // Add an instance of the Expression class self.expression = new Expression(); self.collect = function (coconut) { // Logic for collecting coconut water if (this.intersects(coconut)) { console.log("Collecting coconut water"); coconut.destroy(); updateScore(); self.expression.happy(); } }; // Event listener for serving coconut water self.down = function (x, y, obj) { console.log("Customer clicked"); }; // Update function for the customer's patience timer self.update = function () { // Timer functionality removed }; }); // Class for the customer queue var CustomerQueue = Container.expand(function () { var self = Container.call(this); self.customers = []; self.addCustomer = function (customer) { self.customers.push(customer); }; self.removeCustomer = function (customer) { var index = self.customers.indexOf(customer); if (index > -1) { self.customers.splice(index, 1); } }; self.update = function () { for (var i = 0; i < self.customers.length; i++) { self.customers[i].update(); } }; }); // Class for the customer's expression var Expression = Container.expand(function () { var self = Container.call(this); self.happy = function () { // Logic for the happy expression console.log("Customer is happy"); }; self.angry = function () { // Logic for the angry expression console.log("Customer is angry"); }; }); /**** * Initialize Game ****/ // Assets will be automatically created and loaded by the LK engine based on their usage in the code. var game = new LK.Game({ backgroundColor: 0x006400 // Change background color to dark green }); /**** * Game Code ****/ // Initialize server and customer arrays var servers = []; var customers = []; // Create a scoreboard var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(1, 0); LK.gui.topRight.addChild(scoreTxt); // Function to update the score function updateScore() { var score = LK.getScore() + 1; LK.setScore(score); scoreTxt.setText(score); } // Create customer queue instances var beach = new Beach(); beach.x = 2048 / 2; beach.y = 2732 - 250; // Position the beach at the bottom of the screen game.addChild(beach); var gun = game.attachAsset('gun', { anchorX: 0.5, anchorY: 0.5 }); gun.x = 2048 / 2; gun.y = 100; game.addChild(gun); var customerQueue = new CustomerQueue(); for (var i = 0; i < 5; i++) { var customer = new Customer(); customer.x = 2048 / 2 + i * 150 - 300; customer.y = 2732 / 2 + 200; game.addChild(customer); customerQueue.addCustomer(customer); } // Initialize bullets array var bullets = []; // Event listener for shooting bullets game.down = function (x, y, obj) { var bullet = new Bullet(); bullet.x = gun.x; bullet.y = gun.y + gun.height / 2 + bullet.height / 2; // Calculate the angle between the gun and the click position var angle = Math.atan2(y - gun.y, x - gun.x); // Set the bullet's speed to move in the direction of the click bullet.speedX = Math.cos(angle) * bullet.speed; bullet.speedY = Math.sin(angle) * bullet.speed; game.addChild(bullet); bullets.push(bullet); }; // Initialize timer var timer = 500; var timerTxt = new Text2('0', { size: 150, fill: "#ffffff" }); timerTxt.anchor.set(0.5, 0.5); beach.addChild(timerTxt); timerTxt.x = 0; timerTxt.y = 0; // Update function called every game tick game.update = function () { // Decrement timer and update timer text timer--; timerTxt.setText(Math.floor(timer / 60)); // Initialize a counter for despawned customers var despawnedCustomers = 0; // Spawn customers every 10 seconds and despawn old customers if (LK.ticks % 600 == 0) { var customer = new Customer(); customer.x = 2048 / 2 + customerQueue.customers.length * 150 - 300; customer.y = 2732 / 2 + 200; game.addChild(customer); customerQueue.addCustomer(customer); // Despawn old customers if (customerQueue.customers.length > 1) { var oldCustomer = customerQueue.customers.shift(); oldCustomer.destroy(); despawnedCustomers++; } } // If 3 customers have despawned, trigger game over if (despawnedCustomers >= 3) { LK.showGameOver(); } // Move bullets and check for collisions with customers for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; bullet.update(); for (var j = 0; j < customerQueue.customers.length; j++) { var customer = customerQueue.customers[j]; if (bullet.intersects(customer)) { bullet.destroy(); bullets.splice(i, 1); customer.destroy(); customerQueue.removeCustomer(customer); updateScore(); break; } } } customerQueue.update(); };
/****
* Classes
****/
// Class for the beach at the bottom of the screen
var Beach = Container.expand(function () {
var self = Container.call(this);
var beachGraphics = self.attachAsset('beach', {
anchorX: 0.5,
anchorY: 0.5
});
});
// Class for the bullets that the gun will shoot
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
self.x += self.speedX;
self.y += self.speedY;
};
});
// Class for the coconut that the server will serve
var Coconut = Container.expand(function () {
var self = Container.call(this);
var coconutGraphics = self.attachAsset('coconut', {
anchorX: 0.5,
anchorY: 0.5
});
});
// Class for the customer who collects the coconut water
var Customer = Container.expand(function () {
var self = Container.call(this);
var customerGraphics = self.attachAsset('customer', {
anchorX: 0.5,
anchorY: 0.5
});
// Add a timer for the customer's patience
self.patienceTimer = 20;
// Add an instance of the Expression class
self.expression = new Expression();
self.collect = function (coconut) {
// Logic for collecting coconut water
if (this.intersects(coconut)) {
console.log("Collecting coconut water");
coconut.destroy();
updateScore();
self.expression.happy();
}
};
// Event listener for serving coconut water
self.down = function (x, y, obj) {
console.log("Customer clicked");
};
// Update function for the customer's patience timer
self.update = function () {
// Timer functionality removed
};
});
// Class for the customer queue
var CustomerQueue = Container.expand(function () {
var self = Container.call(this);
self.customers = [];
self.addCustomer = function (customer) {
self.customers.push(customer);
};
self.removeCustomer = function (customer) {
var index = self.customers.indexOf(customer);
if (index > -1) {
self.customers.splice(index, 1);
}
};
self.update = function () {
for (var i = 0; i < self.customers.length; i++) {
self.customers[i].update();
}
};
});
// Class for the customer's expression
var Expression = Container.expand(function () {
var self = Container.call(this);
self.happy = function () {
// Logic for the happy expression
console.log("Customer is happy");
};
self.angry = function () {
// Logic for the angry expression
console.log("Customer is angry");
};
});
/****
* Initialize Game
****/
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
var game = new LK.Game({
backgroundColor: 0x006400 // Change background color to dark green
});
/****
* Game Code
****/
// Initialize server and customer arrays
var servers = [];
var customers = [];
// Create a scoreboard
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(scoreTxt);
// Function to update the score
function updateScore() {
var score = LK.getScore() + 1;
LK.setScore(score);
scoreTxt.setText(score);
}
// Create customer queue instances
var beach = new Beach();
beach.x = 2048 / 2;
beach.y = 2732 - 250; // Position the beach at the bottom of the screen
game.addChild(beach);
var gun = game.attachAsset('gun', {
anchorX: 0.5,
anchorY: 0.5
});
gun.x = 2048 / 2;
gun.y = 100;
game.addChild(gun);
var customerQueue = new CustomerQueue();
for (var i = 0; i < 5; i++) {
var customer = new Customer();
customer.x = 2048 / 2 + i * 150 - 300;
customer.y = 2732 / 2 + 200;
game.addChild(customer);
customerQueue.addCustomer(customer);
}
// Initialize bullets array
var bullets = [];
// Event listener for shooting bullets
game.down = function (x, y, obj) {
var bullet = new Bullet();
bullet.x = gun.x;
bullet.y = gun.y + gun.height / 2 + bullet.height / 2;
// Calculate the angle between the gun and the click position
var angle = Math.atan2(y - gun.y, x - gun.x);
// Set the bullet's speed to move in the direction of the click
bullet.speedX = Math.cos(angle) * bullet.speed;
bullet.speedY = Math.sin(angle) * bullet.speed;
game.addChild(bullet);
bullets.push(bullet);
};
// Initialize timer
var timer = 500;
var timerTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
timerTxt.anchor.set(0.5, 0.5);
beach.addChild(timerTxt);
timerTxt.x = 0;
timerTxt.y = 0;
// Update function called every game tick
game.update = function () {
// Decrement timer and update timer text
timer--;
timerTxt.setText(Math.floor(timer / 60));
// Initialize a counter for despawned customers
var despawnedCustomers = 0;
// Spawn customers every 10 seconds and despawn old customers
if (LK.ticks % 600 == 0) {
var customer = new Customer();
customer.x = 2048 / 2 + customerQueue.customers.length * 150 - 300;
customer.y = 2732 / 2 + 200;
game.addChild(customer);
customerQueue.addCustomer(customer);
// Despawn old customers
if (customerQueue.customers.length > 1) {
var oldCustomer = customerQueue.customers.shift();
oldCustomer.destroy();
despawnedCustomers++;
}
}
// If 3 customers have despawned, trigger game over
if (despawnedCustomers >= 3) {
LK.showGameOver();
}
// Move bullets and check for collisions with customers
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
bullet.update();
for (var j = 0; j < customerQueue.customers.length; j++) {
var customer = customerQueue.customers[j];
if (bullet.intersects(customer)) {
bullet.destroy();
bullets.splice(i, 1);
customer.destroy();
customerQueue.removeCustomer(customer);
updateScore();
break;
}
}
}
customerQueue.update();
};
water glass. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
coconut. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
stickman. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
indian man. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
coconuit. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.