/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Boss = Container.expand(function () {
var self = Container.call(this);
var bossGraphics = self.attachAsset('boss', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 5;
self.speed = 2;
self.moveDirection = 1;
self.update = function () {
self.x += self.speed * self.moveDirection;
if (self.x <= 60 || self.x >= 2048 - 60) {
self.moveDirection *= -1;
}
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Enemy2 = Container.expand(function () {
var self = Container.call(this);
var enemy2Graphics = self.attachAsset('enemy2', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 2;
self.speed = 2;
self.sideSpeed = 1.5;
self.moveDirection = 1;
self.update = function () {
self.y += self.speed;
self.x += self.sideSpeed * self.moveDirection;
if (self.x <= 60 || self.x >= 2048 - 60) {
self.moveDirection *= -1;
}
};
return self;
});
var Fireball = Container.expand(function () {
var self = Container.call(this);
var fireballGraphics = self.attachAsset('fireball', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -15;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Star = Container.expand(function () {
var self = Container.call(this);
var starGraphics = self.attachAsset('star', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 1;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.y = -10;
self.x = Math.random() * 2048;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000011
});
/****
* Game Code
****/
var player;
var fireballs = [];
var enemies = [];
var enemies2 = [];
var stars = [];
var boss = null;
var lives = 3;
var enemiesDefeated = 0;
var gameStarted = true;
var bossSpawned = false;
var dragNode = null;
var livesText = new Text2('Lives: 3', {
size: 80,
fill: 0xFFFFFF
});
livesText.anchor.set(1, 0);
livesText.x = -20;
livesText.y = 20;
LK.gui.topRight.addChild(livesText);
var scoreText = new Text2('Enemies: 0/50', {
size: 80,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
function createPlayer() {
player = game.addChild(new Container());
var playerGraphics = player.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
player.x = 2048 / 2;
player.y = 2732 - 120;
}
function createStarfield() {
for (var i = 0; i < 50; i++) {
var star = game.addChild(new Star());
star.x = Math.random() * 2048;
star.y = Math.random() * 2732;
stars.push(star);
}
}
function spawnEnemy() {
if (!bossSpawned && enemiesDefeated < 49) {
var enemyType = Math.random() > 0.6 ? 2 : 1;
if (enemyType === 2) {
var enemy2 = game.addChild(new Enemy2());
enemy2.x = Math.random() * (2048 - 100) + 50;
enemy2.y = -60;
enemy2.lastY = enemy2.y;
enemy2.lastIntersecting = false;
enemies2.push(enemy2);
} else {
var enemy = game.addChild(new Enemy());
enemy.x = Math.random() * (2048 - 100) + 50;
enemy.y = -60;
enemy.lastY = enemy.y;
enemy.lastIntersecting = false;
enemies.push(enemy);
}
}
}
function spawnBoss() {
if (!bossSpawned && enemiesDefeated >= 45) {
boss = game.addChild(new Boss());
boss.x = 2048 / 2;
boss.y = 200;
boss.lastIntersecting = false;
bossSpawned = true;
LK.playMusic('bossMusic', {
loop: true
});
}
}
function fireFireball() {
var fireball = game.addChild(new Fireball());
fireball.x = player.x;
fireball.y = player.y - 50;
fireball.lastY = fireball.y;
fireballs.push(fireball);
LK.getSound('shoot').play();
}
createPlayer();
createStarfield();
LK.playMusic('spaceMusic', {
loop: true
});
var spawnTimer = LK.setInterval(function () {
spawnEnemy();
}, 800);
var fireTimer = LK.setInterval(function () {
if (gameStarted) {
fireFireball();
}
}, 400);
game.move = function (x, y, obj) {
if (gameStarted) {
player.x = x;
player.y = y;
}
};
game.down = function (x, y, obj) {
dragNode = player;
if (gameStarted) {
player.x = x;
player.y = y;
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
game.update = function () {
for (var s = stars.length - 1; s >= 0; s--) {
stars[s].update();
}
for (var f = fireballs.length - 1; f >= 0; f--) {
var fireball = fireballs[f];
fireball.update();
if (fireball.lastY === undefined) {
fireball.lastY = fireball.y;
}
if (fireball.lastY >= -50 && fireball.y < -50) {
fireball.destroy();
fireballs.splice(f, 1);
continue;
}
for (var e = enemies.length - 1; e >= 0; e--) {
var enemy = enemies[e];
if (fireball.intersects(enemy)) {
LK.getSound('explosion').play();
fireball.destroy();
fireballs.splice(f, 1);
enemy.destroy();
enemies.splice(e, 1);
enemiesDefeated++;
scoreText.setText('Enemies: ' + enemiesDefeated + '/50');
break;
}
}
for (var e2 = enemies2.length - 1; e2 >= 0; e2--) {
var enemy2 = enemies2[e2];
if (fireball.intersects(enemy2)) {
LK.getSound('explosion').play();
fireball.destroy();
fireballs.splice(f, 1);
enemy2.health--;
if (enemy2.health <= 0) {
enemy2.destroy();
enemies2.splice(e2, 1);
enemiesDefeated++;
scoreText.setText('Enemies: ' + enemiesDefeated + '/50');
}
break;
}
}
if (boss && fireball.intersects(boss)) {
LK.getSound('explosion').play();
fireball.destroy();
fireballs.splice(f, 1);
boss.health--;
if (boss.health <= 0) {
boss.destroy();
LK.effects.flashScreen(0x00ff00, 1000);
LK.showYouWin();
}
break;
}
fireball.lastY = fireball.y;
}
for (var e = enemies.length - 1; e >= 0; e--) {
var enemy = enemies[e];
enemy.update();
if (enemy.lastY === undefined) {
enemy.lastY = enemy.y;
}
if (enemy.lastY >= -50 && enemy.y < -50) {
enemy.destroy();
enemies.splice(e, 1);
continue;
}
if (enemy.y > 2732) {
enemy.destroy();
enemies.splice(e, 1);
continue;
}
var currentIntersecting = enemy.intersects(player);
if (!enemy.lastIntersecting && currentIntersecting) {
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
lives--;
livesText.setText('Lives: ' + lives);
enemy.destroy();
enemies.splice(e, 1);
if (lives <= 0) {
gameStarted = false;
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
LK.effects.flashScreen(0xff0000, 1000);
LK.stopMusic();
LK.playMusic('gameOverMusic', {
loop: false
});
LK.showGameOver();
}
continue;
}
enemy.lastIntersecting = currentIntersecting;
enemy.lastY = enemy.y;
}
for (var e2 = enemies2.length - 1; e2 >= 0; e2--) {
var enemy2 = enemies2[e2];
enemy2.update();
if (enemy2.lastY === undefined) {
enemy2.lastY = enemy2.y;
}
if (enemy2.lastY >= -50 && enemy2.y < -50) {
enemy2.destroy();
enemies2.splice(e2, 1);
continue;
}
if (enemy2.y > 2732) {
enemy2.destroy();
enemies2.splice(e2, 1);
continue;
}
var currentIntersecting2 = enemy2.intersects(player);
if (!enemy2.lastIntersecting && currentIntersecting2) {
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
lives--;
livesText.setText('Lives: ' + lives);
enemy2.destroy();
enemies2.splice(e2, 1);
if (lives <= 0) {
gameStarted = false;
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
LK.effects.flashScreen(0xff0000, 1000);
LK.stopMusic();
LK.playMusic('gameOverMusic', {
loop: false
});
LK.showGameOver();
}
continue;
}
enemy2.lastIntersecting = currentIntersecting2;
enemy2.lastY = enemy2.y;
}
if (boss) {
boss.update();
if (boss.lastIntersecting === undefined) {
boss.lastIntersecting = false;
}
var currentBossIntersecting = boss.intersects(player);
if (!boss.lastIntersecting && currentBossIntersecting) {
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
lives--;
livesText.setText('Lives: ' + lives);
if (lives <= 0) {
gameStarted = false;
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
LK.effects.flashScreen(0xff0000, 1000);
LK.stopMusic();
LK.playMusic('gameOverMusic', {
loop: false
});
LK.showGameOver();
}
}
boss.lastIntersecting = currentBossIntersecting;
}
if (enemiesDefeated >= 49 && !bossSpawned) {
spawnBoss();
}
}; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Boss = Container.expand(function () {
var self = Container.call(this);
var bossGraphics = self.attachAsset('boss', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 5;
self.speed = 2;
self.moveDirection = 1;
self.update = function () {
self.x += self.speed * self.moveDirection;
if (self.x <= 60 || self.x >= 2048 - 60) {
self.moveDirection *= -1;
}
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Enemy2 = Container.expand(function () {
var self = Container.call(this);
var enemy2Graphics = self.attachAsset('enemy2', {
anchorX: 0.5,
anchorY: 0.5
});
self.health = 2;
self.speed = 2;
self.sideSpeed = 1.5;
self.moveDirection = 1;
self.update = function () {
self.y += self.speed;
self.x += self.sideSpeed * self.moveDirection;
if (self.x <= 60 || self.x >= 2048 - 60) {
self.moveDirection *= -1;
}
};
return self;
});
var Fireball = Container.expand(function () {
var self = Container.call(this);
var fireballGraphics = self.attachAsset('fireball', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -15;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Star = Container.expand(function () {
var self = Container.call(this);
var starGraphics = self.attachAsset('star', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 1;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.y = -10;
self.x = Math.random() * 2048;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000011
});
/****
* Game Code
****/
var player;
var fireballs = [];
var enemies = [];
var enemies2 = [];
var stars = [];
var boss = null;
var lives = 3;
var enemiesDefeated = 0;
var gameStarted = true;
var bossSpawned = false;
var dragNode = null;
var livesText = new Text2('Lives: 3', {
size: 80,
fill: 0xFFFFFF
});
livesText.anchor.set(1, 0);
livesText.x = -20;
livesText.y = 20;
LK.gui.topRight.addChild(livesText);
var scoreText = new Text2('Enemies: 0/50', {
size: 80,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
function createPlayer() {
player = game.addChild(new Container());
var playerGraphics = player.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
player.x = 2048 / 2;
player.y = 2732 - 120;
}
function createStarfield() {
for (var i = 0; i < 50; i++) {
var star = game.addChild(new Star());
star.x = Math.random() * 2048;
star.y = Math.random() * 2732;
stars.push(star);
}
}
function spawnEnemy() {
if (!bossSpawned && enemiesDefeated < 49) {
var enemyType = Math.random() > 0.6 ? 2 : 1;
if (enemyType === 2) {
var enemy2 = game.addChild(new Enemy2());
enemy2.x = Math.random() * (2048 - 100) + 50;
enemy2.y = -60;
enemy2.lastY = enemy2.y;
enemy2.lastIntersecting = false;
enemies2.push(enemy2);
} else {
var enemy = game.addChild(new Enemy());
enemy.x = Math.random() * (2048 - 100) + 50;
enemy.y = -60;
enemy.lastY = enemy.y;
enemy.lastIntersecting = false;
enemies.push(enemy);
}
}
}
function spawnBoss() {
if (!bossSpawned && enemiesDefeated >= 45) {
boss = game.addChild(new Boss());
boss.x = 2048 / 2;
boss.y = 200;
boss.lastIntersecting = false;
bossSpawned = true;
LK.playMusic('bossMusic', {
loop: true
});
}
}
function fireFireball() {
var fireball = game.addChild(new Fireball());
fireball.x = player.x;
fireball.y = player.y - 50;
fireball.lastY = fireball.y;
fireballs.push(fireball);
LK.getSound('shoot').play();
}
createPlayer();
createStarfield();
LK.playMusic('spaceMusic', {
loop: true
});
var spawnTimer = LK.setInterval(function () {
spawnEnemy();
}, 800);
var fireTimer = LK.setInterval(function () {
if (gameStarted) {
fireFireball();
}
}, 400);
game.move = function (x, y, obj) {
if (gameStarted) {
player.x = x;
player.y = y;
}
};
game.down = function (x, y, obj) {
dragNode = player;
if (gameStarted) {
player.x = x;
player.y = y;
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
game.update = function () {
for (var s = stars.length - 1; s >= 0; s--) {
stars[s].update();
}
for (var f = fireballs.length - 1; f >= 0; f--) {
var fireball = fireballs[f];
fireball.update();
if (fireball.lastY === undefined) {
fireball.lastY = fireball.y;
}
if (fireball.lastY >= -50 && fireball.y < -50) {
fireball.destroy();
fireballs.splice(f, 1);
continue;
}
for (var e = enemies.length - 1; e >= 0; e--) {
var enemy = enemies[e];
if (fireball.intersects(enemy)) {
LK.getSound('explosion').play();
fireball.destroy();
fireballs.splice(f, 1);
enemy.destroy();
enemies.splice(e, 1);
enemiesDefeated++;
scoreText.setText('Enemies: ' + enemiesDefeated + '/50');
break;
}
}
for (var e2 = enemies2.length - 1; e2 >= 0; e2--) {
var enemy2 = enemies2[e2];
if (fireball.intersects(enemy2)) {
LK.getSound('explosion').play();
fireball.destroy();
fireballs.splice(f, 1);
enemy2.health--;
if (enemy2.health <= 0) {
enemy2.destroy();
enemies2.splice(e2, 1);
enemiesDefeated++;
scoreText.setText('Enemies: ' + enemiesDefeated + '/50');
}
break;
}
}
if (boss && fireball.intersects(boss)) {
LK.getSound('explosion').play();
fireball.destroy();
fireballs.splice(f, 1);
boss.health--;
if (boss.health <= 0) {
boss.destroy();
LK.effects.flashScreen(0x00ff00, 1000);
LK.showYouWin();
}
break;
}
fireball.lastY = fireball.y;
}
for (var e = enemies.length - 1; e >= 0; e--) {
var enemy = enemies[e];
enemy.update();
if (enemy.lastY === undefined) {
enemy.lastY = enemy.y;
}
if (enemy.lastY >= -50 && enemy.y < -50) {
enemy.destroy();
enemies.splice(e, 1);
continue;
}
if (enemy.y > 2732) {
enemy.destroy();
enemies.splice(e, 1);
continue;
}
var currentIntersecting = enemy.intersects(player);
if (!enemy.lastIntersecting && currentIntersecting) {
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
lives--;
livesText.setText('Lives: ' + lives);
enemy.destroy();
enemies.splice(e, 1);
if (lives <= 0) {
gameStarted = false;
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
LK.effects.flashScreen(0xff0000, 1000);
LK.stopMusic();
LK.playMusic('gameOverMusic', {
loop: false
});
LK.showGameOver();
}
continue;
}
enemy.lastIntersecting = currentIntersecting;
enemy.lastY = enemy.y;
}
for (var e2 = enemies2.length - 1; e2 >= 0; e2--) {
var enemy2 = enemies2[e2];
enemy2.update();
if (enemy2.lastY === undefined) {
enemy2.lastY = enemy2.y;
}
if (enemy2.lastY >= -50 && enemy2.y < -50) {
enemy2.destroy();
enemies2.splice(e2, 1);
continue;
}
if (enemy2.y > 2732) {
enemy2.destroy();
enemies2.splice(e2, 1);
continue;
}
var currentIntersecting2 = enemy2.intersects(player);
if (!enemy2.lastIntersecting && currentIntersecting2) {
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
lives--;
livesText.setText('Lives: ' + lives);
enemy2.destroy();
enemies2.splice(e2, 1);
if (lives <= 0) {
gameStarted = false;
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
LK.effects.flashScreen(0xff0000, 1000);
LK.stopMusic();
LK.playMusic('gameOverMusic', {
loop: false
});
LK.showGameOver();
}
continue;
}
enemy2.lastIntersecting = currentIntersecting2;
enemy2.lastY = enemy2.y;
}
if (boss) {
boss.update();
if (boss.lastIntersecting === undefined) {
boss.lastIntersecting = false;
}
var currentBossIntersecting = boss.intersects(player);
if (!boss.lastIntersecting && currentBossIntersecting) {
LK.getSound('hit').play();
LK.effects.flashScreen(0xff0000, 500);
lives--;
livesText.setText('Lives: ' + lives);
if (lives <= 0) {
gameStarted = false;
LK.clearInterval(spawnTimer);
LK.clearInterval(fireTimer);
LK.effects.flashScreen(0xff0000, 1000);
LK.stopMusic();
LK.playMusic('gameOverMusic', {
loop: false
});
LK.showGameOver();
}
}
boss.lastIntersecting = currentBossIntersecting;
}
if (enemiesDefeated >= 49 && !bossSpawned) {
spawnBoss();
}
};
“Ilustración estilo anime de Tanjiro Kamado de cuerpo completo. Tanjiro está de pie en una pose heroica, sosteniendo una katana con llamas intensas de fuego rojo y naranja rodeando la hoja. Viste su uniforme de cazador de demonios con el característico haori verde y negro a cuadros. Su expresión es decidida y valiente, con su cicatriz visible en la frente y aretes tradicionales. Estilo anime japonés, alta calidad, ultra detallado, iluminación épica, colores vibrantes. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
As que de la buelta entre 90+ y 180 grados