Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'Uncaught ReferenceError: ScoreMessage is not defined' in this line: 'ScoreMessage.y += 200;' Line Number: 373
Code edit (1 edits merged)
Please save this source code
User prompt
reset scoremessage after every game start
User prompt
make sure the previous scoremessage is deleted before the new one is rendered
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'getItem')' in this line: 'var lastScoreMessage = localStorage.getItem('lastScoreMessage') || '0 / 6';' Line Number: 367
User prompt
every time the game is restaarted make sur the last scoremessage is shown
Code edit (9 edits merged)
Please save this source code
User prompt
add a score message on the top of the screen. the score will be the sum of the 6 different gamesolves. only when they are true.
User prompt
add a score message on the top of the screen. the score will be the sum of the 6 different gamesolves. only when they are true. this should not interefere with the current bottom message in the game
User prompt
Fix Bug: 'TypeError: this.updateMessageText is not a function' in this line: 'this.updateMessageText('(Double click...how original! Try a different way!)');' Line Number: 477
User prompt
Fix Bug: 'ReferenceError: messageText is not defined' in this line: 'messageText.setText('(Double click...how original! Try a different way!)');' Line Number: 468
User prompt
add a score message on the top of the screen. the score will be the sum of the 6 different gamesolves. only when they are true.
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'Uncaught ReferenceError: messageText is not defined' in this line: 'messageText.anchor.set(.5, .5);' Line Number: 348
Code edit (1 edits merged)
Please save this source code
User prompt
add a new text display to show gamerestcount in the top center of the screen
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
var GlobalScoreDisplay = Container.expand(function () {
var self = Container.call(this);
var scoreText = new Text2(globalScore.toString(), {
size: 60,
fill: '#ffffff'
});
scoreText.anchor.set(0.5, 0.5);
self.addChild(scoreText);
self.updateScore = function (newScore) {
scoreText.setText(newScore.toString());
};
});
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) {
globalScore += 200;
LK.setScore(globalScore);
this.parent.globalScoreDisplay.updateScore(this.parent.globalScore);
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);
}
}
globalScore += 50;
LK.setScore(globalScore);
this.parent.globalScoreDisplay.updateScore(globalScore);
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);
globalScore += 100;
LK.setScore(globalScore);
globalScoreDisplay.updateScore(globalScore);
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;
globalScore += 150;
LK.setScore(globalScore);
globalScoreDisplay.updateScore(globalScore);
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 globalScore = 0;
this.globalScore = 0;
this.globalScoreDisplay = new GlobalScoreDisplay();
var Game = Container.expand(function () {
var self = Container.call(this);
self.axeIntersected = false;
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 globalScoreDisplay = self.addChild(new GlobalScoreDisplay());
globalScoreDisplay.x = LK.stage.width / 2;
globalScoreDisplay.y = deadoralivemessage.y - 300;
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.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 5000);
}
redbutton.isTouched = false;
}
if (axe.intersects(box) && !self.axeIntersected) {
self.axeIntersected = true;
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.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 3000);
}
if (box && box.isDoubleClicked) {
messageText.setText('(Double click...how original! Try a different way!)');
LK.setTimeout(function () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 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 () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 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 () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 3000);
}
if (box && box.isSliced) {
messageText.setText('(Clean cut! Try something else...)');
LK.setTimeout(function () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 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