/**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var smallCircle = game.addChild(LK.getAsset('smallCircle', { anchorX: 0.5, anchorY: 0.5 })); smallCircle.x = 2048 / 2; smallCircle.y = 2732 / 2; // Create boxes around the small circle var boxPositions = [{ x: smallCircle.x - 180, y: smallCircle.y }, { x: smallCircle.x + 180, y: smallCircle.y }, { x: smallCircle.x, y: smallCircle.y - 180 }, { x: smallCircle.x, y: smallCircle.y + 180 }]; var boxes = []; for (var i = 0; i < boxPositions.length; i++) { var box = game.addChild(LK.getAsset('box', { anchorX: 0.5, anchorY: 0.5 })); box.x = boxPositions[i].x; box.y = boxPositions[i].y; // Add a random direction property to each box box.direction = Math.random() * Math.PI * 2; boxes.push(box); } ; // Create a green square at the bottom of the screen var greenSquare = game.addChild(LK.getAsset('greenSquare', { anchorX: 0.5, anchorY: 0.5 })); greenSquare.x = 2048 / 2; greenSquare.y = 2732 - greenSquare.height / 2; game.update = function () { // Make the small circle move in a random direction smallCircle.x += Math.cos(Math.random() * Math.PI * 2) * 5; smallCircle.y += Math.sin(Math.random() * Math.PI * 2) * 5; // Function to calculate the direction towards the green square function calculateDirectionToGreenSquare(circle, greenSquare) { return Math.atan2(greenSquare.y - circle.y, greenSquare.x - circle.x); } game.update = function () { // Function to calculate the direction towards the nearest box function calculateDirectionToNearestBox(circle, boxes) { var nearestBox = null; var nearestDistance = Infinity; for (var i = 0; i < boxes.length; i++) { var dx = boxes[i].x - circle.x; var dy = boxes[i].y - circle.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance < nearestDistance) { nearestBox = boxes[i]; nearestDistance = distance; } } return Math.atan2(nearestBox.y - circle.y, nearestBox.x - circle.x); } // Make the small circle move towards the nearest box var direction = calculateDirectionToNearestBox(smallCircle, boxes); smallCircle.x += Math.cos(direction) * 5; smallCircle.y += Math.sin(direction) * 5; // Check for collision with the small circle and boxes for (var i = 0; i < boxes.length; i++) { if (smallCircle.intersects(boxes[i])) { console.log("Collision detected with box " + i + "!"); // When a collision is detected, push the box towards the green square var boxDirection = calculateDirectionToGreenSquare(boxes[i], greenSquare); boxes[i].x += Math.cos(boxDirection) * 10; boxes[i].y += Math.sin(boxDirection) * 10; } // Check if the box is outside the game field and if so, move it back if (boxes[i].x < 0) { boxes[i].x = 0; } if (boxes[i].x > 2048) { boxes[i].x = 2048; } if (boxes[i].y < 0) { boxes[i].y = 0; } if (boxes[i].y > 2732) { boxes[i].y = 2732; } // Check if the box intersects with the green square and if so, remove it if (boxes[i].intersects(greenSquare)) { boxes[i].destroy(); boxes.splice(i, 1); i--; } } }; };
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var smallCircle = game.addChild(LK.getAsset('smallCircle', {
anchorX: 0.5,
anchorY: 0.5
}));
smallCircle.x = 2048 / 2;
smallCircle.y = 2732 / 2;
// Create boxes around the small circle
var boxPositions = [{
x: smallCircle.x - 180,
y: smallCircle.y
}, {
x: smallCircle.x + 180,
y: smallCircle.y
}, {
x: smallCircle.x,
y: smallCircle.y - 180
}, {
x: smallCircle.x,
y: smallCircle.y + 180
}];
var boxes = [];
for (var i = 0; i < boxPositions.length; i++) {
var box = game.addChild(LK.getAsset('box', {
anchorX: 0.5,
anchorY: 0.5
}));
box.x = boxPositions[i].x;
box.y = boxPositions[i].y;
// Add a random direction property to each box
box.direction = Math.random() * Math.PI * 2;
boxes.push(box);
}
;
// Create a green square at the bottom of the screen
var greenSquare = game.addChild(LK.getAsset('greenSquare', {
anchorX: 0.5,
anchorY: 0.5
}));
greenSquare.x = 2048 / 2;
greenSquare.y = 2732 - greenSquare.height / 2;
game.update = function () {
// Make the small circle move in a random direction
smallCircle.x += Math.cos(Math.random() * Math.PI * 2) * 5;
smallCircle.y += Math.sin(Math.random() * Math.PI * 2) * 5;
// Function to calculate the direction towards the green square
function calculateDirectionToGreenSquare(circle, greenSquare) {
return Math.atan2(greenSquare.y - circle.y, greenSquare.x - circle.x);
}
game.update = function () {
// Function to calculate the direction towards the nearest box
function calculateDirectionToNearestBox(circle, boxes) {
var nearestBox = null;
var nearestDistance = Infinity;
for (var i = 0; i < boxes.length; i++) {
var dx = boxes[i].x - circle.x;
var dy = boxes[i].y - circle.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < nearestDistance) {
nearestBox = boxes[i];
nearestDistance = distance;
}
}
return Math.atan2(nearestBox.y - circle.y, nearestBox.x - circle.x);
}
// Make the small circle move towards the nearest box
var direction = calculateDirectionToNearestBox(smallCircle, boxes);
smallCircle.x += Math.cos(direction) * 5;
smallCircle.y += Math.sin(direction) * 5;
// Check for collision with the small circle and boxes
for (var i = 0; i < boxes.length; i++) {
if (smallCircle.intersects(boxes[i])) {
console.log("Collision detected with box " + i + "!");
// When a collision is detected, push the box towards the green square
var boxDirection = calculateDirectionToGreenSquare(boxes[i], greenSquare);
boxes[i].x += Math.cos(boxDirection) * 10;
boxes[i].y += Math.sin(boxDirection) * 10;
}
// Check if the box is outside the game field and if so, move it back
if (boxes[i].x < 0) {
boxes[i].x = 0;
}
if (boxes[i].x > 2048) {
boxes[i].x = 2048;
}
if (boxes[i].y < 0) {
boxes[i].y = 0;
}
if (boxes[i].y > 2732) {
boxes[i].y = 2732;
}
// Check if the box intersects with the green square and if so, remove it
if (boxes[i].intersects(greenSquare)) {
boxes[i].destroy();
boxes.splice(i, 1);
i--;
}
}
};
};