From 8f7192fb74e289f33d2f80fa0decd9aad78a5078 Mon Sep 17 00:00:00 2001 From: Eugenio Marzo Date: Sun, 31 Jan 2021 11:38:03 +0100 Subject: [PATCH] start html5 development --- html5/index.html | 17 ++++ html5/kubeinvaders.js | 166 +++++++++++++++++++++++++++++++++++++++ html5/spaceship.png | Bin 0 -> 4286 bytes html5/sprite_invader.png | Bin 0 -> 11565 bytes 4 files changed, 183 insertions(+) create mode 100644 html5/index.html create mode 100644 html5/kubeinvaders.js create mode 100644 html5/spaceship.png create mode 100644 html5/sprite_invader.png diff --git a/html5/index.html b/html5/index.html new file mode 100644 index 0000000..f762264 --- /dev/null +++ b/html5/index.html @@ -0,0 +1,17 @@ + + + + + KubeInvaders + + + + + + + + + diff --git a/html5/kubeinvaders.js b/html5/kubeinvaders.js new file mode 100644 index 0000000..7ceb1b2 --- /dev/null +++ b/html5/kubeinvaders.js @@ -0,0 +1,166 @@ +var canvas = document.getElementById("myCanvas"); +var ctx = canvas.getContext("2d"); +var ballRadius = 7; +var x = canvas.width/2; +var y = canvas.height-30; +var dx = 2; +var dy = -2; +var spaceshipHeight = 60; +var paddleWidth = 60; +var spaceshipX = (canvas.width-paddleWidth)/2; +var spaceshipY = (canvas.height-spaceshipHeight)/2; + +var rightPressed = false; +var leftPressed = false; +var upPressed = false; +var downPressed = false; + +// Rocket Vars +var shot = false; +var rocketLaunched = false; +var rocketX = 0; +var rocketY = 0; + +function drawSpaceship() { + ctx.beginPath(); + ctx.arc(x, y, ballRadius, 0, Math.PI*2); + ctx.fillStyle = "#0095DD"; + ctx.fill(); + ctx.closePath(); +} + +function keyDownHandler(e) { + if(e.key == "Right" || e.key == "ArrowRight") { + rightPressed = true; + console.log("Go right"); + } + else if(e.key == "Left" || e.key == "ArrowLeft") { + leftPressed = true; + console.log("Go left"); + } + if(e.key == "Up" || e.key == "ArrowUp") { + upPressed = true; + console.log("Go up"); + console.log("Spaceship Y:" + spaceshipY); + } + else if(e.key == "Down" || e.key == "ArrowDown") { + downPressed = true; + console.log("Go down"); + console.log("Spaceship Y: " + spaceshipY); + } + else if(e.keyCode == 32) { + console.log("Shot"); + shot = true + } +} + +function keyUpHandler(e) { + if(e.key == "Right" || e.key == "ArrowRight") { + rightPressed = false; + } + else if(e.key == "Left" || e.key == "ArrowLeft") { + leftPressed = false; + } + else if(e.key == "Up" || e.key == "ArrowUp") { + upPressed = false; + } + else if(e.key == "Down" || e.key == "ArrowDown") { + downPressed = false; + } +} + +document.addEventListener("keydown", keyDownHandler, false); +document.addEventListener("keyup", keyUpHandler, false); + +function drawAlien() { + var image = new Image(); // Image constructor + image.src = './spaceship.png'; + ctx.drawImage(image, spaceshipX, spaceshipY, 60, 60); + ctx.closePath(); +} + +function drawRocket() { + ctx.beginPath(); + ctx.arc(rocketX, rocketY, ballRadius, 0, Math.PI*2); + ctx.fillStyle = "#0095DD"; + ctx.fill(); + ctx.closePath(); + console.log(rocketY); + if(shot && rocketLaunched) { + if (rocketY < 0){ + console.log("Rocket arrived to the end of canvas"); + shot = false; + rocketLaunched = false; + } + else { + rocketY = rocketY -= 7; + } + } + else { + rocketX = spaceshipX + (paddleWidth / 2); + rocketY = spaceshipY; + rocketLaunched = true + } +} + +function drawSpaceship() { + var image = new Image(); // Image constructor + image.src = './spaceship.png'; + ctx.drawImage(image, spaceshipX, spaceshipY, 60, 60); + ctx.closePath(); +} + +function drawBullet() { + var image = new Image(); // Image constructor + image.src = './spaceship.png'; + ctx.drawImage(image, spaceshipX, spaceshipY, 60, 60); + ctx.closePath(); +} + +function draw() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + drawSpaceship(); + + if (shot) { + drawRocket(); + } + + if(x + dx > canvas.width-ballRadius || x + dx < ballRadius) { + dx = -dx; + } + if(y + dy > canvas.height-ballRadius || y + dy < ballRadius) { + dy = -dy; + } + + if(rightPressed) { + spaceshipX += 4; + if (spaceshipX + paddleWidth > canvas.width){ + spaceshipX = canvas.width - paddleWidth; + } + } + else if(leftPressed) { + spaceshipX -= 4; + if (spaceshipX < 0){ + spaceshipX = 0; + } + } + + if(upPressed) { + spaceshipY -= 4; + if (spaceshipY < 0){ + spaceshipY = 0; + } + } + + else if(downPressed) { + spaceshipY += 4; + if (spaceshipY + spaceshipHeight > canvas.height){ + spaceshipY = canvas.height - spaceshipHeight; + } + } + + //x += dx; + //y += dy; +} + +setInterval(draw, 10); \ No newline at end of file diff --git a/html5/spaceship.png b/html5/spaceship.png new file mode 100644 index 0000000000000000000000000000000000000000..45c8b695c0ab80062e2961c9a60b782f879e977f GIT binary patch literal 4286 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 WF8PeS@!G!{3m|k%wBKksME@VYFX>qT literal 0 HcmV?d00001 diff --git a/html5/sprite_invader.png b/html5/sprite_invader.png new file mode 100644 index 0000000000000000000000000000000000000000..c22c5983f1e5e1411d4b976c352de32e7259fec1 GIT binary patch literal 11565 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 literal 0 HcmV?d00001