|
|
@ -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> |