var SixthFingerBar = Container.expand(function () {
var self = Container.call(this);
var sixthFingerBarGraphics = self.createAsset('sixthFingerBar', 'Sixth finger bar display', 0, 0.5);
var sixthFingerLabel = new Text2('Sixth Finger Strength', {
size: 400,
fill: "#ffffff",
align: 'center'
});
sixthFingerLabel.anchor.set(0.5, 0);
sixthFingerLabel.x = 1024;
sixthFingerLabel.y = -self.height;
self.addChild(sixthFingerLabel);
self.width = 375;
self.height = 75;
self.x = 1024 - self.width / 2;
self.y = 2732 - 300;
self.visible = false;
self.isShowing = false;
self.progress = 50;
self.show = function () {
self.visible = true;
self.isShowing = true;
self.incrementProgress = LK.setInterval(function () {
if (self.progress < 100 && self.direction !== -1) {
self.updateProgress(self.progress + 6);
} else if (self.progress >= 100) {
self.direction = -1;
}
if (self.progress > 0 && self.direction === -1) {
self.updateProgress(self.progress - 6);
} else if (self.progress <= 0) {
self.direction = 1;
}
}, 50);
};
self.hide = function () {
self.visible = false;
self.isShowing = false;
LK.clearInterval(self.incrementProgress);
};
self.updateProgress = function (value) {
self.progress = value;
sixthFingerBarGraphics.scale.x = self.progress / 100;
sixthFingerLabel.setText('Sixth Finger Strength: ' + self.progress + '%');
};
});
var WindBar = Container.expand(function () {
var self = Container.call(this);
var windBarGraphics = self.createAsset('windBar', 'Wind bar display', 0, 0.5);
var windLabel = new Text2('Wind', {
size: 400,
fill: "#ffffff",
align: 'center'
});
windLabel.anchor.set(0.5, 0);
windLabel.x = 1024;
windLabel.y = -self.height;
self.addChild(windLabel);
self.width = 375;
self.height = 75;
self.x = 1024 - self.width / 2;
self.y = 2732 - 200;
self.visible = false;
self.isShowing = false;
self.strength = 50;
self.direction = 1;
self.show = function () {
self.visible = true;
self.isShowing = true;
self.updateWind = LK.setInterval(function () {
if (self.strength < 100 && self.direction !== -1) {
self.strength++;
} else if (self.strength >= 100) {
self.direction = -1;
}
if (self.strength > 1 && self.direction === -1) {
self.strength--;
} else if (self.strength <= 1) {
self.direction = 1;
}
windBarGraphics.scale.x = self.strength / 100;
windBarGraphics.scale.x *= self.direction;
windLabel.setText('Wind: ' + self.strength + '%');
}, 50);
};
self.hide = function () {
self.visible = false;
self.isShowing = false;
LK.clearInterval(self.updateWind);
};
self.updateWindDisplay = function () {};
});
var RestartButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('restartButton', 'Restart button', 0.5, 0.5);
self.x = 2048 / 2;
self.y = 2732 - 200;
buttonGraphics.on('down', function () {
LK.showGameOver();
});
});
var PowerBar = Container.expand(function () {
var self = Container.call(this);
var powerBarGraphics = self.createAsset('powerBar', 'Power bar display', 0, 0.5);
var powerLabel = new Text2('Power', {
size: 400,
fill: "#ffffff",
align: 'center'
});
powerLabel.anchor.set(0.5, 0);
powerLabel.x = 1024;
powerLabel.y = -self.height;
self.addChild(powerLabel);
self.width = 375;
self.height = 75;
self.x = 1024 - self.width / 2;
self.y = 2732 - 100;
self.visible = false;
self.isShowing = false;
self.progress = 50;
self.show = function () {
self.visible = true;
self.isShowing = true;
self.incrementProgress = LK.setInterval(function () {
if (self.progress < 100 && self.direction !== -1) {
self.updateProgress(self.progress + 3);
} else if (self.progress >= 100) {
self.direction = -1;
}
if (self.progress > 0 && self.direction === -1) {
self.updateProgress(self.progress - 3);
} else if (self.progress <= 0) {
self.direction = 1;
}
}, 50);
};
self.hide = function () {
self.visible = false;
self.isShowing = false;
LK.clearInterval(self.incrementProgress);
};
self.updateProgress = function (value) {
self.progress = value;
powerBarGraphics.scale.x = self.progress / 100;
powerLabel.setText('Power: ' + self.progress + '%');
};
});
var Hand = Container.expand(function () {
var self = Container.call(this);
self.move = function (position, stone) {
self.x = position.x;
if (!stone.isLaunched) {
stone.x = self.x;
}
};
var handGraphics = self.createAsset('hand', 'Moving hand at the bottom', 0.5, 0.5);
self.x = 0;
self.y = 2732 - handGraphics.height / 2;
self.direction = 1;
self.speed = 5;
});
var Stone = Container.expand(function () {
var self = Container.call(this);
self.launch = function (hand, powerBarProgress, windBarStrength, sixthFingerBarProgress) {
self.x = hand.x;
self.y = hand.y;
self.direction = -Math.PI / 2;
var averagePower = (powerBarProgress + windBarStrength + sixthFingerBarProgress) / 3;
self.launchPower = averagePower * 4.8;
self.speedX = self.launchPower * Math.cos(self.direction) * 0.01;
self.speedY = -self.speedY * 0.7;
self.isLaunched = true;
self.distanceTraveled = 0;
self.bounceChance = 1;
LK.setScore(0);
};
var stoneGraphics = self.createAsset('stone', 'Stone for ricochet', .5, .5);
self.speedX = 0;
self.speedY = 0;
self.direction = 0;
self.isLaunched = false;
self.move = function (lake) {
self.x += self.speedX;
self.y += self.speedY;
self.speedX *= 0.95;
self.launchPower *= 0.99;
if (self.isLaunched) {
self.speedY += self.launchPower * 50;
}
if (self.isLaunched) {
self.distanceTraveled += self.speed;
LK.setScore(Math.floor(self.distanceTraveled));
if (lake.checkRicochet(self) && Math.random() < self.bounceChance) {
self.direction = -Math.PI / 2;
self.speedX = self.launchPower * Math.cos(self.direction) * 0.01;
self.speedY = self.launchPower * Math.sin(self.direction) * 0.01;
self.bounceChance = 1;
}
if (Math.abs(self.speedY) < 0.1) {
self.speedX = 0;
self.speedY = 0;
if (!self.isStopped) {
LK.setTimeout(function () {
LK.showGameOver();
}, 3000);
self.isStopped = true;
}
}
}
};
});
var Lake = Container.expand(function () {
var self = Container.call(this);
var lakeGraphics = self.createAsset('lake', 'Lake for stone ricochet', .5, .5);
self.checkRicochet = function (stone) {
if (stone.intersects(this)) {
return true;
}
return false;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
self.windBar = null;
self.sixthFingerBar = null;
self.powerBar = self.addChild(new PowerBar());
self.powerBar.isShowing = false;
self.powerBar.hide();
self.powerBar.show = function () {
self.powerBar.visible = true;
self.powerBar.isShowing = true;
};
self.powerBar.hide = function () {
self.powerBar.visible = false;
self.powerBar.isShowing = false;
};
LK.stageContainer.setBackgroundColor(0x008080);
var lake = self.addChild(new Lake());
lake.x = 2048 / 2;
lake.y = 2732 / 2;
var hand = self.addChild(new Hand());
self.powerBar = self.addChild(new PowerBar());
var stone = self.addChild(new Stone());
stone.x = hand.x;
stone.y = hand.y;
self.scoreTxt = new Text2('0', {
size: 150,
fill: "#00ff00"
});
LK.gui.topCenter.addChild(self.scoreTxt);
LK.gui.topCenter.addChild(self.scoreTxt);
var isGameOver = false;
var ricochets = 0;
var restartButton = self.addChild(new RestartButton());
restartButton.visible = false;
LK.on('tick', function () {
if (!stone.isLaunched) {}
stone.move(lake);
if (stone.isLaunched) {
var distance = Math.sqrt(Math.pow(stone.x - hand.x, 2) + Math.pow(stone.y - hand.y, 2));
LK.setScore(Math.floor(distance));
self.scoreTxt.setText(LK.getScore().toString());
}
});
var clickCount = 0;
stage.on('down', function (obj) {
clickCount++;
if (clickCount === 2) {
self.windBar = self.addChild(new WindBar());
self.windBar.show();
} else if (clickCount === 3) {
self.sixthFingerBar = self.addChild(new SixthFingerBar());
self.sixthFingerBar.show();
}
if (!stone.isLaunched && self.powerBar && self.powerBar.isShowing === false && clickCount === 1) {
self.powerBar.show();
} else if (!stone.isLaunched && self.powerBar.isShowing && clickCount === 4) {
stone.launch(hand, self.powerBar.progress, self.windBar ? self.windBar.strength : 50, self.sixthFingerBar ? self.sixthFingerBar.progress : 50);
self.powerBar.hide();
}
});
stage.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
hand.move({
x: pos.x
}, stone);
});
});
var SixthFingerBar = Container.expand(function () {
var self = Container.call(this);
var sixthFingerBarGraphics = self.createAsset('sixthFingerBar', 'Sixth finger bar display', 0, 0.5);
var sixthFingerLabel = new Text2('Sixth Finger Strength', {
size: 400,
fill: "#ffffff",
align: 'center'
});
sixthFingerLabel.anchor.set(0.5, 0);
sixthFingerLabel.x = 1024;
sixthFingerLabel.y = -self.height;
self.addChild(sixthFingerLabel);
self.width = 375;
self.height = 75;
self.x = 1024 - self.width / 2;
self.y = 2732 - 300;
self.visible = false;
self.isShowing = false;
self.progress = 50;
self.show = function () {
self.visible = true;
self.isShowing = true;
self.incrementProgress = LK.setInterval(function () {
if (self.progress < 100 && self.direction !== -1) {
self.updateProgress(self.progress + 6);
} else if (self.progress >= 100) {
self.direction = -1;
}
if (self.progress > 0 && self.direction === -1) {
self.updateProgress(self.progress - 6);
} else if (self.progress <= 0) {
self.direction = 1;
}
}, 50);
};
self.hide = function () {
self.visible = false;
self.isShowing = false;
LK.clearInterval(self.incrementProgress);
};
self.updateProgress = function (value) {
self.progress = value;
sixthFingerBarGraphics.scale.x = self.progress / 100;
sixthFingerLabel.setText('Sixth Finger Strength: ' + self.progress + '%');
};
});
var WindBar = Container.expand(function () {
var self = Container.call(this);
var windBarGraphics = self.createAsset('windBar', 'Wind bar display', 0, 0.5);
var windLabel = new Text2('Wind', {
size: 400,
fill: "#ffffff",
align: 'center'
});
windLabel.anchor.set(0.5, 0);
windLabel.x = 1024;
windLabel.y = -self.height;
self.addChild(windLabel);
self.width = 375;
self.height = 75;
self.x = 1024 - self.width / 2;
self.y = 2732 - 200;
self.visible = false;
self.isShowing = false;
self.strength = 50;
self.direction = 1;
self.show = function () {
self.visible = true;
self.isShowing = true;
self.updateWind = LK.setInterval(function () {
if (self.strength < 100 && self.direction !== -1) {
self.strength++;
} else if (self.strength >= 100) {
self.direction = -1;
}
if (self.strength > 1 && self.direction === -1) {
self.strength--;
} else if (self.strength <= 1) {
self.direction = 1;
}
windBarGraphics.scale.x = self.strength / 100;
windBarGraphics.scale.x *= self.direction;
windLabel.setText('Wind: ' + self.strength + '%');
}, 50);
};
self.hide = function () {
self.visible = false;
self.isShowing = false;
LK.clearInterval(self.updateWind);
};
self.updateWindDisplay = function () {};
});
var RestartButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('restartButton', 'Restart button', 0.5, 0.5);
self.x = 2048 / 2;
self.y = 2732 - 200;
buttonGraphics.on('down', function () {
LK.showGameOver();
});
});
var PowerBar = Container.expand(function () {
var self = Container.call(this);
var powerBarGraphics = self.createAsset('powerBar', 'Power bar display', 0, 0.5);
var powerLabel = new Text2('Power', {
size: 400,
fill: "#ffffff",
align: 'center'
});
powerLabel.anchor.set(0.5, 0);
powerLabel.x = 1024;
powerLabel.y = -self.height;
self.addChild(powerLabel);
self.width = 375;
self.height = 75;
self.x = 1024 - self.width / 2;
self.y = 2732 - 100;
self.visible = false;
self.isShowing = false;
self.progress = 50;
self.show = function () {
self.visible = true;
self.isShowing = true;
self.incrementProgress = LK.setInterval(function () {
if (self.progress < 100 && self.direction !== -1) {
self.updateProgress(self.progress + 3);
} else if (self.progress >= 100) {
self.direction = -1;
}
if (self.progress > 0 && self.direction === -1) {
self.updateProgress(self.progress - 3);
} else if (self.progress <= 0) {
self.direction = 1;
}
}, 50);
};
self.hide = function () {
self.visible = false;
self.isShowing = false;
LK.clearInterval(self.incrementProgress);
};
self.updateProgress = function (value) {
self.progress = value;
powerBarGraphics.scale.x = self.progress / 100;
powerLabel.setText('Power: ' + self.progress + '%');
};
});
var Hand = Container.expand(function () {
var self = Container.call(this);
self.move = function (position, stone) {
self.x = position.x;
if (!stone.isLaunched) {
stone.x = self.x;
}
};
var handGraphics = self.createAsset('hand', 'Moving hand at the bottom', 0.5, 0.5);
self.x = 0;
self.y = 2732 - handGraphics.height / 2;
self.direction = 1;
self.speed = 5;
});
var Stone = Container.expand(function () {
var self = Container.call(this);
self.launch = function (hand, powerBarProgress, windBarStrength, sixthFingerBarProgress) {
self.x = hand.x;
self.y = hand.y;
self.direction = -Math.PI / 2;
var averagePower = (powerBarProgress + windBarStrength + sixthFingerBarProgress) / 3;
self.launchPower = averagePower * 4.8;
self.speedX = self.launchPower * Math.cos(self.direction) * 0.01;
self.speedY = -self.speedY * 0.7;
self.isLaunched = true;
self.distanceTraveled = 0;
self.bounceChance = 1;
LK.setScore(0);
};
var stoneGraphics = self.createAsset('stone', 'Stone for ricochet', .5, .5);
self.speedX = 0;
self.speedY = 0;
self.direction = 0;
self.isLaunched = false;
self.move = function (lake) {
self.x += self.speedX;
self.y += self.speedY;
self.speedX *= 0.95;
self.launchPower *= 0.99;
if (self.isLaunched) {
self.speedY += self.launchPower * 50;
}
if (self.isLaunched) {
self.distanceTraveled += self.speed;
LK.setScore(Math.floor(self.distanceTraveled));
if (lake.checkRicochet(self) && Math.random() < self.bounceChance) {
self.direction = -Math.PI / 2;
self.speedX = self.launchPower * Math.cos(self.direction) * 0.01;
self.speedY = self.launchPower * Math.sin(self.direction) * 0.01;
self.bounceChance = 1;
}
if (Math.abs(self.speedY) < 0.1) {
self.speedX = 0;
self.speedY = 0;
if (!self.isStopped) {
LK.setTimeout(function () {
LK.showGameOver();
}, 3000);
self.isStopped = true;
}
}
}
};
});
var Lake = Container.expand(function () {
var self = Container.call(this);
var lakeGraphics = self.createAsset('lake', 'Lake for stone ricochet', .5, .5);
self.checkRicochet = function (stone) {
if (stone.intersects(this)) {
return true;
}
return false;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
self.windBar = null;
self.sixthFingerBar = null;
self.powerBar = self.addChild(new PowerBar());
self.powerBar.isShowing = false;
self.powerBar.hide();
self.powerBar.show = function () {
self.powerBar.visible = true;
self.powerBar.isShowing = true;
};
self.powerBar.hide = function () {
self.powerBar.visible = false;
self.powerBar.isShowing = false;
};
LK.stageContainer.setBackgroundColor(0x008080);
var lake = self.addChild(new Lake());
lake.x = 2048 / 2;
lake.y = 2732 / 2;
var hand = self.addChild(new Hand());
self.powerBar = self.addChild(new PowerBar());
var stone = self.addChild(new Stone());
stone.x = hand.x;
stone.y = hand.y;
self.scoreTxt = new Text2('0', {
size: 150,
fill: "#00ff00"
});
LK.gui.topCenter.addChild(self.scoreTxt);
LK.gui.topCenter.addChild(self.scoreTxt);
var isGameOver = false;
var ricochets = 0;
var restartButton = self.addChild(new RestartButton());
restartButton.visible = false;
LK.on('tick', function () {
if (!stone.isLaunched) {}
stone.move(lake);
if (stone.isLaunched) {
var distance = Math.sqrt(Math.pow(stone.x - hand.x, 2) + Math.pow(stone.y - hand.y, 2));
LK.setScore(Math.floor(distance));
self.scoreTxt.setText(LK.getScore().toString());
}
});
var clickCount = 0;
stage.on('down', function (obj) {
clickCount++;
if (clickCount === 2) {
self.windBar = self.addChild(new WindBar());
self.windBar.show();
} else if (clickCount === 3) {
self.sixthFingerBar = self.addChild(new SixthFingerBar());
self.sixthFingerBar.show();
}
if (!stone.isLaunched && self.powerBar && self.powerBar.isShowing === false && clickCount === 1) {
self.powerBar.show();
} else if (!stone.isLaunched && self.powerBar.isShowing && clickCount === 4) {
stone.launch(hand, self.powerBar.progress, self.windBar ? self.windBar.strength : 50, self.sixthFingerBar ? self.sixthFingerBar.progress : 50);
self.powerBar.hide();
}
});
stage.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
hand.move({
x: pos.x
}, stone);
});
});
A nice lake Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A hand Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A small stone Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A power bar Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A power bar Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A restart button Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.