<script>
							 | 
						|
								    
							 | 
						|
								    //5-25-17
							 | 
						|
								    //Jrtechs is the boss man
							 | 
						|
								    
							 | 
						|
								    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 = 800;
							 | 
						|
								        
							 | 
						|
								        var height = 800;
							 | 
						|
								        
							 | 
						|
								        canvas.style.textAligh = 'center';
							 | 
						|
								        
							 | 
						|
								        var context = canvas.getContext('2d');
							 | 
						|
								        
							 | 
						|
								        var bullets = [];
							 | 
						|
								        
							 | 
						|
								        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
							 | 
						|
								        //
							 | 
						|
								        //bullet class
							 | 
						|
								        var Bullet = function(dir, x, y)
							 | 
						|
								        {
							 | 
						|
								            //console.log(dir + " " + x + " " + y);
							 | 
						|
								            
							 | 
						|
								            this.dir = dir;
							 | 
						|
								            
							 | 
						|
								            this.x = x;
							 | 
						|
								            
							 | 
						|
								            this.y = y;
							 | 
						|
								            
							 | 
						|
								            this.speed = 5;
							 | 
						|
								            
							 | 
						|
								            this.width = 10;
							 | 
						|
								            this.height =10;
							 | 
						|
								            
							 | 
						|
								            this.move = function()
							 | 
						|
								            {
							 | 
						|
								                
							 | 
						|
								                //console.log("move");
							 | 
						|
								                this.x += this.speed * Math.sin(this.dir);
							 | 
						|
								                
							 | 
						|
								                this.y += this.speed * Math.cos(this.dir);
							 | 
						|
								            }
							 | 
						|
								            
							 | 
						|
								            this.render = function()
							 | 
						|
								            {
							 | 
						|
								                context.fillStyle = "rgba(255, 0, 0 , 1)"; //green
							 | 
						|
								                context.beginPath();
							 | 
						|
								                context.arc(this.x,this.y,this.width,0,2*Math.PI);
							 | 
						|
								                context.fill();
							 | 
						|
								                //console.log(this.x);
							 | 
						|
								                
							 | 
						|
								            }
							 | 
						|
								            
							 | 
						|
								        }
							 | 
						|
								        //array of bullets
							 | 
						|
								        
							 | 
						|
								        
							 | 
						|
								        //bullets[0] = new Bullet(Math.PI, 100, 100);
							 | 
						|
								        
							 | 
						|
								        
							 | 
						|
								        var Player = function(x,y)
							 | 
						|
								        {
							 | 
						|
								            this.x = width/2;
							 | 
						|
								            this.y = height/2;
							 | 
						|
								            
							 | 
						|
								            this.width = 10;
							 | 
						|
								            this.height = 10;
							 | 
						|
								            
							 | 
						|
								            this.speed = 4;
							 | 
						|
								            
							 | 
						|
								            this.dir = Math.PI;
							 | 
						|
								            
							 | 
						|
								            this.dirSpeed = 10;
							 | 
						|
								            
							 | 
						|
								
							 | 
						|
								            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.dir += this.dirSpeed * Math.PI / 360; 
							 | 
						|
								                    }
							 | 
						|
								                    else if(value == 39)
							 | 
						|
								                    {
							 | 
						|
								                        this.dir -= this.dirSpeed * Math.PI / 360; 
							 | 
						|
								                    }
							 | 
						|
								                    else if(value == 38) // up
							 | 
						|
								                    {
							 | 
						|
								                        this.x += this.speed * Math.sin(this.dir);
							 | 
						|
								                        this.y += this.speed * Math.cos(this.dir);
							 | 
						|
								                    }
							 | 
						|
								                    else if(value == 40) //down
							 | 
						|
								                    {
							 | 
						|
								                        this.x -= this.speed * Math.sin(this.dir);
							 | 
						|
								                        this.y -= this.speed * Math.cos(this.dir);
							 | 
						|
								                    }
							 | 
						|
								                    else if(value == 32) //shoot
							 | 
						|
								                    {
							 | 
						|
								                        this.shoot();
							 | 
						|
								                    }
							 | 
						|
								                }
							 | 
						|
								                
							 | 
						|
								                //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.width)
							 | 
						|
								                    this.x -= this.speed;
							 | 
						|
								
							 | 
						|
								                if(this.y < 0)
							 | 
						|
								                    this.y += this.speed;
							 | 
						|
								                else if(this.y > height)
							 | 
						|
								                    this.y -= this.speed;
							 | 
						|
								            }
							 | 
						|
								            
							 | 
						|
								            this.shoot = function()
							 | 
						|
								            {
							 | 
						|
								                var dimmed = false;
							 | 
						|
								                
							 | 
						|
								                for(i = 0; i> bullets.length; i++)
							 | 
						|
								                {
							 | 
						|
								                    if(bullets[i] == -1)
							 | 
						|
								                    {
							 | 
						|
								                        dimmed = true;
							 | 
						|
								                        bullets[i] = new Bullet(this.dir, this.x, this.y);
							 | 
						|
								                    }
							 | 
						|
								                }
							 | 
						|
								                if(dimmed == false)
							 | 
						|
								                    bullets.push(new Bullet(this.dir, this.x, this.y));
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        //player object
							 | 
						|
								        var p = new Player(350, 850);
							 | 
						|
								
							 | 
						|
								        //object that falls from the sky
							 | 
						|
								        var Astroid = function(size)
							 | 
						|
								        {
							 | 
						|
								            
							 | 
						|
								            this.width = 15;
							 | 
						|
								            this.height = 15;
							 | 
						|
								            
							 | 
						|
								            this.dir = 2 * Math.PI * Math.random()
							 | 
						|
								            
							 | 
						|
								            this.size = size;
							 | 
						|
								            
							 | 
						|
								            var temp = getRandomIntInclusive(0, width);
							 | 
						|
								            var temp2 = getRandomIntInclusive(1, 4);
							 | 
						|
								            
							 | 
						|
								            if(temp2 == 1)
							 | 
						|
								            {
							 | 
						|
								                this.x = temp;
							 | 
						|
								                this.y = 0;
							 | 
						|
								            }
							 | 
						|
								            else if(temp2 == 2)
							 | 
						|
								            {
							 | 
						|
								                this.x = width;
							 | 
						|
								                this.y = temp;
							 | 
						|
								            }
							 | 
						|
								            else if(temp2 == 3)
							 | 
						|
								            {
							 | 
						|
								                this.y = height;
							 | 
						|
								                this.x = temp;
							 | 
						|
								            }
							 | 
						|
								            else
							 | 
						|
								            {
							 | 
						|
								                this.y = temp;
							 | 
						|
								                this.x = 0;
							 | 
						|
								            }
							 | 
						|
								            
							 | 
						|
								            this.speed = 2;
							 | 
						|
								
							 | 
						|
								            this.render = function()
							 | 
						|
								            {
							 | 
						|
								                context.fillStyle = "rgba(255, 255, 255 , 1)"; //green
							 | 
						|
								                context.beginPath();
							 | 
						|
								                context.arc(this.x,this.y,this.width,0,2*Math.PI);
							 | 
						|
								                context.fill();
							 | 
						|
								                
							 | 
						|
								            }
							 | 
						|
								            
							 | 
						|
								            this.move = function()
							 | 
						|
								            {
							 | 
						|
								                this.y += this.speed * Math.sin(this.dir);
							 | 
						|
								                this.x += this.speed *Math.cos(this.dir);
							 | 
						|
								                
							 | 
						|
								                //collision
							 | 
						|
								                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();
							 | 
						|
								            
							 | 
						|
								            for (var i = bullets.length; i--; )
							 | 
						|
								                if(bullets[i] != -1)
							 | 
						|
								                    bullets[i].render();
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        var update = function()
							 | 
						|
								        {
							 | 
						|
								            addAstroid();
							 | 
						|
								            p.move();
							 | 
						|
								
							 | 
						|
								            var halp = bullets.lenght
							 | 
						|
								
							 | 
						|
								            //console.log(halp);
							 | 
						|
								            //for (b = 0; b < bullets.lenght; b++)
							 | 
						|
								            //var b;
							 | 
						|
								
							 | 
						|
								            for (var i = bullets.length; i--; )
							 | 
						|
								            {
							 | 
						|
								                console.log("b");
							 | 
						|
								                if(bullets[i] != -1)
							 | 
						|
								                {
							 | 
						|
								                    
							 | 
						|
								                    if(bullets[i].move())
							 | 
						|
								                    {
							 | 
						|
								                        b = -1;
							 | 
						|
								                    }
							 | 
						|
								                }
							 | 
						|
								
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            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);
							 | 
						|
								                }
							 | 
						|
								            }
							 | 
						|
								            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>
							 |