User prompt
Karakteri alıp biz kontrol edebilelim kendi yarı sahımızada bir kale koy ve oyunun mantığını tamamen değiştirelim maç yapacağız ! ortaya bir top ta koy
Code edit (1 edits merged)
Please save this source code
User prompt
Blue Lock Soccer Shot
Initial prompt
Bir Blue Lock oyunu yapmanı istiyorum !
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
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.direction = 1;
self.minX = 200;
self.maxX = 1848;
self.update = function () {
self.x += self.speed * self.direction;
if (self.x <= self.minX || self.x >= self.maxX) {
self.direction *= -1;
}
};
return self;
});
var Goal = Container.expand(function () {
var self = Container.call(this);
// Goal area
var goalGraphics = self.attachAsset('goal', {
anchorX: 0.5,
anchorY: 0.5
});
goalGraphics.alpha = 0.3;
// Left goalpost
var leftPost = self.addChild(LK.getAsset('goalpost', {
anchorX: 0.5,
anchorY: 0.5
}));
leftPost.x = -210;
leftPost.y = 0;
// Right goalpost
var rightPost = self.addChild(LK.getAsset('goalpost', {
anchorX: 0.5,
anchorY: 0.5
}));
rightPost.x = 210;
rightPost.y = 0;
return self;
});
var SoccerBall = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.active = true;
self.update = function () {
if (self.active) {
self.y -= self.speed;
}
};
return self;
});
var Striker = Container.expand(function () {
var self = Container.call(this);
var strikerGraphics = self.attachAsset('striker', {
anchorX: 0.5,
anchorY: 0.5
});
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x228B22
});
/****
* Game Code
****/
game.setBackgroundColor(0x228B22);
// Game variables
var balls = [];
var defenders = [];
var ballsRemaining = 20;
var level = 1;
var defenderRows = 1;
// UI Elements
var scoreTxt = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var ballsTxt = new Text2('Balls: 20', {
size: 60,
fill: 0xFFFFFF
});
ballsTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(ballsTxt);
var levelTxt = new Text2('Level: 1', {
size: 60,
fill: 0xFFFFFF
});
levelTxt.anchor.set(0, 0);
LK.gui.topLeft.addChild(levelTxt);
// Game objects
var striker = game.addChild(new Striker());
striker.x = 1024;
striker.y = 2500;
var goal = game.addChild(new Goal());
goal.x = 1024;
goal.y = 300;
// Initialize defenders
function createDefenderRow(y, count, speed) {
var spacing = 1600 / (count + 1);
for (var i = 0; i < count; i++) {
var defender = game.addChild(new Defender());
defender.x = 224 + spacing * (i + 1);
defender.y = y;
defender.speed = speed;
defenders.push(defender);
}
}
function setupLevel() {
// Clear existing defenders
for (var i = defenders.length - 1; i >= 0; i--) {
defenders[i].destroy();
}
defenders = [];
// Create new defender formation based on level
if (level === 1) {
createDefenderRow(1200, 2, 2);
} else if (level === 2) {
createDefenderRow(1200, 3, 2.5);
} else if (level === 3) {
createDefenderRow(1200, 3, 3);
createDefenderRow(800, 2, 2.5);
} else if (level === 4) {
createDefenderRow(1200, 4, 3);
createDefenderRow(800, 3, 2.5);
} else {
// Progressive difficulty
var rows = Math.min(3, Math.floor(level / 2));
for (var r = 0; r < rows; r++) {
var y = 1200 - r * 400;
var count = Math.min(5, 2 + r + Math.floor(level / 3));
var speed = 2 + level * 0.3 + r * 0.5;
createDefenderRow(y, count, speed);
}
}
}
setupLevel();
// Shooting mechanics
function shootBall() {
if (ballsRemaining <= 0) return;
var ball = game.addChild(new SoccerBall());
ball.x = striker.x;
ball.y = striker.y - 50;
balls.push(ball);
ballsRemaining--;
ballsTxt.setText('Balls: ' + ballsRemaining);
LK.getSound('shoot').play();
}
// Touch controls
game.down = function (x, y, obj) {
shootBall();
};
// Level progression
function nextLevel() {
level++;
ballsRemaining = Math.max(15, 25 - level);
levelTxt.setText('Level: ' + level);
ballsTxt.setText('Balls: ' + ballsRemaining);
setupLevel();
}
// Game update loop
game.update = function () {
// Update balls
for (var i = balls.length - 1; i >= 0; i--) {
var ball = balls[i];
if (!ball.active) continue;
// Check if ball is off screen (top)
if (ball.y < -50) {
ball.destroy();
balls.splice(i, 1);
continue;
}
// Check collision with defenders
var blocked = false;
for (var j = 0; j < defenders.length; j++) {
var defender = defenders[j];
if (ball.intersects(defender)) {
ball.active = false;
ball.destroy();
balls.splice(i, 1);
blocked = true;
LK.getSound('blocked').play();
// Flash defender
LK.effects.flashObject(defender, 0xFF0000, 300);
break;
}
}
if (blocked) continue;
// Check goal scoring
if (ball.y < goal.y + 50 && ball.x > goal.x - 200 && ball.x < goal.x + 200) {
ball.active = false;
ball.destroy();
balls.splice(i, 1);
// Score goal
LK.setScore(LK.getScore() + 10);
scoreTxt.setText('Score: ' + LK.getScore());
LK.getSound('goal').play();
// Flash goal
LK.effects.flashObject(goal, 0xFFFF00, 500);
// Check level completion (score milestone)
if (LK.getScore() >= level * 50) {
nextLevel();
}
}
}
// Check game over condition
if (ballsRemaining <= 0 && balls.length === 0) {
LK.showGameOver();
}
// Auto-shoot for demonstration (remove this for manual control only)
if (LK.ticks % 90 === 0 && ballsRemaining > 0) {
shootBall();
}
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,234 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+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.direction = 1;
+ self.minX = 200;
+ self.maxX = 1848;
+ self.update = function () {
+ self.x += self.speed * self.direction;
+ if (self.x <= self.minX || self.x >= self.maxX) {
+ self.direction *= -1;
+ }
+ };
+ return self;
+});
+var Goal = Container.expand(function () {
+ var self = Container.call(this);
+ // Goal area
+ var goalGraphics = self.attachAsset('goal', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ goalGraphics.alpha = 0.3;
+ // Left goalpost
+ var leftPost = self.addChild(LK.getAsset('goalpost', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ leftPost.x = -210;
+ leftPost.y = 0;
+ // Right goalpost
+ var rightPost = self.addChild(LK.getAsset('goalpost', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ }));
+ rightPost.x = 210;
+ rightPost.y = 0;
+ return self;
+});
+var SoccerBall = Container.expand(function () {
+ var self = Container.call(this);
+ var ballGraphics = self.attachAsset('ball', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 8;
+ self.active = true;
+ self.update = function () {
+ if (self.active) {
+ self.y -= self.speed;
+ }
+ };
+ return self;
+});
+var Striker = Container.expand(function () {
+ var self = Container.call(this);
+ var strikerGraphics = self.attachAsset('striker', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x228B22
+});
+
+/****
+* Game Code
+****/
+game.setBackgroundColor(0x228B22);
+// Game variables
+var balls = [];
+var defenders = [];
+var ballsRemaining = 20;
+var level = 1;
+var defenderRows = 1;
+// UI Elements
+var scoreTxt = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var ballsTxt = new Text2('Balls: 20', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+ballsTxt.anchor.set(1, 0);
+LK.gui.topRight.addChild(ballsTxt);
+var levelTxt = new Text2('Level: 1', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+levelTxt.anchor.set(0, 0);
+LK.gui.topLeft.addChild(levelTxt);
+// Game objects
+var striker = game.addChild(new Striker());
+striker.x = 1024;
+striker.y = 2500;
+var goal = game.addChild(new Goal());
+goal.x = 1024;
+goal.y = 300;
+// Initialize defenders
+function createDefenderRow(y, count, speed) {
+ var spacing = 1600 / (count + 1);
+ for (var i = 0; i < count; i++) {
+ var defender = game.addChild(new Defender());
+ defender.x = 224 + spacing * (i + 1);
+ defender.y = y;
+ defender.speed = speed;
+ defenders.push(defender);
+ }
+}
+function setupLevel() {
+ // Clear existing defenders
+ for (var i = defenders.length - 1; i >= 0; i--) {
+ defenders[i].destroy();
+ }
+ defenders = [];
+ // Create new defender formation based on level
+ if (level === 1) {
+ createDefenderRow(1200, 2, 2);
+ } else if (level === 2) {
+ createDefenderRow(1200, 3, 2.5);
+ } else if (level === 3) {
+ createDefenderRow(1200, 3, 3);
+ createDefenderRow(800, 2, 2.5);
+ } else if (level === 4) {
+ createDefenderRow(1200, 4, 3);
+ createDefenderRow(800, 3, 2.5);
+ } else {
+ // Progressive difficulty
+ var rows = Math.min(3, Math.floor(level / 2));
+ for (var r = 0; r < rows; r++) {
+ var y = 1200 - r * 400;
+ var count = Math.min(5, 2 + r + Math.floor(level / 3));
+ var speed = 2 + level * 0.3 + r * 0.5;
+ createDefenderRow(y, count, speed);
+ }
+ }
+}
+setupLevel();
+// Shooting mechanics
+function shootBall() {
+ if (ballsRemaining <= 0) return;
+ var ball = game.addChild(new SoccerBall());
+ ball.x = striker.x;
+ ball.y = striker.y - 50;
+ balls.push(ball);
+ ballsRemaining--;
+ ballsTxt.setText('Balls: ' + ballsRemaining);
+ LK.getSound('shoot').play();
+}
+// Touch controls
+game.down = function (x, y, obj) {
+ shootBall();
+};
+// Level progression
+function nextLevel() {
+ level++;
+ ballsRemaining = Math.max(15, 25 - level);
+ levelTxt.setText('Level: ' + level);
+ ballsTxt.setText('Balls: ' + ballsRemaining);
+ setupLevel();
+}
+// Game update loop
+game.update = function () {
+ // Update balls
+ for (var i = balls.length - 1; i >= 0; i--) {
+ var ball = balls[i];
+ if (!ball.active) continue;
+ // Check if ball is off screen (top)
+ if (ball.y < -50) {
+ ball.destroy();
+ balls.splice(i, 1);
+ continue;
+ }
+ // Check collision with defenders
+ var blocked = false;
+ for (var j = 0; j < defenders.length; j++) {
+ var defender = defenders[j];
+ if (ball.intersects(defender)) {
+ ball.active = false;
+ ball.destroy();
+ balls.splice(i, 1);
+ blocked = true;
+ LK.getSound('blocked').play();
+ // Flash defender
+ LK.effects.flashObject(defender, 0xFF0000, 300);
+ break;
+ }
+ }
+ if (blocked) continue;
+ // Check goal scoring
+ if (ball.y < goal.y + 50 && ball.x > goal.x - 200 && ball.x < goal.x + 200) {
+ ball.active = false;
+ ball.destroy();
+ balls.splice(i, 1);
+ // Score goal
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText('Score: ' + LK.getScore());
+ LK.getSound('goal').play();
+ // Flash goal
+ LK.effects.flashObject(goal, 0xFFFF00, 500);
+ // Check level completion (score milestone)
+ if (LK.getScore() >= level * 50) {
+ nextLevel();
+ }
+ }
+ }
+ // Check game over condition
+ if (ballsRemaining <= 0 && balls.length === 0) {
+ LK.showGameOver();
+ }
+ // Auto-shoot for demonstration (remove this for manual control only)
+ if (LK.ticks % 90 === 0 && ballsRemaining > 0) {
+ shootBall();
+ }
+};
\ No newline at end of file