An incomplete program
let canvas;
let context;
let width;
let height;
let interval_id;
let ps = [];
let player = {
x : 0,
y : 150,
size : 10
};
let moveRight = false;
let moveUp = false;
let moveDown = false;
document.addEventListener('DOMContentLoaded', init, false);
function init() {
canvas = document.querySelector('canvas');
context = canvas.getContext('2d');
width = canvas.width;
height = canvas.height;
interval_id = window.setInterval(draw, 33);
}
function draw() {
if (ps.length < 10) {
let p = {
x : width,
y : getRandomNumber(0, height),
size : 10,
xChange : getRandomNumber(-10, -1),
yChange : 0
};
ps.push(p);
}
context.clearRect(0, 0, width, height);
context.fillStyle = 'yellow';
for (let p of ps) {
context.fillRect(p.x, p.y, p.size, p.size);
}
context.fillStyle ='cyan';
context.fillRect(player.x, player.y, player.size, player.size);
if (player.x + player.size >= width) {
stop();
window.alert('YOU WIN!');
return;
}
for (let p of ps) {
if (collides(p)) {
stop();
window.alert('YOU LOSE!');
return;
}
}
for (let p of ps) {
p.x = p.x + p.xChange;
p.y = p.y + p.yChange;
if (p.x <= -p.size) {
p.x = width;
}
}
if (moveRight) {
player.x += 3;
}
if (moveUp) {
player.y -= 3;
}
if (moveDown) {
player.y += 3;
}
}
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function collides(p) {
if (player.x + player.size < p.x ||
p.x + p.size < player.x ||
player.y > p.y + p.size ||
p.y > player.y + player.size) {
return false;
} else {
return true;
}
}
function stop() {
clearInterval(interval_id);
}