User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'anchor')' in this line: 'messageText.anchor.set(.5, .5);' Line Number: 352
Code edit (1 edits merged)
Please save this source code
User prompt
add counter to track between games, every unique destroy waty of the box. it should just be a counter and add 1 when a new destroy method happened.
Code edit (1 edits merged)
Please save this source code
User prompt
create a global variable that adds 1 to the count every time the game is rest.
User prompt
Fix Bug: 'ReferenceError: globalScoreDisplay is not defined' in this line: 'globalScoreDisplay.updateScore(globalScore);' Line Number: 190
User prompt
Fix Bug: 'ReferenceError: globalScoreDisplay is not defined' in this line: 'globalScoreDisplay.updateScore(globalScore);' Line Number: 190
User prompt
Fix Bug: 'ReferenceError: globalScoreDisplay is not defined' in this line: 'globalScoreDisplay.updateScore(globalScore);' Line Number: 190
User prompt
Fix Bug: 'Uncaught ReferenceError: globalScore is not defined' in this line: 'var scoreText = new Text2(globalScore.toString(), {' Line Number: 3
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'updateScore')' in this line: 'self.parent.globalScoreDisplay.updateScore(globalScore);' Line Number: 101
User prompt
Fix Bug: 'ReferenceError: globalScoreDisplay is not defined' in this line: 'globalScoreDisplay.updateScore(globalScore);' Line Number: 190
User prompt
show global score 300 pixels on top of deadoralive
User prompt
add a global score that will be persisten even after game reset
User prompt
show global score in the top of the screen
User prompt
add a global score count that will not reset when the game rests.
User prompt
add a counter to count axe intersects with box. only allow to intersect once per game.
User prompt
why is game restarted multiple times after axe intersects with box?
Code edit (4 edits merged)
Please save this source code
User prompt
console log when game is restarted
Code edit (1 edits merged)
Please save this source code
User prompt
when box is sliced, top part should move towards the upper right corner y bottom part to the bottom left.
Code edit (6 edits merged)
Please save this source code
User prompt
instead of game over, reste game after the box is destroyed.
Code edit (5 edits merged)
Please save this source code
User prompt
Fix Bug: 'Timeout.tick error: self.addChild is not a function' in this line: 'self.addChild(boxGraphics);' Line Number: 162
var BoxPiece = Container.expand(function () {
var self = Container.call(this);
var pieceGraphics = self.createAsset('boxPiece', 'Box Piece Graphics', 0.5, 0.5);
self.velocityX = (Math.random() - 0.5) * 20;
self.velocityY = (Math.random() - 0.5) * 20;
LK.on('tick', function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.rotation += 0.1;
});
});
var BottomBoxPiece = Container.expand(function () {
var self = Container.call(this);
var bottomBoxPieceGraphics = self.createAsset('bottomBoxPiece', 'Bottom Box Piece Graphics', 0.5, 0.5);
self.velocityX = (Math.random() - 0.5) * 60;
self.velocityY = (Math.random() - 0.5) * 60;
LK.on('tick', function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.rotation += 0.1;
});
});
var Shadow = Container.expand(function () {
var self = Container.call(this);
var shadowGraphics = self.createAsset('shadow', 'Shadow Graphics', 0.5, 0.5);
});
var TopBoxPiece = Container.expand(function () {
var self = Container.call(this);
var topBoxPieceGraphics = self.createAsset('topBoxPiece', 'Top Box Piece Graphics', 0.5, 0.5);
self.velocityX = (Math.random() - 0.5) * 60;
self.velocityY = (Math.random() - 0.5) * 60;
LK.on('tick', function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.rotation += 0.1;
});
});
var Cap = Container.expand(function () {
var self = Container.call(this);
var capGraphics = self.createAsset('cap', 'Cap Graphics', 0.5, 0.5);
var startY;
var isSwipingUp = false;
self.on('down', function (obj) {
startY = obj.event.getLocalPosition(self.parent).y;
});
self.on('move', function (obj) {
var currentY = self.parent ? obj.event.getLocalPosition(self.parent).y : 0;
if (startY - currentY > 50) {
isSwipingUp = true;
}
});
self.on('up', function (obj) {
if (isSwipingUp && self.parent) {
console.log('Cap swiped up');
self.emit('swipeUp');
self.moveUp = true;
self.rotateAndMoveUp = true;
isSwipingUp = false;
}
});
LK.on('tick', function () {
if (self.rotateAndMoveUp) {
self.y -= 10;
self.x -= 10;
self.rotation -= 0.05;
if (self.y <= self.startY - 400) {
self.rotateAndMoveUp = false;
}
}
});
});
var RedButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('redbutton', 'Red Button Graphics', 0.5, 0.5);
});
var AxeLayers = Container.expand(function () {
var self = Container.call(this);
var lastTapTime = 0;
self.on('down', function (obj) {
var currentTime = Date.now();
var tapLength = currentTime - lastTapTime;
if (tapLength < 500 && tapLength > 0) {
if (self.children.length > 0) {
self.removeChildAt(self.children.length - 1);
}
if (self.children.length === 0) {
self.destroy();
}
}
lastTapTime = currentTime;
});
var layer0 = self.createAsset('layer0', 'Axe Layer 0 Graphics', 0.5, 0.5);
layer0.x -= 250;
layer0.y -= 250;
var layer1 = self.createAsset('layer1', 'Axe Layer 1 Graphics', 0.5, 0.5);
layer1.x -= 200;
layer1.y -= 200;
var layer2 = self.createAsset('layer2', 'Axe Layer 2 Graphics', 0.5, 0.5);
layer2.x -= 200;
layer2.y -= 200;
var layer3 = self.createAsset('layer3', 'Axe Layer 3 Graphics', 0.5, 0.5);
layer3.x -= 200;
layer3.y -= 200;
var layer4 = self.createAsset('layer4', 'Axe Layer 4 Graphics', 0.5, 0.5);
layer4.x -= 200;
layer4.y -= 200;
var layer5 = self.createAsset('layer5', 'Axe Layer 5 Graphics', 0.5, 0.5);
layer5.x -= 200;
layer5.y -= 200;
});
var Box = Container.expand(function () {
var self = Container.call(this);
Box.prototype.createTopAndBottomPieces = function () {
var topPiece = new TopBoxPiece();
topPiece.x = this.x;
topPiece.y = this.y - this.height / 4;
topPiece.width = this.width;
topPiece.height = this.height / 2;
var bottomPiece = new BottomBoxPiece();
bottomPiece.x = this.x;
bottomPiece.y = this.y + this.height / 4;
bottomPiece.width = this.width;
bottomPiece.height = this.height / 2;
if (this.parent) {
this.parent.addChild(topPiece);
this.parent.addChild(bottomPiece);
}
};
self.spinAndShrink = function () {
var frames = 50;
var frameCounter = 0;
var animationTick = function () {
self.scale.x -= 1 / frames;
self.scale.y -= 1 / frames;
self.rotation += 0.1;
frameCounter++;
if (frameCounter >= frames) {
LK.off('tick', animationTick);
self.destroy();
}
};
LK.on('tick', animationTick);
};
self.explode = function () {
for (var i = 0; i < 20; i++) {
var piece = new BoxPiece();
piece.x = self.x;
piece.y = self.y;
if (self.parent) {
self.parent.addChild(piece);
}
}
self.destroy();
};
LK.on('tick', function () {
if (self.velocityY !== 0) {
self.y += self.velocityY;
}
});
self.velocityY = 0;
var boxGraphics = LK.getAsset('box', 'Box Graphics', 0.5, 0.5);
self.addChild(boxGraphics);
self.enlargeBox = function () {
var frames = 0;
var animationTick = function () {
self.scale.x += 0.01;
self.scale.y += 0.01;
frames++;
if (self.width >= LK.stage.width || self.height >= LK.stage.height) {
LK.off('tick', animationTick);
self.destroy();
}
};
LK.on('tick', animationTick);
};
var lastTapTime = 0;
var tapCount = 0;
self.isDoubleClicked = false;
var startY;
var isSwipingUp = false;
self.on('down', function (obj) {
var currentTime = Date.now();
if (currentTime - lastTapTime < 300) {
tapCount++;
if (tapCount === 2) {
console.log('Box double clicked');
self.isDoubleClicked = true;
tapCount = 0;
}
} else {
tapCount = 1;
}
lastTapTime = currentTime;
this.startPos = obj.event.getLocalPosition(self.parent);
startY = this.startPos.y;
self.swipeStartX = this.startPos.x;
self.swipeEndX = null;
self.swipeDirection = null;
});
self.on('move', function (obj) {
var currentY = self.parent ? obj.event.getLocalPosition(self.parent).y : 0;
var currentX = self.parent ? obj.event.getLocalPosition(self.parent).x : 0;
if (startY - currentY > 100) {
isSwipingUp = true;
}
if (self.swipeStartX != null) {
if (self.swipeDirection === null) {
self.swipeEndX = currentX;
}
}
});
self.on('up', function (obj) {
if (isSwipingUp) {
console.log('Box swiped up');
self.emit('swipeUp');
self.velocityY = -30;
isSwipingUp = false;
}
if (self.swipeEndX != null && Math.abs(self.swipeEndX - self.swipeStartX) > self.width / 2) {
console.log('Box sliced');
self.emit('slice');
self.createTopAndBottomPieces();
self.isSliced = true;
self.destroy();
}
self.swipeStartX = null;
self.swipeEndX = null;
self.swipeDirection = null;
});
});
var Axe = Container.expand(function () {
var self = Container.call(this);
var axeGraphics = self.createAsset('axe', 'Axe Graphics', 1, 1);
self.rotationSpeed = 0.05;
var dragNode = null;
var startDragPos = null;
self.on('down', function (obj) {
dragNode = self;
startDragPos = obj.event.getLocalPosition(self.parent);
});
self.on('move', function (obj) {
if (dragNode) {
var currentPos = self.parent ? obj.event.getLocalPosition(self.parent) : {
x: 0.5,
y: 0.5
};
dragNode.x = currentPos.x + 200;
dragNode.y = currentPos.y + 200;
}
});
self.on('up', function (obj) {
dragNode = null;
});
var maxRotation = Math.PI / 4;
var rotationDirection = 1;
LK.on('tick', function () {
self.rotation += rotationDirection * self.rotationSpeed;
if (Math.abs(self.rotation) >= maxRotation) {
rotationDirection *= -1;
}
});
});
var DeadoraliveMessage = Container.expand(function () {
var self = Container.call(this);
var messageGraphics = self.createAsset('deadoralive', 'Deadoralive Graphics', 0.5, 0.5);
var startY;
var targetY;
var isSwiping = false;
self.on('down', function (obj) {
startY = obj.event.getLocalPosition(self.parent).y;
targetY = self.y - 300;
});
self.on('move', function (obj) {
var currentY = obj.event.getLocalPosition(LK.stageContainer).y;
if (startY - currentY > 20) {
isSwiping = true;
}
});
self.on('up', function (obj) {
if (isSwiping) {
LK.on('tick', function () {
if (self.y > targetY) {
self.y -= 5;
if (self.y < targetY) {
self.y = targetY;
LK.off('tick');
}
}
});
}
isSwiping = false;
});
});
var DeadMessage = Container.expand(function () {
var self = Container.call(this);
var messageGraphics = self.createAsset('deadmessage', 'Dead Graphics', 0.5, 0.5);
});
var AliveMessage = Container.expand(function () {
var self = Container.call(this);
var messageGraphics = self.createAsset('alivemessage', 'Alive Graphics', 0.5, 0.5);
});
var Kitty = Container.expand(function () {
var self = Container.call(this);
self.isDead = false;
self.alpha = 1;
var ghostlyMovement = function () {
self.y += Math.sin(LK.ticks / 5) * 2;
};
LK.on('tick', ghostlyMovement);
var kitty = self.createAsset('alive', 'Kitty Graphics', 0.5, 0.5);
});
var DeadKitty = Container.expand(function () {
var self = Container.call(this);
var self = new Container();
self.alpha = 0.5;
var ghostlyMovement = function () {
self.y += Math.sin(LK.ticks / 10) * 0.5;
};
LK.on('tick', ghostlyMovement);
var deadkitty = self.createAsset('dead', 'Dead Kitty Graphics', 0.5, 0.5);
});
var Lid = Container.expand(function () {
var self = Container.call(this);
var lidGraphics = self.createAsset('lid', 'Lid Graphics', 0.5, 0.5);
var dragNode = null;
var startDragPos = null;
self.on('down', function (obj) {
dragNode = self;
startDragPos = obj.event.getLocalPosition(self.parent);
});
self.on('move', function (obj) {
if (dragNode && self.parent) {
var currentPos = self.parent ? obj.event.getLocalPosition(self.parent) : {
x: 0.5,
y: 0.5
};
dragNode.x = currentPos.x - lidGraphics.width / 2;
dragNode.y = currentPos.y - lidGraphics.height / 2;
}
});
self.on('up', function (obj) {
dragNode = null;
});
});
var Game = Container.expand(function () {
var self = Container.call(this);
Game.prototype.resetGame = function () {
console.log('Game reset to starting position.');
var box = Box();
box.x = LK.stage.width / 2;
box.y = LK.stage.height / 2;
self.addChild(box);
deadMessage.visible = false;
aliveMessage.visible = false;
deadoralivemessage.x = LK.stage.width / 2;
deadoralivemessage.y = 600;
redbutton.isTouched = false;
box.lastTapTime = 0;
box.tapCount = 0;
};
var axe = self.addChild(new Axe());
var axeLayers = self.addChild(new AxeLayers());
axeLayers.x = axe.x = LK.stage.width - axe.width / 2 - 100 + 200;
axeLayers.y = axe.y = LK.stage.height - axe.height / 2 - 100 + 200;
axe.zIndex = -1;
var messageText = new Text2('(Open the box to find out...)', {
size: 60,
fill: '#ffffff'
});
messageText.anchor.set(.5, .5);
messageText.y += 1500;
LK.gui.topCenter.addChild(messageText);
var kitty = self.addChild(new Kitty());
self.isDead = Math.random() < 0.5;
kitty.x = LK.stage.width / 2;
kitty.y = LK.stage.height / 2 - 100;
var shadow = self.addChild(new Shadow());
shadow.x = kitty.x;
shadow.y = kitty.y + 250;
var deadkitty = self.addChild(new DeadKitty());
deadkitty.x = LK.stage.width / 2;
deadkitty.y = LK.stage.height / 2 - 100;
var cap = self.addChild(new Cap());
cap.x = 300;
cap.y = 2400;
var lid = self.addChild(new Lid());
lid.x = cap.x;
lid.y = cap.y;
var redbutton = self.addChild(new RedButton());
redbutton.x = LK.stage.width / 2;
redbutton.y = 600;
redbutton.on('down', function () {
redbutton.isTouched = true;
});
var deadoralivemessage = self.addChild(new DeadoraliveMessage());
deadoralivemessage.x = LK.stage.width / 2;
deadoralivemessage.y = 600;
var deadMessage = self.addChild(new DeadMessage());
deadMessage.x = LK.stage.width / 2;
deadMessage.y = LK.stage.height - 700 - deadMessage.height / 2;
deadMessage.visible = false;
var aliveMessage = self.addChild(new AliveMessage());
aliveMessage.x = LK.stage.width / 2;
aliveMessage.y = LK.stage.height - 700 - aliveMessage.height / 2;
aliveMessage.visible = false;
var box = self.addChild(new Box());
box.x = LK.stage.width / 2;
box.y = LK.stage.height / 2;
if (self.isDead) {
kitty.visible = false;
deadkitty.visible = true;
} else {
kitty.visible = true;
deadkitty.visible = false;
}
LK.on('tick', function () {
if (redbutton.isTouched) {
if (box) {
box.enlargeBox();
box = null;
LK.setTimeout(function () {
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
}, 2000);
LK.setTimeout(function () {
messageText.setText('(BOOOM! Nice one...still more to find...)');
}, 1500);
LK.setTimeout(function () {
self.resetGame();
}, 5000);
}
redbutton.isTouched = false;
}
if (axe.intersects(box)) {
messageText.setText('(Chop chop! Is there any other way left?)');
box.explode();
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
LK.setTimeout(function () {
self.resetGame();
}, 3000);
}
if (box && box.isDoubleClicked) {
messageText.setText('(Double click...how original! Try a different way!)');
LK.setTimeout(function () {
self.resetGame();
}, 3000);
box.destroy();
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
}
if (box && cap.x < 1) {
box.spinAndShrink();
messageText.setText('(Down the drain! I bet you can find another way...)');
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
LK.setTimeout(function () {
self.resetGame();
}, 3000);
}
if (box && (box.y + box.height < 0 || box.y > LK.stage.height || cap.y + cap.height < 0 || cap.y > LK.stage.height || cap.x < 1)) {
messageText.setText('(Swipe up, classic...Try again!)');
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
LK.setTimeout(function () {
self.resetGame();
}, 3000);
}
if (box && box.isSliced) {
messageText.setText('(Clean cut! Try something else...)');
LK.setTimeout(function () {
self.resetGame();
}, 3000);
box.destroy();
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
}
});
});
8-bit. cartoon. red button. do not touch! Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit. cartoon. black tub stopper with chain. in game asset.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit. cartoon. axe. in game asset. no shadow.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Break in case of emergency square. Ax drawing inside. simple. 8-bit. cartoon. blackand white.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Delete