<!DOCTYPE html>
<html>
<head>
<style>
body {background-color: Plum;}
canvas{ border: 2px solid black;}
</style>
</head>
<body>
<img id="link1" src="link1 (2).png" alt="Link1" style="display:none">
<img id="link2" src="link2 (2).png" alt="Link2" style="display:none">
<img id="grass1" src="grass1.png" alt="Link2" style="display:none">
<img id="grass2" src="grass2.png" alt="Link2" style="display:none">
<img id="grass3" src="grass3.png" alt="Link2" style="display:none">
<img id="grass4" src="grass4.png" alt="Link2" style="display:none">
<img id="rock1" src="rock1.png" alt="Link2" style="display:none">
<canvas id = "game"></canvas>
<script>
var Key = {
_pressed: {},
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
isDown: function(keyCode){
return this._pressed[keyCode];
},
onKeydown: function(event) {
this._pressed[event.keyCode] = true;
},
onKeyup: function(event) {
delete this._pressed[event.keyCode];
}
};
window.addEventListener('keyup', function(event) {Key.onKeyup(event); }, false);
window.addEventListener('keydown', function(event) {Key.onKeydown(event); }, false);
var OBSTACLES = [
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,1,1,0,0,0,0,0,0,0,0,0,0],
[0,1,0,1,0,0,1,0,0,0,0,0,0,0],
[0,1,1,1,0,1,0,1,0,0,0,0,0,0],
[0,1,0,1,0,1,1,1,0,0,0,0,0,0],
[0,1,1,1,0,1,0,1,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,1]
];
var canvas = document.getElementById('game');
canvas.width = 1400; //window.innerWidth;
canvas.height =900; //window.innerHeight;
var grid = 100;
var player_width = document.getElementById("link1").width;
var player_height = document.getElementById("link1").height;
//var player_width = document.getElementById("rock1").width;
//var player_height = document.getElementById("rock1").height;
console.log(player_width, player_height);
function isCollidedOb(x,y,width,height,obarray){
upperleft = [[Math.floor(y/grid)],[Math.floor(x/grid)]];
lowerleft = [[Math.floor((y+height)/grid)],[Math.floor((x)/grid)]];
upperright = [[Math.floor((y)/grid)],[Math.floor((x+width)/grid)]];
lowerright = [[Math.floor((y+height)/grid)],[Math.floor((x+width)/grid)]];
console.log(upperleft[0],lowerleft,upperright[0],lowerright);
if(obarray[upperleft[0]][upperleft[1]] || obarray[lowerleft[0]][lowerleft[1]] || obarray[upperright[0]][upperright[1]] || obarray[lowerright[0]][lowerright[1]]){
return true;
}
return false;
}
function drawObs(obarray,grid){
for (let i = 0; i < obarray.length; i++) {
for (let j = 0; j < obarray[i].length; j++) {
if (obarray[i][j]){
ctx.drawImage(rock1,j*grid,i*grid);
}
}
}
}
var x = 50;
var y = 50;
var toggle = 1;
var grass1 = document.getElementById("grass1");
var rock1 = document.getElementById("rock1");
var ctx = canvas.getContext('2d');
var goalX = Math.random() * window.innerWidth;
var goalY = Math.random() * window.innerHeight;
var playerSize = 50;
var goalSize = 15;
var speed = 3;
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "rgb(24, 255, 0)";
ctx.fillRect(0, 0, canvas.width, canvas.height);
drawObs(OBSTACLES,grid);
ctx.drawImage(grass1, 200, 200);
//MOVE UP
if(Key.isDown(Key.UP)){
toggle += 1;
if(y < 0){
y= canvas.height-player_height;
}
if(!isCollidedOb(x,Math.abs(y-speed),player_width,player_height,OBSTACLES)){
y-=speed;
}
}
//MOVE DOWN
if(Key.isDown(Key.DOWN)){
toggle += 1;
if(y > canvas.height){
y= y%canvas.height;
}
if(!isCollidedOb(x,y+speed,player_width,player_height,OBSTACLES)){
y+=speed;
}
}
//MOVE LEFT
if(Key.isDown(Key.LEFT)){
toggle += 1;
if(x < 0){
x = canvas.width-player_width;
}
if(!isCollidedOb(x-speed,y,player_width,player_height,OBSTACLES)){
x-=speed;
}
}
//MOVE RIGHT
if(Key.isDown(Key.RIGHT)){
toggle += 1;
if(x > canvas.width){
x= x%canvas.width;
}
if(!isCollidedOb(x+speed,y,player_width,player_height,OBSTACLES)){
x+=speed;
}
}
if ((Math.abs(x-goalX))**2 + (Math.abs(y-goalY))**2 < (playerSize+goalSize)**2){
//playerSize += 5;
goalX = Math.random() * canvas.width;
goalY = Math.random() * canvas.height;
}
//var character = new Path2D();
////////////////////////////////////////////////////////////////////
//var character = new Image();
//toggle += 1;
toggle %= 100;
if(toggle > 50){
var character = document.getElementById("link1");
//character.src = document.getElementById("link1");
} else {
//character.src = document.getElementById("link2");}
var character = document.getElementById("link2");}
//character.addEventListener('load', function() {
// execute drawImage statements here
ctx.drawImage(character, x, y);
var goal = new Path2D();
goal.arc(goalX, goalY, goalSize, 0, 2 * Math.PI);
ctx.fillStyle = "#FF0000"
//ctx.fill(character);
ctx.fill(goal)
}
setInterval(draw, 10);
</script>
</body>
</html>