User prompt
The goalkeeper should always stay on the goal line but move forward when the player comes. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
When I touch the goalkeeper, the ball goes forward
User prompt
The time will be 90 seconds, the player will always get the ball, that is, when the defender touches the ball will pass to him, there is no way not to pass
User prompt
When the football ball is a goal, it will always be in the middle, there will be a line indicating the middle, it will be in the circle.
User prompt
Write demo below
User prompt
Don't write soccer strike, just write welcome at the top, write FFT 26 but in the middle, welcome at the top, FFT26
User prompt
Write welcome FFT26 above
User prompt
The game name is FFT26
User prompt
Let's start with 0-0, when the opponent scores, it increases by 1, left is us, right is the opponent.
User prompt
Let the defender go to the ball and score a goal, and write the score above.
User prompt
remove color menu
User prompt
It's always the same color, change the color of the character
User prompt
Please fix the bug: 'Uncaught TypeError: setTimeout is not a function' in or related to this line: 'setTimeout(function () {' Line Number: 306
User prompt
Still the same error, the color I touch does not appear, the character appears
User prompt
bro it doesn't work, whatever color you click on is the color of the character
User prompt
I pressed orange and it came out green
User prompt
The character will become that color if he presses the color
User prompt
When we press play, the screen opens and the color becomes red, blue, green, black, yellow and orange. When we press it, we become that.
User prompt
There will be two goals and two goalkeepers, the situation will become more difficult with every goal scored
User prompt
Let the menu have grass in the background
User prompt
Let there be grass in the background
User prompt
Let there be a menu at the beginning and two buttons, let it say play at the top and exit at the bottom.
Code edit (1 edits merged)
Please save this source code
User prompt
Soccer Strike 2007
Initial prompt
futbol oyunu yap fifa 2007 gibi
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Ball = Container.expand(function () { var self = Container.call(this); var ballGraphics = self.attachAsset('ball', { anchorX: 0.5, anchorY: 0.5 }); self.velocityX = 0; self.velocityY = 0; self.friction = 0.95; self.isMoving = false; self.update = function () { if (self.isMoving) { self.x += self.velocityX; self.y += self.velocityY; self.velocityX *= self.friction; self.velocityY *= self.friction; // Stop ball if velocity is very low if (Math.abs(self.velocityX) < 0.5 && Math.abs(self.velocityY) < 0.5) { self.velocityX = 0; self.velocityY = 0; self.isMoving = false; } // Field boundaries if (self.x < 50) { self.x = 50; self.velocityX = -self.velocityX * 0.8; } if (self.x > 1998) { self.x = 1998; self.velocityX = -self.velocityX * 0.8; } if (self.y < 300) { self.y = 300; self.velocityY = -self.velocityY * 0.8; } if (self.y > 1800) { self.y = 1800; self.velocityY = -self.velocityY * 0.8; } } }; self.shoot = function (targetX, targetY) { var dx = targetX - self.x; var dy = targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.velocityX = dx / distance * 15; self.velocityY = dy / distance * 15; self.isMoving = true; LK.getSound('kick').play(); }; return self; }); var Defender = Container.expand(function () { var self = Container.call(this); var defenderGraphics = self.attachAsset('defender', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.targetX = 0; self.targetY = 0; self.update = function () { // Move towards target var dx = self.targetX - self.x; var dy = self.targetY - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 5) { self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; } }; return self; }); var Goalkeeper = Container.expand(function () { var self = Container.call(this); var goalkeeperGraphics = self.attachAsset('goalkeeper', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; self.direction = 1; self.centerX = 0; self.baseY = 0; // Will be set when goalkeeper is positioned self.isMovingForward = false; self.lastPlayerDistance = 1000; self.update = function () { // Horizontal movement between goal posts self.x += self.direction * self.speed; // Bounce between goal posts if (self.x < self.centerX - 150 || self.x > self.centerX + 150) { self.direction *= -1; } // Check distance to player for forward movement if (typeof player !== 'undefined' && player) { var distanceToPlayer = Math.sqrt((player.x - self.x) * (player.x - self.x) + (player.y - self.y) * (player.y - self.y)); // If player comes within 300 pixels, move forward if (distanceToPlayer < 300 && !self.isMovingForward && self.lastPlayerDistance >= 300) { self.isMovingForward = true; // Move forward by 100 pixels from goal line var targetY = self.baseY + (self.baseY < 1000 ? 100 : -100); tween(self, { y: targetY }, { duration: 500, easing: tween.easeOut }); } // If player moves away beyond 400 pixels, return to goal line else if (distanceToPlayer > 400 && self.isMovingForward && self.lastPlayerDistance <= 400) { self.isMovingForward = false; // Return to goal line tween(self, { y: self.baseY }, { duration: 800, easing: tween.easeInOut }); } self.lastPlayerDistance = distanceToPlayer; } }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.hasBall = false; self.setColor = function (color) { playerGraphics.tint = color; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x228b22 }); /**** * Game Code ****/ // Menu system var menuActive = true; var gameStarted = false; // Menu grass background var menuGrassBackground = game.attachAsset('grass', { x: 0, y: 0, anchorX: 0, anchorY: 0 }); // Welcome text var welcomeTxt = new Text2('Welcome', { size: 80, fill: 0xFFFFFF }); welcomeTxt.anchor.set(0.5, 0.5); welcomeTxt.x = 1024; welcomeTxt.y = 500; game.addChild(welcomeTxt); // Menu title var titleTxt = new Text2('FFT26', { size: 120, fill: 0xFFFFFF }); titleTxt.anchor.set(0.5, 0.5); titleTxt.x = 1024; titleTxt.y = 700; game.addChild(titleTxt); // Demo text var demoTxt = new Text2('Demo', { size: 80, fill: 0xFFFFFF }); demoTxt.anchor.set(0.5, 0.5); demoTxt.x = 1024; demoTxt.y = 850; game.addChild(demoTxt); // Play button var playButton = new Text2('PLAY', { size: 100, fill: 0x00FF00 }); playButton.anchor.set(0.5, 0.5); playButton.x = 1024; playButton.y = 1200; game.addChild(playButton); // Exit button var exitButton = new Text2('EXIT', { size: 100, fill: 0xFF0000 }); exitButton.anchor.set(0.5, 0.5); exitButton.x = 1024; exitButton.y = 1400; game.addChild(exitButton); // Function to start the game function startGame() { gameStarted = true; // Hide menu elements welcomeTxt.visible = false; titleTxt.visible = false; demoTxt.visible = false; playButton.visible = false; exitButton.visible = false; // Show game elements initializeGameElements(); } // Function to initialize game elements function initializeGameElements() { // Grass background var grassBackground = game.attachAsset('grass', { x: 0, y: 0, anchorX: 0, anchorY: 0 }); // Game field setup var fieldBackground = game.attachAsset('field', { x: 0, y: 400, anchorX: 0, anchorY: 0 }); // Goal setup - Top goal goalArea = game.attachAsset('goal', { x: 1024, y: 300, anchorX: 0.5, anchorY: 0 }); goalArea.alpha = 0.3; leftGoalPost = game.attachAsset('goalpost', { x: 824, y: 300, anchorX: 0.5, anchorY: 0 }); rightGoalPost = game.attachAsset('goalpost', { x: 1224, y: 300, anchorX: 0.5, anchorY: 0 }); // Second goal setup - Bottom goal goalArea2 = game.attachAsset('goal', { x: 1024, y: 1700, anchorX: 0.5, anchorY: 0 }); goalArea2.alpha = 0.3; leftGoalPost2 = game.attachAsset('goalpost', { x: 824, y: 1700, anchorX: 0.5, anchorY: 0 }); rightGoalPost2 = game.attachAsset('goalpost', { x: 1224, y: 1700, anchorX: 0.5, anchorY: 0 }); // Center line var centerLine = game.attachAsset('centerLine', { x: 0, y: 1048, anchorX: 0, anchorY: 0.5 }); // Center circle var centerCircle = game.attachAsset('centerCircle', { x: 1024, y: 1050, anchorX: 0.5, anchorY: 0.5 }); centerCircle.alpha = 0.8; // Score display scoreTxt = new Text2('0-0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); scoreTxt.y = 50; // Position score text below the top margin LK.gui.top.addChild(scoreTxt); // Timer display timerTxt = new Text2('Time: 90', { size: 60, fill: 0xFFFFFF }); timerTxt.anchor.set(1, 0); LK.gui.topRight.addChild(timerTxt); // Game entities player = game.addChild(new Player()); player.x = 1024; player.y = 1500; // Player color is now applied in constructor ball = game.addChild(new Ball()); ball.x = 1024; ball.y = 1050; goalkeeper = game.addChild(new Goalkeeper()); goalkeeper.x = 1024; goalkeeper.y = 350; goalkeeper.centerX = 1024; goalkeeper.baseY = 350; // Set base position for goal line // Second goalkeeper for bottom goal goalkeeper2 = game.addChild(new Goalkeeper()); goalkeeper2.x = 1024; goalkeeper2.y = 1750; goalkeeper2.centerX = 1024; goalkeeper2.baseY = 1750; // Set base position for goal line // Defenders defenders = []; for (var i = 0; i < 3; i++) { var defender = game.addChild(new Defender()); defender.x = 600 + i * 300; defender.y = 800 + i * 150; defenders.push(defender); } // Game variables gameTime = 90; goals = 0; opponentGoals = 0; gameActive = true; dragNode = null; lastGameTime = 90; // Game timer gameTimer = LK.setInterval(function () { if (gameActive) { gameTime--; timerTxt.setText('Time: ' + gameTime); if (gameTime <= 0) { gameActive = false; LK.showGameOver(); } } }, 1000); } // Function to increase difficulty after each goal function increaseDifficulty() { // Increase goalkeeper speed goalkeeper.speed += 0.5; goalkeeper2.speed += 0.5; // Increase defender speed for (var i = 0; i < defenders.length; i++) { defenders[i].speed += 0.3; } // Add new defender every 3 goals if (goals % 3 === 0 && defenders.length < 6) { var newDefender = game.addChild(new Defender()); newDefender.x = 400 + Math.random() * 1200; newDefender.y = 600 + Math.random() * 600; defenders.push(newDefender); } } // Declare game variables globally var goalArea, leftGoalPost, rightGoalPost, goalArea2, leftGoalPost2, rightGoalPost2, scoreTxt, timerTxt; var player, ball, goalkeeper, goalkeeper2, defenders; var gameTime, goals, opponentGoals, gameActive, dragNode, lastGameTime, gameTimer; // Touch controls game.down = function (x, y, obj) { if (menuActive) { // Check if play button was clicked var distanceToPlay = Math.sqrt((x - playButton.x) * (x - playButton.x) + (y - playButton.y) * (y - playButton.y)); if (distanceToPlay < 150) { menuActive = false; startGame(); return; } // Check if exit button was clicked var distanceToExit = Math.sqrt((x - exitButton.x) * (x - exitButton.x) + (y - exitButton.y) * (y - exitButton.y)); if (distanceToExit < 150) { // Exit functionality - show game over to end the game LK.showGameOver(); return; } return; } if (!gameActive || !gameStarted) return; var distanceToPlayer = Math.sqrt((x - player.x) * (x - player.x) + (y - player.y) * (y - player.y)); var distanceToBall = Math.sqrt((x - ball.x) * (x - ball.x) + (y - ball.y) * (y - ball.y)); if (distanceToPlayer < 100) { dragNode = player; } else if (distanceToBall < 80 && player.hasBall) { // Shoot ball towards tap location ball.shoot(x, y); player.hasBall = false; } }; game.move = function (x, y, obj) { if (!gameActive || !gameStarted || menuActive) return; if (dragNode === player) { player.x = x; player.y = y; // Keep player within field bounds if (player.x < 100) player.x = 100; if (player.x > 1948) player.x = 1948; if (player.y < 400) player.y = 400; if (player.y > 1850) player.y = 1850; // Move ball with player if close enough if (player.hasBall && !ball.isMoving) { ball.x = player.x; ball.y = player.y - 50; } } }; game.up = function (x, y, obj) { if (!gameStarted || menuActive) return; dragNode = null; }; // Main game loop game.update = function () { if (!gameActive || !gameStarted || menuActive) return; // Check if player can pick up ball - player always gets ball when touching it var distanceToBall = Math.sqrt((player.x - ball.x) * (player.x - ball.x) + (player.y - ball.y) * (player.y - ball.y)); if (distanceToBall < 60 && !player.hasBall) { player.hasBall = true; ball.velocityX = 0; ball.velocityY = 0; ball.isMoving = false; } // Update defenders to chase ball for (var i = 0; i < defenders.length; i++) { var defender = defenders[i]; defender.targetX = ball.x; defender.targetY = ball.y; // Check collision with ball - defender always gets the ball when touching it var distanceToBall = Math.sqrt((defender.x - ball.x) * (defender.x - ball.x) + (defender.y - ball.y) * (defender.y - ball.y)); if (distanceToBall < 60) { // Defender always gets the ball when touching it player.hasBall = false; ball.velocityX = 0; ball.velocityY = 0; ball.isMoving = false; // Defender gets the ball and shoots towards goal var goalX = 1024; // Center of goal var goalY = 300; // Top goal // If defender is closer to bottom goal, shoot there instead if (defender.y > 1000) { goalY = 1750; // Bottom goal } ball.shoot(goalX + (Math.random() - 0.5) * 200, goalY); LK.effects.flashObject(defender, 0x00ff00, 500); } // Check collision with player - when defender touches player with ball, defender gets it var distanceToPlayer = Math.sqrt((defender.x - player.x) * (defender.x - player.x) + (defender.y - player.y) * (defender.y - player.y)); if (distanceToPlayer < 80 && player.hasBall) { player.hasBall = false; ball.x = defender.x; ball.y = defender.y; // Defender immediately shoots towards goal var goalX = 1024; var goalY = 1750; // Shoot towards bottom goal (our goal) ball.shoot(goalX + (Math.random() - 0.5) * 200, goalY); LK.effects.flashObject(player, 0xff0000, 500); } } // Check collision with goalkeeper - when player touches goalkeeper, ball goes forward var distanceToGoalkeeper = Math.sqrt((player.x - goalkeeper.x) * (player.x - goalkeeper.x) + (player.y - goalkeeper.y) * (player.y - goalkeeper.y)); if (distanceToGoalkeeper < 80) { if (!ball.isMoving) { // Make ball go forward (towards bottom goal) ball.shoot(ball.x, ball.y + 300); player.hasBall = false; } } // Check collision with second goalkeeper - when player touches goalkeeper, ball goes forward var distanceToGoalkeeper2 = Math.sqrt((player.x - goalkeeper2.x) * (player.x - goalkeeper2.x) + (player.y - goalkeeper2.y) * (player.y - goalkeeper2.y)); if (distanceToGoalkeeper2 < 80) { if (!ball.isMoving) { // Make ball go forward (towards top goal) ball.shoot(ball.x, ball.y - 300); player.hasBall = false; } } // Check goal scoring - Top goal (we score) if (ball.x > 844 && ball.x < 1204 && ball.y < 500 && ball.y > 300) { if (ball.lastY === undefined || ball.lastY > 500) { goals++; LK.setScore(goals); scoreTxt.setText(goals + '-' + opponentGoals); LK.getSound('goal').play(); LK.effects.flashScreen(0x00ff00, 1000); // Reset ball and player positions player.x = 1024; player.y = 1500; ball.x = 1024; ball.y = 1050; ball.velocityX = 0; ball.velocityY = 0; ball.isMoving = false; player.hasBall = false; // Increase difficulty after each goal increaseDifficulty(); // Check win condition if (goals >= 10) { gameActive = false; LK.showYouWin(); } } } // Check goal scoring - Bottom goal (opponent scores against us) if (ball.x > 844 && ball.x < 1204 && ball.y > 1700 && ball.y < 1900) { if (ball.lastY === undefined || ball.lastY < 1700) { opponentGoals++; scoreTxt.setText(goals + '-' + opponentGoals); LK.getSound('goal').play(); LK.effects.flashScreen(0xff0000, 1000); // Reset ball and player positions player.x = 1024; player.y = 1500; ball.x = 1024; ball.y = 1050; ball.velocityX = 0; ball.velocityY = 0; ball.isMoving = false; player.hasBall = false; // Increase difficulty after each goal increaseDifficulty(); // Check lose condition if (opponentGoals >= 10) { gameActive = false; LK.showGameOver(); } } } ball.lastY = ball.y; };
===================================================================
--- original.js
+++ change.js
@@ -87,14 +87,46 @@
});
self.speed = 4;
self.direction = 1;
self.centerX = 0;
+ self.baseY = 0; // Will be set when goalkeeper is positioned
+ self.isMovingForward = false;
+ self.lastPlayerDistance = 1000;
self.update = function () {
+ // Horizontal movement between goal posts
self.x += self.direction * self.speed;
// Bounce between goal posts
if (self.x < self.centerX - 150 || self.x > self.centerX + 150) {
self.direction *= -1;
}
+ // Check distance to player for forward movement
+ if (typeof player !== 'undefined' && player) {
+ var distanceToPlayer = Math.sqrt((player.x - self.x) * (player.x - self.x) + (player.y - self.y) * (player.y - self.y));
+ // If player comes within 300 pixels, move forward
+ if (distanceToPlayer < 300 && !self.isMovingForward && self.lastPlayerDistance >= 300) {
+ self.isMovingForward = true;
+ // Move forward by 100 pixels from goal line
+ var targetY = self.baseY + (self.baseY < 1000 ? 100 : -100);
+ tween(self, {
+ y: targetY
+ }, {
+ duration: 500,
+ easing: tween.easeOut
+ });
+ }
+ // If player moves away beyond 400 pixels, return to goal line
+ else if (distanceToPlayer > 400 && self.isMovingForward && self.lastPlayerDistance <= 400) {
+ self.isMovingForward = false;
+ // Return to goal line
+ tween(self, {
+ y: self.baseY
+ }, {
+ duration: 800,
+ easing: tween.easeInOut
+ });
+ }
+ self.lastPlayerDistance = distanceToPlayer;
+ }
};
return self;
});
var Player = Container.expand(function () {
@@ -285,13 +317,15 @@
goalkeeper = game.addChild(new Goalkeeper());
goalkeeper.x = 1024;
goalkeeper.y = 350;
goalkeeper.centerX = 1024;
+ goalkeeper.baseY = 350; // Set base position for goal line
// Second goalkeeper for bottom goal
goalkeeper2 = game.addChild(new Goalkeeper());
goalkeeper2.x = 1024;
goalkeeper2.y = 1750;
goalkeeper2.centerX = 1024;
+ goalkeeper2.baseY = 1750; // Set base position for goal line
// Defenders
defenders = [];
for (var i = 0; i < 3; i++) {
var defender = game.addChild(new Defender());