User prompt
make the backround white
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'stuck')' in or related to this line: 'if (knives[i].stuck && !knives[i].falling) {' Line Number: 164
User prompt
once 15 points are received remove all knifes and make target a little smaller
User prompt
once 15 knifes are in target remove knifes form target
User prompt
remove power ups.
User prompt
Please fix the bug: 'ReferenceError: powerUps is not defined' in or related to this line: 'for (var j = 0; j < powerUps.length; j++) {' Line Number: 172
User prompt
Add slow down power up on target every once in a while
User prompt
Migrate to the latest version of LK
Remix started
Copy Santa's Christmas Knife Throw!
/**** * Classes ****/ var Heart = Container.expand(function () { var self = Container.call(this); var heartGraphics = self.attachAsset('heart', { anchorX: 0.5, anchorY: 0.5 }); }); var Knife = Container.expand(function () { var self = Container.call(this); self.angleTo = function (other) { var dx = other.x - self.x; var dy = other.y - self.y; return Math.atan2(dy, dx); }; var knifeGraphics = self.attachAsset('knife', { anchorX: 0.5 }); self.speed = 30; self.stuck = false; self.falling = false; self.spinDirection = Math.random() < 0.5 ? -1 : 1; self._move_migrated = function () { if (!self.stuck && !self.falling) { self.y -= self.speed; } }; self.fall = function () { if (self.falling) { if (!self.fallInitiated) { knifeGraphics.anchor.x = .5; knifeGraphics.anchor.y = .5; self.x += knifeGraphics.width / 2; self.y += knifeGraphics.height / 2; self.fallInitiated = true; } self.y += self.speed; self.rotation += self.spinDirection * 0.1; } }; self.hit = function (knives) { for (var i = 0; i < knives.length; i++) { if (knives[i] !== self && knives[i].stuck) { var angleDiff = Math.abs(knives[i].hitAngle % (2 * Math.PI) - self.hitAngle % (2 * Math.PI)); if (angleDiff < Math.PI / 24) { return true; } } } return false; }; }); var Target = Container.expand(function () { var self = Container.call(this); var targetGraphics = self.attachAsset('target', { anchorX: 0.5, anchorY: 0.5 }); self.rotationSpeed = 0.01; self.rotation = 4 * Math.PI; self.rotate = function () { self.rotation += self.rotationSpeed; }; self.hit = function () { LK.effects.flashObject(self, 0x00ff00, 500); }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var background = game.attachAsset('background', {}); background.width = 2048; background.height = 2732; var knives = []; var targets = []; var score = 0; var lives = [new Heart(), new Heart(), new Heart(), new Heart(), new Heart()]; var scoreTxt = new Text2(score.toString(), { size: 150, fill: 0xFF0000, font: "'Comic Sans MS', cursive, sans-serif", stroke: 0xFFFFFF, strokeThickness: 6, dropShadow: true, dropShadowColor: 0x00FF00, dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6 }); scoreTxt.anchor.set(.5, 0); LK.gui.top.addChild(scoreTxt); for (var i = 0; i < lives.length; i++) { lives[i].x = 2048 - (i + 1) * 130 - 15; lives[i].y = 100 + 15; game.addChild(lives[i]); } var knife = game.addChild(new Knife()); knife.x = 2048 / 2; knife.y = 2732 - 200; var target = game.addChild(new Target()); target.x = 2048 / 2; target.y = 2732 / 2; game.on('down', function (x, y, obj) { var newKnife = new Knife(); newKnife.x = knife.x; newKnife.y = knife.y; knives.push(newKnife); game.addChild(newKnife); }); LK.on('tick', function () { target.rotate(); for (var i = 0; i < knives.length; i++) { knives[i]._move_migrated(); knives[i].fall(); } for (var i = 0; i < knives.length; i++) { if (Math.abs(knives[i].y - target.y) <= target.height / 2 && !knives[i].stuck) { knives[i].stuck = true; knives[i].hitAngle = target.rotation - Math.PI / 2; if (knives[i].hit(knives)) { knives[i].falling = true; var lostLife = lives.pop(); lostLife.destroy(); scoreTxt.setText(score.toString()); if (lives.length > 0) { LK.effects.flashScreen(0xff0000, 500); } } else { target.hit(); target.rotationSpeed += 0.005 / 3; score += 1; scoreTxt.setText(score.toString()); } } if (knives[i].stuck && !knives[i].falling) { knives[i].rotation = target.rotation - knives[i].hitAngle - Math.PI / 2; knives[i].x = target.x + Math.cos(target.rotation - knives[i].hitAngle) * target.width / 2; knives[i].y = target.y + Math.sin(target.rotation - knives[i].hitAngle) * target.height / 2; } } for (var i = knives.length - 1; i >= 0; i--) { if (knives[i].y < -50) { knives[i].destroy(); knives.splice(i, 1); } if (lives.length === 0) { LK.showGameOver(); } } });
===================================================================
--- original.js
+++ change.js
@@ -1,21 +1,29 @@
+/****
+* Classes
+****/
var Heart = Container.expand(function () {
var self = Container.call(this);
- var heartGraphics = self.createAsset('heart', 'Heart Graphics', .5, .5);
+ var heartGraphics = self.attachAsset('heart', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
});
var Knife = Container.expand(function () {
var self = Container.call(this);
self.angleTo = function (other) {
var dx = other.x - self.x;
var dy = other.y - self.y;
return Math.atan2(dy, dx);
};
- var knifeGraphics = self.createAsset('knife', 'Knife Graphics', .5, 0);
+ var knifeGraphics = self.attachAsset('knife', {
+ anchorX: 0.5
+ });
self.speed = 30;
self.stuck = false;
self.falling = false;
self.spinDirection = Math.random() < 0.5 ? -1 : 1;
- self.move = function () {
+ self._move_migrated = function () {
if (!self.stuck && !self.falling) {
self.y -= self.speed;
}
};
@@ -45,9 +53,12 @@
};
});
var Target = Container.expand(function () {
var self = Container.call(this);
- var targetGraphics = self.createAsset('target', 'Target Graphics', .5, .5);
+ var targetGraphics = self.attachAsset('target', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
self.rotationSpeed = 0.01;
self.rotation = 4 * Math.PI;
self.rotate = function () {
self.rotation += self.rotationSpeed;
@@ -55,87 +66,95 @@
self.hit = function () {
LK.effects.flashObject(self, 0x00ff00, 500);
};
});
-var Game = Container.expand(function () {
- var self = Container.call(this);
- var background = self.createAsset('background', 'Background Graphics', 0, 0);
- background.width = 2048;
- background.height = 2732;
- var knives = [];
- var targets = [];
- var score = 0;
- var lives = [new Heart(), new Heart(), new Heart(), new Heart(), new Heart()];
- var scoreTxt = new Text2(score.toString(), {
- size: 150,
- fill: "#ff0000",
- font: "'Comic Sans MS', cursive, sans-serif",
- stroke: "#ffffff",
- strokeThickness: 6,
- dropShadow: true,
- dropShadowColor: "#00ff00",
- dropShadowBlur: 4,
- dropShadowAngle: Math.PI / 6,
- dropShadowDistance: 6
- });
- scoreTxt.anchor.set(.5, 0);
- LK.gui.topCenter.addChild(scoreTxt);
- for (var i = 0; i < lives.length; i++) {
- lives[i].x = 2048 - (i + 1) * 130 - 15;
- lives[i].y = 100 + 15;
- self.addChild(lives[i]);
+
+/****
+* Initialize Game
+****/
+var game = new LK.Game({
+ backgroundColor: 0x000000
+});
+
+/****
+* Game Code
+****/
+var background = game.attachAsset('background', {});
+background.width = 2048;
+background.height = 2732;
+var knives = [];
+var targets = [];
+var score = 0;
+var lives = [new Heart(), new Heart(), new Heart(), new Heart(), new Heart()];
+var scoreTxt = new Text2(score.toString(), {
+ size: 150,
+ fill: 0xFF0000,
+ font: "'Comic Sans MS', cursive, sans-serif",
+ stroke: 0xFFFFFF,
+ strokeThickness: 6,
+ dropShadow: true,
+ dropShadowColor: 0x00FF00,
+ dropShadowBlur: 4,
+ dropShadowAngle: Math.PI / 6,
+ dropShadowDistance: 6
+});
+scoreTxt.anchor.set(.5, 0);
+LK.gui.top.addChild(scoreTxt);
+for (var i = 0; i < lives.length; i++) {
+ lives[i].x = 2048 - (i + 1) * 130 - 15;
+ lives[i].y = 100 + 15;
+ game.addChild(lives[i]);
+}
+var knife = game.addChild(new Knife());
+knife.x = 2048 / 2;
+knife.y = 2732 - 200;
+var target = game.addChild(new Target());
+target.x = 2048 / 2;
+target.y = 2732 / 2;
+game.on('down', function (x, y, obj) {
+ var newKnife = new Knife();
+ newKnife.x = knife.x;
+ newKnife.y = knife.y;
+ knives.push(newKnife);
+ game.addChild(newKnife);
+});
+LK.on('tick', function () {
+ target.rotate();
+ for (var i = 0; i < knives.length; i++) {
+ knives[i]._move_migrated();
+ knives[i].fall();
}
- var knife = self.addChild(new Knife());
- knife.x = 2048 / 2;
- knife.y = 2732 - 200;
- var target = self.addChild(new Target());
- target.x = 2048 / 2;
- target.y = 2732 / 2;
- stage.on('down', function (obj) {
- var newKnife = new Knife();
- newKnife.x = knife.x;
- newKnife.y = knife.y;
- knives.push(newKnife);
- self.addChild(newKnife);
- });
- LK.on('tick', function () {
- target.rotate();
- for (var i = 0; i < knives.length; i++) {
- knives[i].move();
- knives[i].fall();
- }
- for (var i = 0; i < knives.length; i++) {
- if (Math.abs(knives[i].y - target.y) <= target.height / 2 && !knives[i].stuck) {
- knives[i].stuck = true;
- knives[i].hitAngle = target.rotation - Math.PI / 2;
- if (knives[i].hit(knives)) {
- knives[i].falling = true;
- var lostLife = lives.pop();
- lostLife.destroy();
- scoreTxt.setText(score.toString());
- if (lives.length > 0) {
- LK.effects.flashScreen(0xff0000, 500);
- }
- } else {
- target.hit();
- target.rotationSpeed += 0.005 / 3;
- score += 1;
- scoreTxt.setText(score.toString());
+ for (var i = 0; i < knives.length; i++) {
+ if (Math.abs(knives[i].y - target.y) <= target.height / 2 && !knives[i].stuck) {
+ knives[i].stuck = true;
+ knives[i].hitAngle = target.rotation - Math.PI / 2;
+ if (knives[i].hit(knives)) {
+ knives[i].falling = true;
+ var lostLife = lives.pop();
+ lostLife.destroy();
+ scoreTxt.setText(score.toString());
+ if (lives.length > 0) {
+ LK.effects.flashScreen(0xff0000, 500);
}
+ } else {
+ target.hit();
+ target.rotationSpeed += 0.005 / 3;
+ score += 1;
+ scoreTxt.setText(score.toString());
}
- if (knives[i].stuck && !knives[i].falling) {
- knives[i].rotation = target.rotation - knives[i].hitAngle - Math.PI / 2;
- knives[i].x = target.x + Math.cos(target.rotation - knives[i].hitAngle) * target.width / 2;
- knives[i].y = target.y + Math.sin(target.rotation - knives[i].hitAngle) * target.height / 2;
- }
}
- for (var i = knives.length - 1; i >= 0; i--) {
- if (knives[i].y < -50) {
- knives[i].destroy();
- knives.splice(i, 1);
- }
- if (lives.length === 0) {
- LK.showGameOver();
- }
+ if (knives[i].stuck && !knives[i].falling) {
+ knives[i].rotation = target.rotation - knives[i].hitAngle - Math.PI / 2;
+ knives[i].x = target.x + Math.cos(target.rotation - knives[i].hitAngle) * target.width / 2;
+ knives[i].y = target.y + Math.sin(target.rotation - knives[i].hitAngle) * target.height / 2;
}
- });
-});
+ }
+ for (var i = knives.length - 1; i >= 0; i--) {
+ if (knives[i].y < -50) {
+ knives[i].destroy();
+ knives.splice(i, 1);
+ }
+ if (lives.length === 0) {
+ LK.showGameOver();
+ }
+ }
+});
\ No newline at end of file
Cartoon knife pointing up. Symmetrical. Vertical. Christmas designed. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a red heart. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
a target with a picture of a stickman taped on it. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
a wall backround. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows