User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'y')' in or related to this line: 'topRedMarble.y = 200; // Position red marble below the top masa and keep it at the original position' Line Number: 204
User prompt
üsteki masa hariç bütün asetleri bi aşaga indir
User prompt
tamam bi aşa indir asetleri
User prompt
üsteki masa diyer her asete çarpıp seke bilsin ve asetleri ortala
User prompt
benim masam kendi kendine haeket etmiycek üsteki masa redmarble atmıyacak sadece benimkini yakalya bilicek
User prompt
yapay zeka üsteki masa sağa sola hareket setsin redmarble atamasın altaki masa benimbenim atım ruvubleyi yakalıya biilsin
User prompt
yapay zeka nın atıgı redmarble yi de tuta bilsin ve yapay zeka kendi kendine hareket stsin
User prompt
tamam yapay zekanın masası kendi kendine hareket edtsin ve benim redmarble mi yakalamaya çalısın
User prompt
solda 3 kalp var ya hani oyun onlar 0 a indiginde biticek
User prompt
düzelt şu kodu artık benim atım redmarble 3 kere yere düşünce kalpleri da ona göre azalıcaksın game ovaer de ona göre biticek yapay zeka redmarble atamıycak sadece ben ata bilicem
User prompt
game over ekranını düzelt sol süteki kap sayısı 0 a inerse game over ekranı vericeksin
User prompt
hala benim atıgım redmarble 1 kere düştügünde game over ekranı veriyorsun bunu kaldır 3 kere düşerse vericeksin ve game over ekranını tekrar düzenle her vurulan top aset için puan yaz yapay zeka redmarble atamasın sadece ben ata bileyim
User prompt
3 kere redmarble nin yere düşme hakkı var solda ki kalp bunu temsil ediyor 1 kere düşerse değil 3 kere düşerse game over ekranı ver ve her masa harici redmarble nin vrudugu asetler için bir pua sistemikoy ve bunu gameover ekranına yerleştir
User prompt
yapay zekann bir redmarble si olmasın benim atıgımı yakalamaya çalışsın
User prompt
sol üste ki kalp sayıları bitince oyun biticek sağdaki kalpleri kaldır
User prompt
kalp sayıları azalınca game over verceksin
User prompt
çarpınca redmarble haritada var olsun herhangi bi asete çaptında kaybolmasın harita da var oal bilsin
User prompt
hayır 1 kere çarptıktan sonra redmarble haritada var olsun masaya dönsün sonra geri diyer asetlere çapsın
User prompt
redmarble sadece bir kere asetlere değe bilicekti ondan sonra masaya dönüp tekrar asetlere çarpa bilir
User prompt
yapay zekanınmasaına redmarble değe bilicek ve diyer asetlere çaptında redmarble tekrar masadan başlamıycak haritada var olmaya devam edicek ta ki boşluga düşene kadar
User prompt
kalp sayıaını azalıcaksın içte masalara redmarble değmeyip boşluga düştügünde
User prompt
her redmarble yi atıgımda yapay zekanın masası onu yakalmak için yön değiştrire bilicek eger o yakalaymasa sağda ki kalp azalıcak ben düşürüsem solda ki kalp azalıcak
User prompt
benim masamkendi kendine hareket edemyeek ama yapay zekanın ki ede bilicek
User prompt
yapay zekanun masası kend kendine hareket ede bilicek ti
User prompt
beniö masam kendi kendine hareket edemesin ben etiriyorum ya
/**** * Classes ****/ // Class for the different ages var Age = Container.expand(function (age) { var self = Container.call(this); self.age = age; self.resources = []; self.buildings = []; self.characters = []; self.weapons = []; self.score = 0; self.addResource = function (resource) { self.resources.push(resource); }; self.addBuilding = function (building) { self.buildings.push(building); }; self.addCharacter = function (character) { self.characters.push(character); }; self.addWeapon = function (weapon) { self.weapons.push(weapon); }; self.updateScore = function (points) { self.score += points; if (self.score >= 5000) { self.nextAge(); } }; self.nextAge = function () { // Logic for transitioning to the next age }; self.update = function () { // Logic for updating the age }; }); // Class for the Balls in the chain var Ball = Container.expand(function (color) { var self = Container.call(this); var ballGraphics = self.attachAsset('ball_' + color, { anchorX: 0.5, anchorY: 0.5 }); self.color = color; self.update = function () { // Logic for ball movement along the path }; }); // Class for the Ball Chain var BallChain = Container.expand(function () { var self = Container.call(this); self.balls = []; self.addBall = function (ball) { self.balls.push(ball); self.addChild(ball); }; self.update = function () { // Logic for moving the chain and checking for matches }; }); //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Class for the Frog character var Frog = Container.expand(function () { var self = Container.call(this); var frogGraphics = self.attachAsset('frog', { anchorX: 0.5, anchorY: 0.5 }); self.shootBall = function (color) { var ball = new Ball(color); ball.x = self.x; ball.y = self.y; return ball; }; }); var Masa = Container.expand(function () { var self = Container.call(this); var masaGraphics = self.attachAsset('masa', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; // Speed of movement self.direction = 1; // 1 for right, -1 for left self.update = function () { // Move masa left and right // Removed automatic movement of masa // Update lastX self.lastX = self.x; // Laser shooting logic if (self.enableLaser) { // Logic to shoot laser // For simplicity, assume laser is a straight line from masa var laser = new Graphics(); laser.lineStyle(5, 0xff0000, 1); laser.moveTo(self.x, self.y); laser.lineTo(self.x, 0); game.addChild(laser); // Check for collisions with assets for (var i = assets.length - 1; i >= 0; i--) { var asset = assets[i]; if (asset.x >= self.x - 5 && asset.x <= self.x + 5 && asset.y < self.y) { asset.destroy(); assets.splice(i, 1); } } // Remove laser after a short duration LK.setTimeout(function () { laser.destroy(); }, 100); } // Check for collision with red marble if (self.lastY <= topRedMarble.y && self.y > topRedMarble.y && self.intersects(topRedMarble)) { if (aiLives > 0) { aiLives--; var aiHeartToRemove = aiHearts.shift(); // Remove the rightmost heart aiHeartToRemove.destroy(); } if (aiLives === 0) { // AI loses, trigger game over console.log("AI lost all lives!"); LK.showGameOver(); } } }; // Initialize lastX self.lastX = self.x; }); // Class for the RedMarble var RedMarble = Container.expand(function () { var self = Container.call(this); var redMarbleGraphics = self.attachAsset('redmarble', { anchorX: 0.5, anchorY: 0.5 }); self.speedX = 5; // Horizontal speed of the red marble self.speedY = -10; // Vertical speed of the red marble self.update = function () { self.y += self.speedY; self.x += self.speedX; // Check for collision with top wall if (self.y <= 0) { LK.getSound('x').play(); self.speedY *= -1; // Reverse Y direction } // Check for collision with side walls if (self.x <= 0 || self.x >= 2048) { LK.getSound('x').play(); self.speedX *= -1; // Reverse X direction } // Check if red marble is off-screen if (self.y < -50) { self.destroy(); } // Check for collision with masa while falling if (self.lastY <= masa.y && self.y > masa.y && self.intersects(masa)) { LK.getSound('x').play(); self.speedY *= -1; // Reverse Y direction } // Check for collision with assets for (var i = assets.length - 1; i >= 0; i--) { var asset = assets[i]; if (self.intersects(asset)) { asset.destroy(); assets.splice(i, 1); LK.getSound('x').play(); // Return red marble to masa self.x = masa.x; self.y = masa.y - masa.height / 2; self.speedX = 0; self.speedY = -10; } } self.lastY = self.y; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Initialize game elements var topMasa = new Masa(); topMasa.x = 2048 / 2; // Center the masa horizontally topMasa.y = 150; // Move masa down by 50 pixels game.addChild(topMasa); var topRedMarble = new RedMarble(); topRedMarble.x = 2048 / 2; // Center the red marble horizontally topRedMarble.y = 150; // Move red marble down by 50 pixels game.addChild(topRedMarble); var fallingAssets = ['masa2', 'ray']; var fallingObjects = []; var lives = 3; var hearts = []; // Add heart images to the top of the screen for (var i = 0; i < lives; i++) { var heart = LK.getAsset('kalp', { anchorX: 0.5, anchorY: 0.5 }); heart.x = 100 + i * (heart.width + 20); // Position hearts with spacing heart.y = 50; // Position hearts at the top game.addChild(heart); hearts.push(heart); } // Add heart images to the right of the AI's table var aiLives = 3; var aiHearts = []; for (var i = 0; i < aiLives; i++) { var aiHeart = LK.getAsset('kalp', { anchorX: 0.5, anchorY: 0.5 }); aiHeart.x = 2048 - (100 + i * (aiHeart.width + 20)); // Position hearts with spacing from the right aiHeart.y = 50; // Position hearts at the top game.addChild(aiHeart); aiHearts.push(aiHeart); } var redMarbles = []; var assets = []; // Initialize game elements var masa = new Masa(); masa.x = 2048 / 2; // Center the masa horizontally masa.y = 2732 - 50; // Position masa at the bottom wall game.addChild(masa); var currentAge = new Age('Stone Age'); game.addChild(currentAge); var frog = new Frog(); game.addChild(frog); // Fill the screen with assets arranged in a grid pattern var assetIds = ['bilye1', 'bilye10', 'bilye11', 'bilye12', 'bilye14', 'bilye15', 'bilye16', 'bilye3', 'bilye4', 'bilye5', 'bilye6', 'bilye7', 'bilye9', 'biyye8', 'f']; var startX = 50; // Starting X position var startY = 150; // Adjusted starting Y position to ensure hearts are visible var spacingX = 20; // Horizontal spacing between assets var spacingY = 20; // Vertical spacing between assets var numRows = Math.floor((2732 - startY) / (100 + spacingY)) + 2; // Calculate number of rows based on screen height and add two more rows var numCols = Math.floor((2048 - startX) / (100 + spacingX)); // Calculate number of columns based on screen width for (var row = 2; row < numRows - 5; row++) { // Start from the third row to remove the topmost two rows // Adjusted to add one more row at the end // Adjusted to remove the bottom 3 rows for (var col = 0; col < numCols - 2; col++) { var index = (row * numCols + col) % assetIds.length; // Loop through assetIds var id = assetIds[index]; var asset = LK.getAsset(id, { anchorX: 0.5, anchorY: 0.5 }); asset.x = (2048 - (numCols - 1) * (asset.width + spacingX)) / 2 + (col + 1) * (asset.width + spacingX); // Shift assets one position to the right asset.y = startY + row * (asset.height + spacingY); // Align assets vertically game.addChild(asset); assets.push(asset); } } // Game update loop game.update = function () { currentAge.update(); // Additional game logic // Update redmarble positions and check for collisions for (var i = redMarbles.length - 1; i >= 0; i--) { var redMarble = redMarbles[i]; redMarble.update(); // Check if redmarble is off-screen if (redMarble.y > 2732) { redMarble.destroy(); redMarbles.splice(i, 1); // Decrease a heart if (lives > 0) { lives--; var heartToRemove = hearts.shift(); // Remove the top heart heartToRemove.destroy(); } // Decrease a heart if (lives > 0) { lives--; var heartToRemove = hearts.shift(); // Remove the top heart heartToRemove.destroy(); } // Check if all hearts are lost if (lives === 0 || aiLives === 0 || assets.length === 0) { // Display scores for each player var playerScores = "Player 1: " + currentAge.score + "\nPlayer 2: " + (5000 - currentAge.score); var playerScoreText = new Text2(playerScores, { size: 100, fill: 0xFFFFFF }); playerScoreText.anchor.set(0.5, 0.5); LK.gui.center.addChild(playerScoreText); // Trigger game over screen LK.showGameOver(); // Reset game state lives = 3; aiLives = 3; hearts = []; aiHearts = []; for (var h = 0; h < lives; h++) { var newHeart = LK.getAsset('kalp', { anchorX: 0.5, anchorY: 0.5 }); newHeart.x = 100 + h * (newHeart.width + 20); newHeart.y = 50; game.addChild(newHeart); hearts.push(newHeart); } for (var a = 0; a < aiLives; a++) { var newAIHeart = LK.getAsset('kalp', { anchorX: 0.5, anchorY: 0.5 }); newAIHeart.x = 2048 - (100 + a * (newAIHeart.width + 20)); newAIHeart.y = 50; game.addChild(newAIHeart); aiHearts.push(newAIHeart); } } continue; } for (var j = assets.length - 1; j >= 0; j--) { var asset = assets[j]; if (redMarble.intersects(asset)) { asset.destroy(); assets.splice(j, 1); LK.getSound('x').play(); redMarble.destroy(); // Destroy red marble on collision redMarbles.splice(i, 1); break; // Exit loop after destroying red marble } } } // Handle falling assets for (var f = fallingObjects.length - 1; f >= 0; f--) { var fallingObject = fallingObjects[f]; fallingObject.y += 5; // Falling speed // Check if fallingObject is off-screen if (fallingObject.y > 2732) { fallingObject.destroy(); fallingObjects.splice(f, 1); continue; } // Check for collision with redmarble if (redMarble && redMarble.intersects(fallingObject)) { if (fallingObject.assetId === 'masa2') { if (fallingObject.lastY <= masa.y && fallingObject.y > masa.y && fallingObject.intersects(masa)) { if (lives < 3) { lives++; var newHeart = LK.getAsset('kalp', { anchorX: 0.5, anchorY: 0.5 }); newHeart.x = 100 + (lives - 1) * (newHeart.width + 20); newHeart.y = 50; game.addChild(newHeart); hearts.push(newHeart); } // Increase masa size when masa catches a falling masa2 masa.scaleX *= 1.1; masa.scaleY *= 1.1; } } else if (fallingObject.assetId === 'lap') { // Check for intersection with red marble if (fallingObject.lastWasIntersectingRedMarble === false && fallingObject.intersects(redMarble)) { fallingObject.speedY = 10; // Increase falling speed } fallingObject.lastWasIntersectingRedMarble = fallingObject.intersects(redMarble); if (fallingObject.lastWasIntersectingMasa === false && fallingObject.intersects(masa)) { // Increase masa size only when masa catches a falling lap masa.scaleX *= 1.1; masa.scaleY *= 1.1; fallingObject.destroy(); // Ensure lap is destroyed after being caught fallingObjects.splice(f, 1); } fallingObject.lastWasIntersectingMasa = fallingObject.intersects(masa); } else if (fallingObject.assetId === 'ray') { if (fallingObject.lastY <= masa.y && fallingObject.y > masa.y && fallingObject.intersects(masa)) { // Enable shooting two rays from the sides of the table var leftRay = new Graphics(); leftRay.lineStyle(5, 0xff0000, 1); leftRay.moveTo(masa.x - masa.width / 2, masa.y); leftRay.lineTo(masa.x - masa.width / 2, 0); game.addChild(leftRay); var rightRay = new Graphics(); rightRay.lineStyle(5, 0xff0000, 1); rightRay.moveTo(masa.x + masa.width / 2, masa.y); rightRay.lineTo(masa.x + masa.width / 2, 0); game.addChild(rightRay); // Remove rays after a short duration LK.setTimeout(function () { leftRay.destroy(); rightRay.destroy(); }, 1000); } // Enable laser shooting for 10 seconds masa.enableLaser = true; LK.setTimeout(function () { masa.enableLaser = false; }, 10000); } fallingObject.destroy(); fallingObjects.splice(f, 1); } } // Randomly add new falling assets if (LK.ticks % 180 === 0) { // Removed the falling behavior of the 'lap' object // Every 3 seconds var randomIndex = Math.floor(Math.random() * assets.length); if (randomIndex !== undefined && assets[randomIndex]) { if (randomIndex !== undefined && assets[randomIndex]) { var randomAsset = assets[randomIndex]; if (randomAsset && randomAsset.assetId) { var newFallingObject = LK.getAsset(randomAsset.assetId, { anchorX: 0.5, anchorY: 0.5 }); if (newFallingObject) { newFallingObject.x = randomAsset.x; newFallingObject.y = randomAsset.y; newFallingObject.assetId = randomAsset.assetId; game.addChild(newFallingObject); fallingObjects.push(newFallingObject); } } } } if (newFallingObject) { newFallingObject.x = randomAsset.x; newFallingObject.y = randomAsset.y; newFallingObject.assetId = randomAsset.assetId; game.addChild(newFallingObject); fallingObjects.push(newFallingObject); } } // Check if the bottom row is empty and move assets down if (assets.length > 0 && assets[0].y > 2732) { for (var k = 0; k < assets.length; k++) { assets[k].y += 100 + spacingY; } } }; // Event listeners for shooting balls game.down = function (x, y, obj) { masa.x = x; // Move masa to the clicked x position // Shoot a redmarble from the masa only if there are no active redmarbles if (redMarbles.length === 0) { var redMarble = new RedMarble(); redMarble.x = masa.x; redMarble.y = masa.y - masa.height / 2; // Start above the masa redMarbles.push(redMarble); game.addChild(redMarble); } }; game.move = function (x, y, obj) { masa.x = x; // Update masa's x position with mouse movement };
/****
* Classes
****/
// Class for the different ages
var Age = Container.expand(function (age) {
var self = Container.call(this);
self.age = age;
self.resources = [];
self.buildings = [];
self.characters = [];
self.weapons = [];
self.score = 0;
self.addResource = function (resource) {
self.resources.push(resource);
};
self.addBuilding = function (building) {
self.buildings.push(building);
};
self.addCharacter = function (character) {
self.characters.push(character);
};
self.addWeapon = function (weapon) {
self.weapons.push(weapon);
};
self.updateScore = function (points) {
self.score += points;
if (self.score >= 5000) {
self.nextAge();
}
};
self.nextAge = function () {
// Logic for transitioning to the next age
};
self.update = function () {
// Logic for updating the age
};
});
// Class for the Balls in the chain
var Ball = Container.expand(function (color) {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball_' + color, {
anchorX: 0.5,
anchorY: 0.5
});
self.color = color;
self.update = function () {
// Logic for ball movement along the path
};
});
// Class for the Ball Chain
var BallChain = Container.expand(function () {
var self = Container.call(this);
self.balls = [];
self.addBall = function (ball) {
self.balls.push(ball);
self.addChild(ball);
};
self.update = function () {
// Logic for moving the chain and checking for matches
};
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for the Frog character
var Frog = Container.expand(function () {
var self = Container.call(this);
var frogGraphics = self.attachAsset('frog', {
anchorX: 0.5,
anchorY: 0.5
});
self.shootBall = function (color) {
var ball = new Ball(color);
ball.x = self.x;
ball.y = self.y;
return ball;
};
});
var Masa = Container.expand(function () {
var self = Container.call(this);
var masaGraphics = self.attachAsset('masa', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5; // Speed of movement
self.direction = 1; // 1 for right, -1 for left
self.update = function () {
// Move masa left and right
// Removed automatic movement of masa
// Update lastX
self.lastX = self.x;
// Laser shooting logic
if (self.enableLaser) {
// Logic to shoot laser
// For simplicity, assume laser is a straight line from masa
var laser = new Graphics();
laser.lineStyle(5, 0xff0000, 1);
laser.moveTo(self.x, self.y);
laser.lineTo(self.x, 0);
game.addChild(laser);
// Check for collisions with assets
for (var i = assets.length - 1; i >= 0; i--) {
var asset = assets[i];
if (asset.x >= self.x - 5 && asset.x <= self.x + 5 && asset.y < self.y) {
asset.destroy();
assets.splice(i, 1);
}
}
// Remove laser after a short duration
LK.setTimeout(function () {
laser.destroy();
}, 100);
}
// Check for collision with red marble
if (self.lastY <= topRedMarble.y && self.y > topRedMarble.y && self.intersects(topRedMarble)) {
if (aiLives > 0) {
aiLives--;
var aiHeartToRemove = aiHearts.shift(); // Remove the rightmost heart
aiHeartToRemove.destroy();
}
if (aiLives === 0) {
// AI loses, trigger game over
console.log("AI lost all lives!");
LK.showGameOver();
}
}
};
// Initialize lastX
self.lastX = self.x;
});
// Class for the RedMarble
var RedMarble = Container.expand(function () {
var self = Container.call(this);
var redMarbleGraphics = self.attachAsset('redmarble', {
anchorX: 0.5,
anchorY: 0.5
});
self.speedX = 5; // Horizontal speed of the red marble
self.speedY = -10; // Vertical speed of the red marble
self.update = function () {
self.y += self.speedY;
self.x += self.speedX;
// Check for collision with top wall
if (self.y <= 0) {
LK.getSound('x').play();
self.speedY *= -1; // Reverse Y direction
}
// Check for collision with side walls
if (self.x <= 0 || self.x >= 2048) {
LK.getSound('x').play();
self.speedX *= -1; // Reverse X direction
}
// Check if red marble is off-screen
if (self.y < -50) {
self.destroy();
}
// Check for collision with masa while falling
if (self.lastY <= masa.y && self.y > masa.y && self.intersects(masa)) {
LK.getSound('x').play();
self.speedY *= -1; // Reverse Y direction
}
// Check for collision with assets
for (var i = assets.length - 1; i >= 0; i--) {
var asset = assets[i];
if (self.intersects(asset)) {
asset.destroy();
assets.splice(i, 1);
LK.getSound('x').play();
// Return red marble to masa
self.x = masa.x;
self.y = masa.y - masa.height / 2;
self.speedX = 0;
self.speedY = -10;
}
}
self.lastY = self.y;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Initialize game elements
var topMasa = new Masa();
topMasa.x = 2048 / 2; // Center the masa horizontally
topMasa.y = 150; // Move masa down by 50 pixels
game.addChild(topMasa);
var topRedMarble = new RedMarble();
topRedMarble.x = 2048 / 2; // Center the red marble horizontally
topRedMarble.y = 150; // Move red marble down by 50 pixels
game.addChild(topRedMarble);
var fallingAssets = ['masa2', 'ray'];
var fallingObjects = [];
var lives = 3;
var hearts = [];
// Add heart images to the top of the screen
for (var i = 0; i < lives; i++) {
var heart = LK.getAsset('kalp', {
anchorX: 0.5,
anchorY: 0.5
});
heart.x = 100 + i * (heart.width + 20); // Position hearts with spacing
heart.y = 50; // Position hearts at the top
game.addChild(heart);
hearts.push(heart);
}
// Add heart images to the right of the AI's table
var aiLives = 3;
var aiHearts = [];
for (var i = 0; i < aiLives; i++) {
var aiHeart = LK.getAsset('kalp', {
anchorX: 0.5,
anchorY: 0.5
});
aiHeart.x = 2048 - (100 + i * (aiHeart.width + 20)); // Position hearts with spacing from the right
aiHeart.y = 50; // Position hearts at the top
game.addChild(aiHeart);
aiHearts.push(aiHeart);
}
var redMarbles = [];
var assets = [];
// Initialize game elements
var masa = new Masa();
masa.x = 2048 / 2; // Center the masa horizontally
masa.y = 2732 - 50; // Position masa at the bottom wall
game.addChild(masa);
var currentAge = new Age('Stone Age');
game.addChild(currentAge);
var frog = new Frog();
game.addChild(frog);
// Fill the screen with assets arranged in a grid pattern
var assetIds = ['bilye1', 'bilye10', 'bilye11', 'bilye12', 'bilye14', 'bilye15', 'bilye16', 'bilye3', 'bilye4', 'bilye5', 'bilye6', 'bilye7', 'bilye9', 'biyye8', 'f'];
var startX = 50; // Starting X position
var startY = 150; // Adjusted starting Y position to ensure hearts are visible
var spacingX = 20; // Horizontal spacing between assets
var spacingY = 20; // Vertical spacing between assets
var numRows = Math.floor((2732 - startY) / (100 + spacingY)) + 2; // Calculate number of rows based on screen height and add two more rows
var numCols = Math.floor((2048 - startX) / (100 + spacingX)); // Calculate number of columns based on screen width
for (var row = 2; row < numRows - 5; row++) {
// Start from the third row to remove the topmost two rows
// Adjusted to add one more row at the end
// Adjusted to remove the bottom 3 rows
for (var col = 0; col < numCols - 2; col++) {
var index = (row * numCols + col) % assetIds.length; // Loop through assetIds
var id = assetIds[index];
var asset = LK.getAsset(id, {
anchorX: 0.5,
anchorY: 0.5
});
asset.x = (2048 - (numCols - 1) * (asset.width + spacingX)) / 2 + (col + 1) * (asset.width + spacingX); // Shift assets one position to the right
asset.y = startY + row * (asset.height + spacingY); // Align assets vertically
game.addChild(asset);
assets.push(asset);
}
}
// Game update loop
game.update = function () {
currentAge.update();
// Additional game logic
// Update redmarble positions and check for collisions
for (var i = redMarbles.length - 1; i >= 0; i--) {
var redMarble = redMarbles[i];
redMarble.update();
// Check if redmarble is off-screen
if (redMarble.y > 2732) {
redMarble.destroy();
redMarbles.splice(i, 1);
// Decrease a heart
if (lives > 0) {
lives--;
var heartToRemove = hearts.shift(); // Remove the top heart
heartToRemove.destroy();
}
// Decrease a heart
if (lives > 0) {
lives--;
var heartToRemove = hearts.shift(); // Remove the top heart
heartToRemove.destroy();
}
// Check if all hearts are lost
if (lives === 0 || aiLives === 0 || assets.length === 0) {
// Display scores for each player
var playerScores = "Player 1: " + currentAge.score + "\nPlayer 2: " + (5000 - currentAge.score);
var playerScoreText = new Text2(playerScores, {
size: 100,
fill: 0xFFFFFF
});
playerScoreText.anchor.set(0.5, 0.5);
LK.gui.center.addChild(playerScoreText);
// Trigger game over screen
LK.showGameOver();
// Reset game state
lives = 3;
aiLives = 3;
hearts = [];
aiHearts = [];
for (var h = 0; h < lives; h++) {
var newHeart = LK.getAsset('kalp', {
anchorX: 0.5,
anchorY: 0.5
});
newHeart.x = 100 + h * (newHeart.width + 20);
newHeart.y = 50;
game.addChild(newHeart);
hearts.push(newHeart);
}
for (var a = 0; a < aiLives; a++) {
var newAIHeart = LK.getAsset('kalp', {
anchorX: 0.5,
anchorY: 0.5
});
newAIHeart.x = 2048 - (100 + a * (newAIHeart.width + 20));
newAIHeart.y = 50;
game.addChild(newAIHeart);
aiHearts.push(newAIHeart);
}
}
continue;
}
for (var j = assets.length - 1; j >= 0; j--) {
var asset = assets[j];
if (redMarble.intersects(asset)) {
asset.destroy();
assets.splice(j, 1);
LK.getSound('x').play();
redMarble.destroy(); // Destroy red marble on collision
redMarbles.splice(i, 1);
break; // Exit loop after destroying red marble
}
}
}
// Handle falling assets
for (var f = fallingObjects.length - 1; f >= 0; f--) {
var fallingObject = fallingObjects[f];
fallingObject.y += 5; // Falling speed
// Check if fallingObject is off-screen
if (fallingObject.y > 2732) {
fallingObject.destroy();
fallingObjects.splice(f, 1);
continue;
}
// Check for collision with redmarble
if (redMarble && redMarble.intersects(fallingObject)) {
if (fallingObject.assetId === 'masa2') {
if (fallingObject.lastY <= masa.y && fallingObject.y > masa.y && fallingObject.intersects(masa)) {
if (lives < 3) {
lives++;
var newHeart = LK.getAsset('kalp', {
anchorX: 0.5,
anchorY: 0.5
});
newHeart.x = 100 + (lives - 1) * (newHeart.width + 20);
newHeart.y = 50;
game.addChild(newHeart);
hearts.push(newHeart);
}
// Increase masa size when masa catches a falling masa2
masa.scaleX *= 1.1;
masa.scaleY *= 1.1;
}
} else if (fallingObject.assetId === 'lap') {
// Check for intersection with red marble
if (fallingObject.lastWasIntersectingRedMarble === false && fallingObject.intersects(redMarble)) {
fallingObject.speedY = 10; // Increase falling speed
}
fallingObject.lastWasIntersectingRedMarble = fallingObject.intersects(redMarble);
if (fallingObject.lastWasIntersectingMasa === false && fallingObject.intersects(masa)) {
// Increase masa size only when masa catches a falling lap
masa.scaleX *= 1.1;
masa.scaleY *= 1.1;
fallingObject.destroy(); // Ensure lap is destroyed after being caught
fallingObjects.splice(f, 1);
}
fallingObject.lastWasIntersectingMasa = fallingObject.intersects(masa);
} else if (fallingObject.assetId === 'ray') {
if (fallingObject.lastY <= masa.y && fallingObject.y > masa.y && fallingObject.intersects(masa)) {
// Enable shooting two rays from the sides of the table
var leftRay = new Graphics();
leftRay.lineStyle(5, 0xff0000, 1);
leftRay.moveTo(masa.x - masa.width / 2, masa.y);
leftRay.lineTo(masa.x - masa.width / 2, 0);
game.addChild(leftRay);
var rightRay = new Graphics();
rightRay.lineStyle(5, 0xff0000, 1);
rightRay.moveTo(masa.x + masa.width / 2, masa.y);
rightRay.lineTo(masa.x + masa.width / 2, 0);
game.addChild(rightRay);
// Remove rays after a short duration
LK.setTimeout(function () {
leftRay.destroy();
rightRay.destroy();
}, 1000);
}
// Enable laser shooting for 10 seconds
masa.enableLaser = true;
LK.setTimeout(function () {
masa.enableLaser = false;
}, 10000);
}
fallingObject.destroy();
fallingObjects.splice(f, 1);
}
}
// Randomly add new falling assets
if (LK.ticks % 180 === 0) {
// Removed the falling behavior of the 'lap' object
// Every 3 seconds
var randomIndex = Math.floor(Math.random() * assets.length);
if (randomIndex !== undefined && assets[randomIndex]) {
if (randomIndex !== undefined && assets[randomIndex]) {
var randomAsset = assets[randomIndex];
if (randomAsset && randomAsset.assetId) {
var newFallingObject = LK.getAsset(randomAsset.assetId, {
anchorX: 0.5,
anchorY: 0.5
});
if (newFallingObject) {
newFallingObject.x = randomAsset.x;
newFallingObject.y = randomAsset.y;
newFallingObject.assetId = randomAsset.assetId;
game.addChild(newFallingObject);
fallingObjects.push(newFallingObject);
}
}
}
}
if (newFallingObject) {
newFallingObject.x = randomAsset.x;
newFallingObject.y = randomAsset.y;
newFallingObject.assetId = randomAsset.assetId;
game.addChild(newFallingObject);
fallingObjects.push(newFallingObject);
}
}
// Check if the bottom row is empty and move assets down
if (assets.length > 0 && assets[0].y > 2732) {
for (var k = 0; k < assets.length; k++) {
assets[k].y += 100 + spacingY;
}
}
};
// Event listeners for shooting balls
game.down = function (x, y, obj) {
masa.x = x; // Move masa to the clicked x position
// Shoot a redmarble from the masa only if there are no active redmarbles
if (redMarbles.length === 0) {
var redMarble = new RedMarble();
redMarble.x = masa.x;
redMarble.y = masa.y - masa.height / 2; // Start above the masa
redMarbles.push(redMarble);
game.addChild(redMarble);
}
};
game.move = function (x, y, obj) {
masa.x = x; // Update masa's x position with mouse movement
};
RENKLİ CAM MİSKET. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
RENKLİ CAM MİSKET. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
COLORED GLASS MARBLE. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
COLORED GLASS MARBLE. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
COLORED GLASS MARBLE. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
COLORED GLASS MARBLE. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
COLORED GLASS MARBLE. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
COLORED GLASS MARBLE. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
red marble. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
long thick horizontal bar. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
heart. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.