moving clouds
This commit is contained in:
parent
6cfd69c9d3
commit
68db4a923f
|
|
@ -10,6 +10,13 @@ const SPEED = 10
|
||||||
let x = rng(0, WIDTH)
|
let x = rng(0, WIDTH)
|
||||||
let y = rng(0, HEIGHT)
|
let y = rng(0, HEIGHT)
|
||||||
|
|
||||||
|
type Cloud = { x: number; y: number; speed: number }
|
||||||
|
const clouds: Cloud[] = [
|
||||||
|
{ x: 200, y: 100, speed: 0.7 },
|
||||||
|
{ x: 500, y: 150, speed: 0.5 },
|
||||||
|
{ x: 50, y: 220, speed: 0.5 },
|
||||||
|
]
|
||||||
|
|
||||||
export function init() { console.log("init") }
|
export function init() { console.log("init") }
|
||||||
|
|
||||||
export function update(_delta: number, input: InputState) {
|
export function update(_delta: number, input: InputState) {
|
||||||
|
|
@ -18,6 +25,13 @@ export function update(_delta: number, input: InputState) {
|
||||||
|
|
||||||
if (input.pressed.has("ArrowLeft") || input.pressed.has("a")) x -= 1 * SPEED
|
if (input.pressed.has("ArrowLeft") || input.pressed.has("a")) x -= 1 * SPEED
|
||||||
if (input.pressed.has("ArrowRight") || input.pressed.has("d")) x += 1 * SPEED
|
if (input.pressed.has("ArrowRight") || input.pressed.has("d")) x += 1 * SPEED
|
||||||
|
|
||||||
|
for (const cloud of clouds) {
|
||||||
|
cloud.x += cloud.speed
|
||||||
|
if (cloud.x > WIDTH + 80) { // off screen
|
||||||
|
cloud.x = -80
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function draw(ctx: GameContext) {
|
export function draw(ctx: GameContext) {
|
||||||
|
|
@ -32,13 +46,16 @@ export function draw(ctx: GameContext) {
|
||||||
// grass
|
// grass
|
||||||
ctx.rectfill(0, 400, ctx.width, ctx.height, "green")
|
ctx.rectfill(0, 400, ctx.width, ctx.height, "green")
|
||||||
|
|
||||||
|
// clouds
|
||||||
|
for (const cloud of clouds) {
|
||||||
|
drawCloud(ctx, cloud.x, cloud.y)
|
||||||
|
}
|
||||||
|
|
||||||
// house body
|
// house body
|
||||||
ctx.rectfill(200, 250, 400, 400, "sienna")
|
ctx.rectfill(200, 250, 400, 400, "sienna")
|
||||||
|
|
||||||
// roof (triangle-ish with lines)
|
// roof (triangle-ish with lines)
|
||||||
ctx.line(200, 250, 300, 150, "brown")
|
ctx.trianglefill(200, 250, 400, 250, 300, 150, "brown")
|
||||||
ctx.line(400, 250, 300, 150, "brown")
|
|
||||||
ctx.line(200, 250, 400, 250, "brown")
|
|
||||||
|
|
||||||
// door
|
// door
|
||||||
ctx.rectfill(280, 320, 320, 400, "darkred")
|
ctx.rectfill(280, 320, 320, 400, "darkred")
|
||||||
|
|
@ -47,13 +64,22 @@ export function draw(ctx: GameContext) {
|
||||||
ctx.rectfill(220, 270, 260, 310, "lightblue")
|
ctx.rectfill(220, 270, 260, 310, "lightblue")
|
||||||
ctx.rectfill(340, 270, 380, 310, "lightblue")
|
ctx.rectfill(340, 270, 380, 310, "lightblue")
|
||||||
|
|
||||||
|
// player
|
||||||
|
ctx.circfill(x, y, 10, "magenta")
|
||||||
|
ctx.circ(x, y, 11, "white")
|
||||||
|
|
||||||
// tree trunk
|
// tree trunk
|
||||||
ctx.rectfill(500, 300, 540, 400, "saddlebrown")
|
ctx.rectfill(500, 300, 540, 400, "saddlebrown")
|
||||||
|
|
||||||
// tree top (a few circles for puffiness)
|
// tree top (a few circles for puffiness)
|
||||||
ctx.circfill(520, 280, 40, "darkgreen")
|
ctx.circfill(520, 280, 40, "darkgreen")
|
||||||
ctx.circfill(480, 300, 40, "darkgreen")
|
ctx.circfill(480, 300, 40, "darkgreen")
|
||||||
ctx.circfill(560, 300, 40, "darkgreen")
|
ctx.circfill(560, 300, 40, "darkgreen")
|
||||||
|
|
||||||
ctx.circfill(x, y, 10, "magenta")
|
|
||||||
ctx.circ(x, y, 11, "white")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function drawCloud(ctx: GameContext, x: number, y: number) {
|
||||||
|
ctx.circfill(x, y, 30, "white")
|
||||||
|
ctx.circfill(x + 30, y - 10, 40, "white")
|
||||||
|
ctx.circfill(x + 60, y, 30, "white")
|
||||||
|
ctx.circfill(x + 30, y + 10, 35, "white")
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user