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
User prompt
Fix Bug: 'Timeout.tick error: self.createAsset is not a function' in this line: 'var boxGraphics = self.createAsset('box', 'Box Graphics', 0.5, 0.5);' Line Number: 161
Code edit (1 edits merged)
Please save this source code
User prompt
in reset game, add respawn of box
User prompt
respawn game on reset game
User prompt
after the box is destroyed, do not end game, but reset it to the starting position instead.
User prompt
When axe intersects with box, destroy axe after 3 seconds
User prompt
Box piece should be destroyes after 3 seconds
User prompt
Fix Bug: 'Timeout.tick error: Cannot set properties of undefined (setting 'visible')' in this line: 'this.deadMessage.visible = false;' Line Number: 351
User prompt
Reset game should hide alive or dead message
User prompt
Reset game should respawn the box
User prompt
After box is destroyes, inatead of game over, take the game back to the start point.
Code edit (15 edits merged)
Please save this source code
User prompt
Fix Bug: 'ReferenceError: currentX is not defined' in this line: 'self.swipeEndX = currentX > self.x + self.width / 2 ? currentX : null;' Line Number: 196
User prompt
update swipestarx and swipeendx. it should only check if shipestartx is on the left side of the box, and the swipednx is on the right side of the ebox.
Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'ReferenceError: BoxPiece is not defined' in this line: 'var piece = new BoxPiece();' Line Number: 135
User prompt
add two different assets for boxpiece
User prompt
Fix Bug: 'ReferenceError: BoxBottom is not defined' in this line: 'var bottomPiece = new BoxBottom();' Line Number: 101
User prompt
Fix Bug: 'ReferenceError: BoxTop is not defined' in this line: 'var topPiece = new BoxTop();' Line Number: 92
Code edit (6 edits merged)
Please save this source code
var Shadow = Container.expand(function () {
var self = Container.call(this);
var shadowGraphics = self.createAsset('shadow', 'Shadow Graphics', 0.5, 0.5);
});
var BoxPiece = Container.expand(function () {
var self = Container.call(this);
var boxPieceGraphics = 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 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 BoxTop();
topPiece.x = this.x;
topPiece.y = this.y - this.height / 4;
topPiece.width = this.width;
topPiece.height = this.height / 2;
var bottomPiece = new BoxBottom();
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 = 60;
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 = self.createAsset('box', 'Box Graphics', 0.5, 0.5);
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 > 50) {
isSwipingUp = true;
}
if (self.swipeStartX != null) {
if (self.swipeDirection === null) {
self.swipeDirection = currentX - self.swipeStartX > 0 ? 'right' : 'left';
} else if (self.swipeDirection === 'right' && currentX - self.swipeStartX < 0 || self.swipeDirection === 'left' && currentX - self.swipeStartX > 0) {
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.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);
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);
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('(Box time! Ready, set, open!)', {
size: 40,
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 () {
LK.showGameOver();
}, 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 () {
LK.showGameOver();
}, 3000);
}
if (box && box.isDoubleClicked) {
messageText.setText('(Double clicked...how original! You can do better...)');
LK.setTimeout(function () {
LK.showGameOver();
}, 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 it goes! I bet you can find another way...)');
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
LK.setTimeout(function () {
LK.showGameOver();
}, 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...Any other ideas?)');
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
LK.setTimeout(function () {
LK.showGameOver();
}, 3000);
}
});
});
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