From 876bb8a9e5397aaea801adb3af7755ac6eb80604 Mon Sep 17 00:00:00 2001 From: Nulo Date: Mon, 28 Jun 2021 19:20:41 +0000 Subject: [PATCH] =?UTF-8?q?Menos=20valores=20m=C3=A1gicos=20y=20spawneo=20?= =?UTF-8?q?de=20enemigos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jugando.ts | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/jugando.ts b/src/jugando.ts index 72befac..d407e3e 100644 --- a/src/jugando.ts +++ b/src/jugando.ts @@ -13,6 +13,13 @@ const jugadorxSprite = loadSprite(jugadorxImg, 133, 266, juego => juego.canvas.h const larretaSprite = loadSprite(larretaImg, 800, 1069, juego => juego.canvas.height / 4) const semillaSprite = loadSprite(semillaImg, 480, 640, juego => juego.canvas.height / 8) +const ENEMIES_NUM = 20 +const SEED_SPEED = 1000 +const SEED_COOLDOWN = 300 +const MAP_MIN = 1000 +const MAP_MAX = 5000 +const MAP_SIZE = MAP_MAX - MAP_MIN + export type State = { current: "jugando" pos: { x: number } @@ -27,11 +34,11 @@ export type State = { export function createJugandoState(): State { return { current: "jugando", - pos: { x: 3000 }, + pos: { x: MAP_MIN + MAP_SIZE / 2 }, view: { x: 0 }, velocity: { x: 0 }, side: "right", - enemies: [{ x: 2700 }], + enemies: [], seeds: [], seedCooldown: 0, } @@ -49,16 +56,16 @@ export function update(juego: Juego, dt: number) { } juego.state.pos.x += (dt / 1000) * juego.state.velocity.x - if (juego.state.pos.x < 2000) juego.state.pos.x = 2000 - if (juego.state.pos.x > 4000) juego.state.pos.x = 4000 + if (juego.state.pos.x < MAP_MIN) juego.state.pos.x = MAP_MIN + if (juego.state.pos.x > MAP_MAX) juego.state.pos.x = MAP_MAX juego.state.seedCooldown -= dt if (juego.keyboard.keys[' '] && juego.state.seedCooldown < 0) { juego.state.seeds.push({ x: juego.state.pos.x, - velocity: { x: juego.state.side === "left" ? -2000 : 2000 }, + velocity: { x: juego.state.side === "left" ? -SEED_SPEED : SEED_SPEED }, }) - juego.state.seedCooldown = 300 + juego.state.seedCooldown = SEED_COOLDOWN } for (const seed of juego.state.seeds) { seed.x += (dt / 1000) * seed.velocity.x @@ -81,6 +88,13 @@ export function update(juego: Juego, dt: number) { } } + while (juego.state.enemies.length < ENEMIES_NUM) { + const x = Math.random() * MAP_SIZE + MAP_MIN + // Don't spawn enemies too close + if (Math.abs(juego.state.pos.x - x) < 300) continue + juego.state.enemies.push({ x }) + } + juego.state.view.x = -juego.state.pos.x + juego.canvas.width / 2 - jugadorxSprite.getWidth(juego) / 2 }