User prompt
oyunu biraz daha güzel yapıcak şeyler ekle ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
bir kısma skor tabelası ekle ilk 10 kişi girebilir eğer skoru yüksekse ismini yazıp skor tabelasında kalabilir ismi ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
topları biraz daha büyüt,ve topa dokunduğumuzda yavaşça 1 1 artsın hemen çok fazla artıyor mesela bug var aniden bug ile 20 yapabiliyorsun o sorunuda düzelt
User prompt
toplar biraz daha büyük olsunn ve kare şey hala topa dokunamıyor bazen aşağıya düştüğü zaman bu sorunuda düzelt
User prompt
tamam şimdi bir şeyler keleyelim yuvarlak şekilde artı 5 puan 10 puan veren şeyler olucak top oraya dokunduğunda bize puan eklinicek yuvarlak yeşil rengide olucak tam terside kırmızı renfindew top ona ssdokunduğunda otomatik kaybederiz ve eksi puan kaybetme şeyleride ekle kırmızı yuvarlak renginde
User prompt
top çok hızlı aşağıya düştüğü zmanada kareye dokunamıyor bu sorunuda düzelt bütün dokunuş sorunlarını düzelt
User prompt
top karenin içinden hala geçyior bu sorunu düzelt
User prompt
top karenini içinden geçiyor bu sorunu düzelt bide kareyi sadece sağ ve sola oynatmayalım mouse ile haraket ettirebilelim istediğimiz yere
Code edit (1 edits merged)
Please save this source code
User prompt
Bounce Keeper
Initial prompt
bi tane kare parça ekle ve onu mousla haraket ettirebilelim ve aşağı düşen bir yuvarlak top var kare topa deydğinde top yine havaya kalkar ve sektirirrlir ve böyle böyle her sektirişte 1 puan eklenir eğer topa dokunmazszak kaybederiz
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
leaderboard: {}
});
/****
* 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.gravity = 0.6;
self.bounceStrength = -15;
self.x = 1024;
self.y = 200;
self.update = function () {
self.velocityY += self.gravity;
self.x += self.velocityX;
self.y += self.velocityY;
self.velocityX *= 0.98;
if (self.x < 25) {
self.x = 25;
self.velocityX *= -0.8;
}
if (self.x > 2023) {
self.x = 2023;
self.velocityX *= -0.8;
}
};
return self;
});
var BonusLarge = Container.expand(function () {
var self = Container.call(this);
var bonusGraphics = self.attachAsset('bonusLarge', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 1.5;
self.velocityX = 0;
self.gravity = 0.3;
self.pointValue = 10;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
var BonusSmall = Container.expand(function () {
var self = Container.call(this);
var bonusGraphics = self.attachAsset('bonusSmall', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 2;
self.velocityX = 0;
self.gravity = 0.4;
self.pointValue = 5;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
var Paddle = Container.expand(function () {
var self = Container.call(this);
var paddleGraphics = self.attachAsset('paddle', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 1024;
self.y = 2600;
return self;
});
var Penalty = Container.expand(function () {
var self = Container.call(this);
var penaltyGraphics = self.attachAsset('penalty', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 2.5;
self.velocityX = 0;
self.gravity = 0.5;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var LeaderboardManager = function LeaderboardManager() {
var self = {};
self.addScore = function (playerName, score) {
var leaderboard = storage.leaderboard || {};
leaderboard[playerName] = Math.max(leaderboard[playerName] || 0, score);
var entries = [];
for (var key in leaderboard) {
if (leaderboard.hasOwnProperty(key)) {
entries.push({
name: key,
score: leaderboard[key]
});
}
}
entries.sort(function (a, b) {
return b.score - a.score;
});
if (entries.length > 10) {
entries = entries.slice(0, 10);
}
var newLeaderboard = {};
for (var i = 0; i < entries.length; i++) {
newLeaderboard[entries[i].name] = entries[i].score;
}
storage.leaderboard = newLeaderboard;
return entries;
};
self.getLeaderboard = function () {
var leaderboard = storage.leaderboard || {};
var entries = [];
for (var key in leaderboard) {
if (leaderboard.hasOwnProperty(key)) {
entries.push({
name: key,
score: leaderboard[key]
});
}
}
entries.sort(function (a, b) {
return b.score - a.score;
});
return entries;
};
self.isTopScore = function (score) {
var entries = self.getLeaderboard();
return entries.length < 10 || score > entries[entries.length - 1].score;
};
return self;
};
var paddle = game.addChild(new Paddle());
var ball = game.addChild(new Ball());
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var leaderboardManager = new LeaderboardManager();
var dragNode = null;
var ballLastIntersecting = false;
var ballLastY = ball.y;
var ballLastWasIntersecting = false;
var bonusObjects = [];
var penaltyObjects = [];
var spawnCounter = 0;
var playerNameInput = null;
var showingLeaderboard = false;
function handleMove(x, y, obj) {
paddle.x = x;
paddle.y = y;
if (paddle.x < 75) {
paddle.x = 75;
}
if (paddle.x > 1973) {
paddle.x = 1973;
}
if (paddle.y < 20) {
paddle.y = 20;
}
if (paddle.y > 2712) {
paddle.y = 2712;
}
if (ballLastY >= 0 && ball.y > 2732) {
LK.showGameOver();
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
handleMove(x, y, obj);
};
game.update = function () {
var paddleTop = paddle.y - 20;
var paddleBottom = paddle.y + 20;
var paddleLeft = paddle.x - 75;
var paddleRight = paddle.x + 75;
var ballRadius = 40;
var ballCenterX = ball.x;
var ballCenterY = ball.y;
var paddleCenterX = paddle.x;
var ballMovedDownward = ballLastY < ballCenterY;
var ballCrossedPaddleVertically = ballLastY - ballRadius <= paddleTop && ballCenterY + ballRadius >= paddleTop;
var ballWithinPaddleHorizontally = ballCenterX >= paddleLeft && ballCenterX <= paddleRight;
var currentIntersecting = ball.intersects(paddle);
if ((currentIntersecting || ballMovedDownward && ballCrossedPaddleVertically && ballWithinPaddleHorizontally) && ballCenterY - ballRadius < paddleBottom) {
if (!ballLastWasIntersecting) {
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
}
ball.velocityY = ball.bounceStrength;
ball.y = paddleTop - ballRadius;
var distance = (ballCenterX - paddleCenterX) / 75;
ball.velocityX = distance * 8;
LK.getSound('bounce').play();
}
ballLastWasIntersecting = currentIntersecting;
ballLastIntersecting = currentIntersecting;
if (ballLastY >= 0 && ball.y > 2732) {
LK.showGameOver();
}
spawnCounter++;
if (spawnCounter % 120 === 0) {
var randomType = Math.random();
if (randomType < 0.4) {
var bonusSmall = game.addChild(new BonusSmall());
bonusSmall.x = Math.random() * 1948 + 50;
bonusSmall.y = -40;
bonusSmall.lastY = bonusSmall.y;
bonusObjects.push(bonusSmall);
} else if (randomType < 0.8) {
var bonusLarge = game.addChild(new BonusLarge());
bonusLarge.x = Math.random() * 1948 + 50;
bonusLarge.y = -50;
bonusLarge.lastY = bonusLarge.y;
bonusObjects.push(bonusLarge);
} else {
var penalty = game.addChild(new Penalty());
penalty.x = Math.random() * 1946 + 50;
penalty.y = -45;
penalty.lastY = penalty.y;
penaltyObjects.push(penalty);
}
}
for (var b = bonusObjects.length - 1; b >= 0; b--) {
var bonus = bonusObjects[b];
if (bonus.y > 2732) {
bonus.destroy();
bonusObjects.splice(b, 1);
continue;
}
var bonusLastIntersecting = bonus.lastWasIntersecting === undefined ? false : bonus.lastWasIntersecting;
var currentBonusIntersecting = bonus.intersects(paddle);
if (!bonusLastIntersecting && currentBonusIntersecting) {
LK.setScore(LK.getScore() + bonus.pointValue);
scoreTxt.setText(LK.getScore());
bonus.destroy();
bonusObjects.splice(b, 1);
continue;
}
bonus.lastWasIntersecting = currentBonusIntersecting;
}
for (var p = penaltyObjects.length - 1; p >= 0; p--) {
var penaltyObj = penaltyObjects[p];
if (penaltyObj.y > 2732) {
penaltyObj.destroy();
penaltyObjects.splice(p, 1);
continue;
}
var penaltyLastIntersecting = penaltyObj.lastWasIntersecting === undefined ? false : penaltyObj.lastWasIntersecting;
var currentPenaltyIntersecting = penaltyObj.intersects(ball);
if (!penaltyLastIntersecting && currentPenaltyIntersecting) {
var finalScore = LK.getScore();
if (leaderboardManager.isTopScore(finalScore)) {
showLeaderboardPrompt(finalScore);
return;
}
LK.showGameOver();
return;
}
penaltyObj.lastWasIntersecting = currentPenaltyIntersecting;
}
ballLastY = ball.y;
};
function showLeaderboardPrompt(finalScore) {
var leaderboardContainer = new Container();
leaderboardContainer.x = 1024;
leaderboardContainer.y = 1366;
var background = LK.getAsset('penalty', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 15,
scaleY: 12
});
background.tint = 0x1a1a2e;
background.alpha = 0.95;
leaderboardContainer.addChild(background);
var titleTxt = new Text2('YOU ARE IN TOP 10!', {
size: 80,
fill: 0xFFFFFF
});
titleTxt.anchor.set(0.5, 0.5);
titleTxt.y = -400;
leaderboardContainer.addChild(titleTxt);
var scoreLabelTxt = new Text2('Score: ' + finalScore, {
size: 60,
fill: 0x00FF00
});
scoreLabelTxt.anchor.set(0.5, 0.5);
scoreLabelTxt.y = -250;
leaderboardContainer.addChild(scoreLabelTxt);
var nameLabelTxt = new Text2('Enter Your Name:', {
size: 50,
fill: 0xFFFFFF
});
nameLabelTxt.anchor.set(0.5, 0.5);
nameLabelTxt.y = -100;
leaderboardContainer.addChild(nameLabelTxt);
var nameInputBox = LK.getAsset('bonusSmall', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 1.5
});
nameInputBox.y = 50;
nameInputBox.tint = 0xFFFFFF;
leaderboardContainer.addChild(nameInputBox);
var leaderboardTitleTxt = new Text2('TOP 10 SCORES', {
size: 55,
fill: 0xFFD700
});
leaderboardTitleTxt.anchor.set(0.5, 0.5);
leaderboardTitleTxt.y = 200;
leaderboardContainer.addChild(leaderboardTitleTxt);
var entries = leaderboardManager.getLeaderboard();
var startY = 300;
for (var i = 0; i < Math.min(entries.length, 10); i++) {
var entryTxt = new Text2(i + 1 + '. ' + entries[i].name + ' - ' + entries[i].score, {
size: 40,
fill: 0xFFFFFF
});
entryTxt.anchor.set(0.5, 0);
entryTxt.y = startY + i * 60;
leaderboardContainer.addChild(entryTxt);
}
game.addChild(leaderboardContainer);
showingLeaderboard = true;
var nameValue = '';
function submitName() {
var cleanedName = nameValue.trim();
if (cleanedName.length === 0) {
cleanedName = 'Player';
}
leaderboardManager.addScore(cleanedName, finalScore);
leaderboardContainer.destroy();
showingLeaderboard = false;
LK.showGameOver();
}
var oldGameMove = game.move;
game.move = function (x, y, obj) {
if (!showingLeaderboard) {
if (oldGameMove) {
oldGameMove(x, y, obj);
}
}
};
var oldGameDown = game.down;
game.down = function (x, y, obj) {
if (!showingLeaderboard) {
if (oldGameDown) {
oldGameDown(x, y, obj);
}
}
};
} ===================================================================
--- original.js
+++ change.js
@@ -1,8 +1,11 @@
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1", {
+ leaderboard: {}
+});
/****
* Classes
****/
@@ -110,23 +113,75 @@
/****
* Game Code
****/
+var LeaderboardManager = function LeaderboardManager() {
+ var self = {};
+ self.addScore = function (playerName, score) {
+ var leaderboard = storage.leaderboard || {};
+ leaderboard[playerName] = Math.max(leaderboard[playerName] || 0, score);
+ var entries = [];
+ for (var key in leaderboard) {
+ if (leaderboard.hasOwnProperty(key)) {
+ entries.push({
+ name: key,
+ score: leaderboard[key]
+ });
+ }
+ }
+ entries.sort(function (a, b) {
+ return b.score - a.score;
+ });
+ if (entries.length > 10) {
+ entries = entries.slice(0, 10);
+ }
+ var newLeaderboard = {};
+ for (var i = 0; i < entries.length; i++) {
+ newLeaderboard[entries[i].name] = entries[i].score;
+ }
+ storage.leaderboard = newLeaderboard;
+ return entries;
+ };
+ self.getLeaderboard = function () {
+ var leaderboard = storage.leaderboard || {};
+ var entries = [];
+ for (var key in leaderboard) {
+ if (leaderboard.hasOwnProperty(key)) {
+ entries.push({
+ name: key,
+ score: leaderboard[key]
+ });
+ }
+ }
+ entries.sort(function (a, b) {
+ return b.score - a.score;
+ });
+ return entries;
+ };
+ self.isTopScore = function (score) {
+ var entries = self.getLeaderboard();
+ return entries.length < 10 || score > entries[entries.length - 1].score;
+ };
+ return self;
+};
var paddle = game.addChild(new Paddle());
var ball = game.addChild(new Ball());
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
+var leaderboardManager = new LeaderboardManager();
var dragNode = null;
var ballLastIntersecting = false;
var ballLastY = ball.y;
var ballLastWasIntersecting = false;
var bonusObjects = [];
var penaltyObjects = [];
var spawnCounter = 0;
+var playerNameInput = null;
+var showingLeaderboard = false;
function handleMove(x, y, obj) {
paddle.x = x;
paddle.y = y;
if (paddle.x < 75) {
@@ -228,11 +283,107 @@
}
var penaltyLastIntersecting = penaltyObj.lastWasIntersecting === undefined ? false : penaltyObj.lastWasIntersecting;
var currentPenaltyIntersecting = penaltyObj.intersects(ball);
if (!penaltyLastIntersecting && currentPenaltyIntersecting) {
+ var finalScore = LK.getScore();
+ if (leaderboardManager.isTopScore(finalScore)) {
+ showLeaderboardPrompt(finalScore);
+ return;
+ }
LK.showGameOver();
return;
}
penaltyObj.lastWasIntersecting = currentPenaltyIntersecting;
}
ballLastY = ball.y;
-};
\ No newline at end of file
+};
+function showLeaderboardPrompt(finalScore) {
+ var leaderboardContainer = new Container();
+ leaderboardContainer.x = 1024;
+ leaderboardContainer.y = 1366;
+ var background = LK.getAsset('penalty', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 15,
+ scaleY: 12
+ });
+ background.tint = 0x1a1a2e;
+ background.alpha = 0.95;
+ leaderboardContainer.addChild(background);
+ var titleTxt = new Text2('YOU ARE IN TOP 10!', {
+ size: 80,
+ fill: 0xFFFFFF
+ });
+ titleTxt.anchor.set(0.5, 0.5);
+ titleTxt.y = -400;
+ leaderboardContainer.addChild(titleTxt);
+ var scoreLabelTxt = new Text2('Score: ' + finalScore, {
+ size: 60,
+ fill: 0x00FF00
+ });
+ scoreLabelTxt.anchor.set(0.5, 0.5);
+ scoreLabelTxt.y = -250;
+ leaderboardContainer.addChild(scoreLabelTxt);
+ var nameLabelTxt = new Text2('Enter Your Name:', {
+ size: 50,
+ fill: 0xFFFFFF
+ });
+ nameLabelTxt.anchor.set(0.5, 0.5);
+ nameLabelTxt.y = -100;
+ leaderboardContainer.addChild(nameLabelTxt);
+ var nameInputBox = LK.getAsset('bonusSmall', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ scaleX: 3,
+ scaleY: 1.5
+ });
+ nameInputBox.y = 50;
+ nameInputBox.tint = 0xFFFFFF;
+ leaderboardContainer.addChild(nameInputBox);
+ var leaderboardTitleTxt = new Text2('TOP 10 SCORES', {
+ size: 55,
+ fill: 0xFFD700
+ });
+ leaderboardTitleTxt.anchor.set(0.5, 0.5);
+ leaderboardTitleTxt.y = 200;
+ leaderboardContainer.addChild(leaderboardTitleTxt);
+ var entries = leaderboardManager.getLeaderboard();
+ var startY = 300;
+ for (var i = 0; i < Math.min(entries.length, 10); i++) {
+ var entryTxt = new Text2(i + 1 + '. ' + entries[i].name + ' - ' + entries[i].score, {
+ size: 40,
+ fill: 0xFFFFFF
+ });
+ entryTxt.anchor.set(0.5, 0);
+ entryTxt.y = startY + i * 60;
+ leaderboardContainer.addChild(entryTxt);
+ }
+ game.addChild(leaderboardContainer);
+ showingLeaderboard = true;
+ var nameValue = '';
+ function submitName() {
+ var cleanedName = nameValue.trim();
+ if (cleanedName.length === 0) {
+ cleanedName = 'Player';
+ }
+ leaderboardManager.addScore(cleanedName, finalScore);
+ leaderboardContainer.destroy();
+ showingLeaderboard = false;
+ LK.showGameOver();
+ }
+ var oldGameMove = game.move;
+ game.move = function (x, y, obj) {
+ if (!showingLeaderboard) {
+ if (oldGameMove) {
+ oldGameMove(x, y, obj);
+ }
+ }
+ };
+ var oldGameDown = game.down;
+ game.down = function (x, y, obj) {
+ if (!showingLeaderboard) {
+ if (oldGameDown) {
+ oldGameDown(x, y, obj);
+ }
+ }
+ };
+}
\ No newline at end of file