User prompt
250 yap
User prompt
Üst blok konumunu biraz aşagı indir ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Üst blogu biraz aşagı indir ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
İpin uzunlugunu kısalt blok ve ip temas bölgesi ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
İp ve blok sallantısını saga ve sola dahada arttır ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
İpi boyutu üstteki blok kesişim alanı kadar ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Yukardaki ipi üst blok düzeyinde kısalt ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Çarpma fizikleri düşme fiziklerini düzelt ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Kırmızı blok aşagı düştükten sonra yeni bir blok yumutlanmalı ve döngü devam etmeli ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Kırmızı blok aşagı düşdügünde ipte yeni bir blok yumurtlasın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Düzelt ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Bloklar arası çarpışma düşme fiziklerini ekle dogal olmalı ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
İp sallantısı hiç durmasın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Üstteki ip ve blok sallantısını daha stilize et ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Yukardan düşen kırmızı blok alttakinin en az yarısını kaplamalı aksi halde kırmızı blok düşer ve oyuncu ölür ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Mavi blogun üzerine Yerleştirilen ikinci kızmızı bloktan sonra mavi blok aşagı kayar kırmızı bloklar gözükür sonra her yerleştirilen kırmızı blokta 1 blok aşagı kayar ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Mavi blogu ekran alt kısmına taşi
User prompt
Eger kırmızı blok mavi blogun üzerine denk gelmez ise oyuncu ölür
User prompt
Olmuyor
User prompt
Eger üsttki blok mavi blogun üzerine düşerse oyuncu 1 puan kazanır
User prompt
Oyuncu dokundugunda üstteki blok için ipe sabitlenme kodunu iptal et ve blok aşagıya düşsün ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Amacım yukardaki bloga dokundugumda blogun aşagı düşmesi ve eger alttaki mavi blogun üzerine denk gelirse oyuncu 1 puan kazanıcak ayarla ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Hayır olmadı ipe baglı blok yere düşecek
User prompt
Şimdi oyuncu ekrana dokundugunda üsteki blok ayrılıp yere düşücek eger alttaki mavi karenin üzerine gelirse 1 puan ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Dahada
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var StackedBlock = Container.expand(function () { var self = Container.call(this); var block = self.attachAsset('block', { anchorX: 0.5, anchorY: 0.5 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ // Game state var stackedBlocks = []; var gameHeight = 2732; var gameWidth = 2048; var groundLevel = gameHeight - 200; var stackHeight = 0; var gameActive = true; // Create foundation block var foundation = new StackedBlock(); foundation.x = gameWidth / 2; foundation.y = groundLevel; game.addChild(foundation); stackedBlocks.push(foundation); stackHeight = foundation.y; // Create rope hanging from top center var rope = LK.getAsset('rope', { anchorX: 0.5, anchorY: 0 }); rope.x = gameWidth / 2; rope.y = 0; game.addChild(rope); // Create swinging block at the end of rope var swingingBlock = LK.getAsset('swingingBlock', { anchorX: 0.5, anchorY: 0.5 }); swingingBlock.x = 0; swingingBlock.y = rope.height; rope.addChild(swingingBlock); // Start rope swinging animation function startRopeSwing() { // Swing right tween(rope, { rotation: 0.5 }, { duration: 1500, easing: tween.easeInOut, onFinish: function onFinish() { // Swing left tween(rope, { rotation: -0.5 }, { duration: 3000, easing: tween.easeInOut, onFinish: function onFinish() { // Swing back right and repeat tween(rope, { rotation: 0.5 }, { duration: 3000, easing: tween.easeInOut, onFinish: startRopeSwing }); } }); } }); } // Start the swinging motion startRopeSwing(); // Score display var scoreTxt = new Text2('Blocks: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Track falling blocks var fallingBlocks = []; var score = 0; // Touch event to drop block game.down = function (x, y, obj) { if (!gameActive || !swingingBlock.parent) return; // Get current world position of swinging block var globalPos = rope.toGlobal(swingingBlock.position); // Create independent falling block at current position var fallingBlock = LK.getAsset('swingingBlock', { anchorX: 0.5, anchorY: 0.5 }); fallingBlock.x = globalPos.x; fallingBlock.y = globalPos.y; fallingBlock.startY = globalPos.y; fallingBlock.lastY = globalPos.y; fallingBlock.velocity = 0; fallingBlock.hasScored = false; game.addChild(fallingBlock); fallingBlocks.push(fallingBlock); // Reset swinging block to start new swing swingingBlock.y = rope.height; }; // Update falling blocks game.update = function () { for (var i = fallingBlocks.length - 1; i >= 0; i--) { var block = fallingBlocks[i]; // Apply gravity physics block.velocity += 0.5; // Gravity acceleration block.y += block.velocity; // Check if block just landed on foundation (transition detection) var currentIntersecting = block.intersects(foundation); if (!block.hasScored && currentIntersecting && block.lastY < foundation.y - 60 && block.y >= foundation.y - 60) { // Score point when block lands on foundation score++; scoreTxt.setText('Blocks: ' + score); block.hasScored = true; // Flash effect when scoring LK.effects.flashObject(foundation, 0x00ff00, 500); } // Update last position for transition detection block.lastY = block.y; // Remove if fell off screen if (block.y > gameHeight + 200) { block.destroy(); fallingBlocks.splice(i, 1); } } }; ;
===================================================================
--- original.js
+++ change.js
@@ -98,48 +98,47 @@
var score = 0;
// Touch event to drop block
game.down = function (x, y, obj) {
if (!gameActive || !swingingBlock.parent) return;
- // Make the rope-attached block fall down by animating it
- tween(swingingBlock, {
- y: rope.height + 400 // Move block down while staying attached to rope
- }, {
- duration: 1000,
- easing: tween.easeIn,
- onFinish: function onFinish() {
- // Check if block landed on foundation
- var globalPos = rope.toGlobal(swingingBlock.position);
- var blockWorldX = globalPos.x;
- var blockWorldY = globalPos.y;
- // Check if block is close enough to foundation horizontally
- if (Math.abs(blockWorldX - foundation.x) < 120 && blockWorldY >= foundation.y - 120) {
- // Score point
- score++;
- scoreTxt.setText('Blocks: ' + score);
- }
- // Reset block position for next round
- swingingBlock.y = rope.height;
- }
+ // Get current world position of swinging block
+ var globalPos = rope.toGlobal(swingingBlock.position);
+ // Create independent falling block at current position
+ var fallingBlock = LK.getAsset('swingingBlock', {
+ anchorX: 0.5,
+ anchorY: 0.5
});
+ fallingBlock.x = globalPos.x;
+ fallingBlock.y = globalPos.y;
+ fallingBlock.startY = globalPos.y;
+ fallingBlock.lastY = globalPos.y;
+ fallingBlock.velocity = 0;
+ fallingBlock.hasScored = false;
+ game.addChild(fallingBlock);
+ fallingBlocks.push(fallingBlock);
+ // Reset swinging block to start new swing
+ swingingBlock.y = rope.height;
};
// Update falling blocks
game.update = function () {
for (var i = fallingBlocks.length - 1; i >= 0; i--) {
var block = fallingBlocks[i];
- // Apply gravity
- block.y += 8;
- // Check collision with foundation
- if (block.intersects(foundation) && block.y >= foundation.y - foundation.height / 2) {
- // Score point
+ // Apply gravity physics
+ block.velocity += 0.5; // Gravity acceleration
+ block.y += block.velocity;
+ // Check if block just landed on foundation (transition detection)
+ var currentIntersecting = block.intersects(foundation);
+ if (!block.hasScored && currentIntersecting && block.lastY < foundation.y - 60 && block.y >= foundation.y - 60) {
+ // Score point when block lands on foundation
score++;
scoreTxt.setText('Blocks: ' + score);
- // Remove falling block
- block.destroy();
- fallingBlocks.splice(i, 1);
- continue;
+ block.hasScored = true;
+ // Flash effect when scoring
+ LK.effects.flashObject(foundation, 0x00ff00, 500);
}
+ // Update last position for transition detection
+ block.lastY = block.y;
// Remove if fell off screen
- if (block.y > gameHeight + 100) {
+ if (block.y > gameHeight + 200) {
block.destroy();
fallingBlocks.splice(i, 1);
}
}