Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Please fix the bug: 'LK.Graphics is not a constructor' in or related to this line: 'var ropeGraphics = new LK.Graphics();' Line Number: 111
Code edit (2 edits merged)
Please save this source code
User prompt
Please fix the bug: 'LK.Graphics is not a constructor' in or related to this line: 'var ropeGraphics = new LK.Graphics();' Line Number: 107
Code edit (3 edits merged)
Please save this source code
User prompt
Plugins failed to load. Please try again and if the problem persists, please contact technical support i got this error
User prompt
var tween = LK.import("@upit/tween.v1"); this is the problem ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
still have problem
User prompt
fix the error please
Code edit (1 edits merged)
Please save this source code
User prompt
Crane Balance Master
Initial prompt
I want to create a balancing game with square containers dropped from a crane. The surroundings can be a construction site.
/**** * Classes ****/ var Crane = Container.expand(function () { var self = Container.call(this); var craneGraphics = self.attachAsset('crane', { anchorX: 0.5, anchorY: 0.5 }); // Vinç sabit kalacağı için update fonksiyonuna gerek yok self.update = function () {}; return self; }); var Hook = Container.expand(function () { var self = Container.call(this); var hookGraphics = self.attachAsset('hook', { anchorX: 0.5, anchorY: 0.5 }); var ropeGraphics = self.attachAsset('rope', { anchorX: 0.5, anchorY: 0 }); ropeGraphics.visible = true; // İp varsayılan olarak görünür self.hasContainer = false; self.attachedContainer = null; self.direction = 1; // Kanca hareket yönü self.speed = 2; // Kanca hareket hızı self.timer = 0; // Sallanma için zamanlayıcı self.update = function () { // Kanca sağa-sola hareket eder self.x += self.direction * self.speed; // Hareket sınırları if (self.x <= 200) { self.direction = 1; } else if (self.x >= 1848) { self.direction = -1; } // Sallanma efekti için zamanlayıcıyı artır self.timer += 0.1; // İp görünümünü vinç ile kanca arasında güncelle var ropeLength = Math.abs(self.y - crane.y); // Vinç ile kanca arasındaki y mesafesi ropeGraphics.height = ropeLength; // İpin uzunluğu // Sallanma efekti: sinüs dalgası ile x ofseti var swayAmplitude = 10; // Sallanma genliği (piksel) var swayFrequency = 0.5; // Sallanma frekansı var swayOffset = Math.sin(self.timer * swayFrequency) * swayAmplitude; ropeGraphics.x = crane.x - self.x + swayOffset; // İpin x ofseti + sallanma ropeGraphics.y = ropeLength / 12; // İpin y pozisyonu // Konteyner bağlıysa, konteyneri kancaya göre güncelle if (self.hasContainer && self.attachedContainer) { self.attachedContainer.x = self.x; self.attachedContainer.y = self.y + 80; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var containers = []; var crane; var hook; var platform; var ground; var platformX = 2048 / 2; var platformY = 2732 - 300; var scoreText; var nextContainerTimer = 0; var gameSpeed = 1; ground = game.addChild(LK.getAsset('ground', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 - 50 })); platform = game.addChild(LK.getAsset('platform', { anchorX: 0.5, anchorY: 0.5, x: platformX, y: platformY })); crane = game.addChild(new Crane()); crane.x = 575; // Vinç ortada sabit crane.y = 1250; // Vinç y pozisyonu (önceki ayara göre) hook = game.addChild(new Hook()); hook.x = crane.x; // Kanca başlangıçta vinçle aynı x pozisyonunda hook.y = 500; // Kanca y pozisyonu (önceki ayara göre) scoreText = new Text2('Score: 0', { size: 80, fill: 0x000000 }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); function createNewContainer() { var newContainer = new GameContainer(); newContainer.x = hook.x; newContainer.y = hook.y + 80; newContainer.isAttached = true; containers.push(newContainer); game.addChild(newContainer); hook.hasContainer = true; hook.attachedContainer = newContainer; } function dropContainer() { if (hook.hasContainer && hook.attachedContainer) { hook.attachedContainer.isAttached = false; hook.attachedContainer.velocity.x = hook.direction * hook.speed * 0.5; // Kanca hızını kullan hook.attachedContainer.velocity.y = 2; hook.hasContainer = false; hook.attachedContainer = null; LK.getSound('drop').play(); LK.setScore(LK.getScore() + 10); scoreText.setText('Score: ' + LK.getScore()); nextContainerTimer = 120; if (LK.getScore() % 100 === 0) { hook.speed += 0.5; // Kanca hızını artır } } }
===================================================================
--- original.js
+++ change.js
@@ -6,92 +6,12 @@
var craneGraphics = self.attachAsset('crane', {
anchorX: 0.5,
anchorY: 0.5
});
- self.direction = 1;
- self.speed = 2;
- self.update = function () {
- self.x += self.direction * self.speed;
- if (self.x <= 200) {
- self.direction = 1;
- } else if (self.x >= 1848) {
- self.direction = -1;
- }
- };
+ // Vinç sabit kalacağı için update fonksiyonuna gerek yok
+ self.update = function () {};
return self;
});
-var GameContainer = Container.expand(function () {
- var self = Container.call(this);
- var containerGraphics = self.attachAsset('container', {
- anchorX: 0.5,
- anchorY: 0.5
- });
- self.velocity = {
- x: 0,
- y: 0
- };
- self.grounded = false;
- self.settled = false;
- self.settleTimer = 0;
- self.isAttached = true;
- self.intersects = function (other) {
- // Çarpışma mesafesini kutu boyutlarına tam uyumlu hale getir
- return Math.abs(self.x - other.x) < 100 && Math.abs(self.y - other.y) < 100;
- };
- self.update = function () {
- if (self.isAttached) {
- return;
- }
- if (!self.grounded) {
- self.velocity.y += 0.8;
- self.x += self.velocity.x;
- self.y += self.velocity.y;
- if (self.y >= platformY - 50) {
- var hitSomething = false;
- // Platformla çarpışma
- if (self.x >= platformX - 250 && self.x <= platformX + 250) {
- self.y = platformY - 50; // Platformun tam üstü
- hitSomething = true;
- }
- // Diğer kutularla çarpışma
- for (var i = 0; i < containers.length; i++) {
- var other = containers[i];
- if (other !== self && other.grounded && self.intersects(other)) {
- self.y = other.y - 100; // Alttaki kutunun tam üstü
- hitSomething = true;
- break;
- }
- }
- if (hitSomething) {
- self.grounded = true;
- self.velocity.y = 0;
- self.velocity.x *= 0.3;
- self.settleTimer = 60;
- LK.getSound('stack').play();
- // Hata ayıklama için konumları logla
- console.log("Kutu yerleşti: x=" + self.x + ", y=" + self.y);
- }
- }
- if (self.y > 2732 + 100) {
- self.destroy();
- containers.splice(containers.indexOf(self), 1);
- LK.showGameOver();
- }
- } else {
- if (self.settleTimer > 0) {
- self.settleTimer--;
- if (self.settleTimer <= 0) {
- self.settled = true;
- }
- }
- if (Math.abs(self.velocity.x) > 0.1) {
- self.x += self.velocity.x;
- self.velocity.x *= 0.95;
- }
- }
- };
- return self;
-});
var Hook = Container.expand(function () {
var self = Container.call(this);
var hookGraphics = self.attachAsset('hook', {
anchorX: 0.5,
@@ -100,23 +20,38 @@
var ropeGraphics = self.attachAsset('rope', {
anchorX: 0.5,
anchorY: 0
});
- ropeGraphics.visible = false;
+ ropeGraphics.visible = true; // İp varsayılan olarak görünür
self.hasContainer = false;
self.attachedContainer = null;
+ self.direction = 1; // Kanca hareket yönü
+ self.speed = 2; // Kanca hareket hızı
+ self.timer = 0; // Sallanma için zamanlayıcı
self.update = function () {
- self.x = crane.x;
+ // Kanca sağa-sola hareket eder
+ self.x += self.direction * self.speed;
+ // Hareket sınırları
+ if (self.x <= 200) {
+ self.direction = 1;
+ } else if (self.x >= 1848) {
+ self.direction = -1;
+ }
+ // Sallanma efekti için zamanlayıcıyı artır
+ self.timer += 0.1;
+ // İp görünümünü vinç ile kanca arasında güncelle
+ var ropeLength = Math.abs(self.y - crane.y); // Vinç ile kanca arasındaki y mesafesi
+ ropeGraphics.height = ropeLength; // İpin uzunluğu
+ // Sallanma efekti: sinüs dalgası ile x ofseti
+ var swayAmplitude = 10; // Sallanma genliği (piksel)
+ var swayFrequency = 0.5; // Sallanma frekansı
+ var swayOffset = Math.sin(self.timer * swayFrequency) * swayAmplitude;
+ ropeGraphics.x = crane.x - self.x + swayOffset; // İpin x ofseti + sallanma
+ ropeGraphics.y = ropeLength / 12; // İpin y pozisyonu
+ // Konteyner bağlıysa, konteyneri kancaya göre güncelle
if (self.hasContainer && self.attachedContainer) {
- ropeGraphics.visible = true;
- var ropeLength = Math.abs(self.attachedContainer.y - self.y);
- ropeGraphics.height = ropeLength;
- ropeGraphics.x = 0;
- ropeGraphics.y = ropeLength / 2;
self.attachedContainer.x = self.x;
self.attachedContainer.y = self.y + 80;
- } else {
- ropeGraphics.visible = false;
}
};
return self;
});
@@ -153,13 +88,13 @@
x: platformX,
y: platformY
}));
crane = game.addChild(new Crane());
-crane.x = 2048 / 2;
-crane.y = 200;
+crane.x = 575; // Vinç ortada sabit
+crane.y = 1250; // Vinç y pozisyonu (önceki ayara göre)
hook = game.addChild(new Hook());
-hook.x = crane.x;
-hook.y = 300;
+hook.x = crane.x; // Kanca başlangıçta vinçle aynı x pozisyonunda
+hook.y = 500; // Kanca y pozisyonu (önceki ayara göre)
scoreText = new Text2('Score: 0', {
size: 80,
fill: 0x000000
});
@@ -177,42 +112,17 @@
}
function dropContainer() {
if (hook.hasContainer && hook.attachedContainer) {
hook.attachedContainer.isAttached = false;
- hook.attachedContainer.velocity.x = crane.direction * crane.speed * 0.5;
+ hook.attachedContainer.velocity.x = hook.direction * hook.speed * 0.5; // Kanca hızını kullan
hook.attachedContainer.velocity.y = 2;
hook.hasContainer = false;
hook.attachedContainer = null;
LK.getSound('drop').play();
LK.setScore(LK.getScore() + 10);
scoreText.setText('Score: ' + LK.getScore());
nextContainerTimer = 120;
if (LK.getScore() % 100 === 0) {
- crane.speed += 0.5;
+ hook.speed += 0.5; // Kanca hızını artır
}
}
-}
-createNewContainer();
-game.down = function (x, y, obj) {
- dropContainer();
-};
-game.update = function () {
- if (nextContainerTimer > 0) {
- nextContainerTimer--;
- if (nextContainerTimer <= 0 && !hook.hasContainer) {
- createNewContainer();
- }
- }
- for (var i = containers.length - 1; i >= 0; i--) {
- var container = containers[i];
- if (container.grounded && (container.x < platformX - 250 || container.x > platformX + 250)) {
- LK.effects.flashScreen(0xff0000, 500);
- LK.setTimeout(function () {
- LK.showGameOver();
- }, 500);
- break;
- }
- }
- if (LK.getScore() >= 500) {
- LK.showYouWin();
- }
-};
\ No newline at end of file
+}
\ No newline at end of file