| @ -0,0 +1,325 @@ | |||
| <script> | |||
| //5-25-17 | |||
| window.addEventListener("keydown", function(e) | |||
| { | |||
| // space and arrow keys | |||
| if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) | |||
| { | |||
| e.preventDefault(); | |||
| } | |||
| }, false); | |||
| window.onload = function() | |||
| { | |||
| var canvas = document.getElementById("canvas"); | |||
| var c = canvas.getContext('2d'); | |||
| c.fillStyle= "black"; | |||
| c.fillRect(0,0, canvas.width, canvas.height); | |||
| }; | |||
| //entire game | |||
| function playBF() | |||
| { | |||
| var animate = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) | |||
| { | |||
| window.setTimeout(callback, 1000 / 60) | |||
| }; | |||
| var canvas = document.getElementById("canvas"); | |||
| var width = 700; | |||
| var height = 700; | |||
| canvas.style.textAligh = 'center'; | |||
| var context = canvas.getContext('2d'); | |||
| var keysDown = {}; | |||
| //player variables; | |||
| var score = 0; | |||
| var alive = true; | |||
| //usefull function | |||
| function getRandomIntInclusive(min, max) | |||
| { | |||
| min = Math.ceil(min); | |||
| max = Math.floor(max); | |||
| return Math.floor(Math.random() * (max - min + 1)) + min; | |||
| } | |||
| //objects | |||
| var Player = function(x,y) | |||
| { | |||
| this.x = 350 | |||
| this.y = 650; | |||
| this.width = 10; | |||
| this.height = 10; | |||
| this.speed = 4; | |||
| this.facing = 40; | |||
| this.updateDirection = function(key) | |||
| { | |||
| facing = key; | |||
| } | |||
| this.render = function() | |||
| { | |||
| context.fillStyle = "rgba(255, 255, 255, 1)"; //white | |||
| context.fillRect(this.x, this.y, this.width, this.height); | |||
| } | |||
| this.move = function() | |||
| { | |||
| for (var key in keysDown) | |||
| { | |||
| var value = Number(key); | |||
| if(value == 37) //left | |||
| { | |||
| this.x = this.x - this.speed; | |||
| } | |||
| else if(value == 39) | |||
| { | |||
| this.x = this.x + this.speed; | |||
| } | |||
| } | |||
| //collisions | |||
| for(i = 0; i < astroids.length; i++) | |||
| { | |||
| if(astroids[i] != -1) | |||
| { | |||
| bb = astroids[i]; | |||
| //if(Math.abs(bb.x - p.x) <= bb.width) | |||
| if(p.x > bb.x && p.x < bb.x + bb.width || p.x + p.width < bb.x + bb.width && p.x + p.width > bb.x) | |||
| { | |||
| if(p.y > bb.y && p.y < bb.y + bb.height || p.y + p.height < bb.y + bb.height && p.y + p.height > bb.y) | |||
| { | |||
| alive = false; | |||
| bb = -1; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| if(this.x < 0) | |||
| { | |||
| this.x += this.speed; | |||
| } | |||
| else if(this.x > width) | |||
| { | |||
| this.x -= this.speed; | |||
| } | |||
| } | |||
| } | |||
| //player object | |||
| var p = new Player(350, 850); | |||
| //object that falls from the sky | |||
| var Astroid = function(size) | |||
| { | |||
| this.width = 25; | |||
| this.height = 25; | |||
| this.dir = getRandomIntInclusive(0, 360); | |||
| this.size = size; | |||
| this.x = getRandomIntInclusive(0, width); | |||
| this.y = -this.height; | |||
| this.speed = 4; | |||
| this.render = function() | |||
| { | |||
| context.fillStyle = "rgba(255, 255, 255 , 1)"; //green | |||
| context.beginPath(); | |||
| context.arc(this.x,this.y,40,0,2*Math.PI); | |||
| context.fill(); | |||
| } | |||
| this.move = function() | |||
| { | |||
| this.y += this.speed; | |||
| if(this.y> height) | |||
| { | |||
| //remove bamboo from array | |||
| score++; | |||
| return true; | |||
| } | |||
| } | |||
| } | |||
| var astroids = []; | |||
| //draws all the objects | |||
| var render = function() | |||
| { | |||
| context.fillStyle = "rgba(0, 0,0 ,1)"; | |||
| context.fillRect(0,0, width, height); | |||
| context.fillStyle = "rgba(255, 255,255 ,1)"; | |||
| context.font = "20px Georgia"; | |||
| context.fillText("Score: " + score, 10, 25); | |||
| p.render(); | |||
| for(i= 0; i < astroids.length; i++) | |||
| { | |||
| if(astroids[i] != -1) | |||
| { | |||
| astroids[i].render(); | |||
| } | |||
| } | |||
| //console.log('render was called'); | |||
| //context.fillStyle = "rgba(0, 128, 0 ,1)"; //green | |||
| //context.fillRect(0, 0, 700, 700); | |||
| //console.log(context); | |||
| } | |||
| var update = function() | |||
| { | |||
| addAstroid(); | |||
| p.move(); | |||
| for (i = 0; i< astroids.length; i++) | |||
| { | |||
| if(astroids[i] != -1) | |||
| { | |||
| if(astroids[i].move()) | |||
| { | |||
| astroids[i] = -1; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| var count = 0; | |||
| var limit = 25; | |||
| var addAstroid = function() | |||
| { | |||
| count++; | |||
| if(count == limit) | |||
| { | |||
| count = 0; | |||
| var bnew = true; | |||
| for(i = 0; i < astroids.length; i++) | |||
| { | |||
| if(astroids[i] == -1) | |||
| { | |||
| astroids[i] = new Astroid(); | |||
| bnew = false; | |||
| } | |||
| } | |||
| if(bnew) | |||
| { | |||
| astroids.push(new Astroid()); | |||
| } | |||
| if(limit > 10) | |||
| { | |||
| limit --; | |||
| } | |||
| } | |||
| } | |||
| var sent; | |||
| var tic = function() | |||
| { | |||
| //console.log('tic was called'); | |||
| if(alive) | |||
| { | |||
| update(); | |||
| render(); | |||
| } | |||
| else | |||
| { | |||
| if(!sent) | |||
| { | |||
| context.fillStyle = "rgba(0, 0,0 ,1)"; | |||
| context.fillRect(0,0, width, height); | |||
| context.fillStyle = "rgba(255, 255,255 ,1)"; | |||
| context.font = "20px Georgia"; | |||
| context.fillText("You died with a score of: " + score, 250, 325); | |||
| //document.body.innerHTML += '<form id="dynForm" action="insertScore.php" method="post"><input type="hidden" name="game_new_score" value=true><input type="hidden" name="game" value=1><input type="hidden" name="user_id_score" value=<?php echo $_SESSION['user_id']; ?>><input type="hidden" name="score_validate" value=' + score + '></form>'; | |||
| //document.getElementById("dynForm").submit(); | |||
| //sent = true; | |||
| } | |||
| } | |||
| animate(tic); | |||
| } | |||
| window.addEventListener("keydown", function (event) | |||
| { | |||
| if(event.keyCode >=37 && event.keyCode <=40) | |||
| { | |||
| p.facing = event.keyCode; | |||
| } | |||
| keysDown[event.keyCode] = true; | |||
| }); | |||
| window.addEventListener("keyup", function (event) | |||
| { | |||
| delete keysDown[event.keyCode]; | |||
| }); | |||
| //tic(); | |||
| animate(tic); | |||
| } | |||
| </script> | |||
| <div><canvas id="canvas" width="700" height="700"></canvas></div> | |||
| <div><input type="submit" name="play" value="Play Game" onclick="this.blur();playBF()"/></div> | |||