-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
90 lines (79 loc) · 2.23 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
var canvas = document.getElementById('canvas');
var canvas2d = canvas.getContext('2d');
var tileSize = 20;
var score = 0;
var size = [canvas.height, canvas.width];
var snake = new Snake(Math.floor(size[0]/tileSize/2), Math.floor(size[1]/tileSize/2));
var foodController = new FoodController;
//sets fill to black
canvas2d.fillStyle = "#000000";
setInterval(function(){
foodController.generate(size[0]/tileSize, size[1]/tileSize);
}, 1000);
//call render every 0.25 second
setInterval(render, 100);
//place snake in middle
function render() {
//clear last frame
canvas2d.clearRect(0,0,size[0],size[1]);
snake.move();
foodController.foodList.forEach(function(currentFood){
if ((snake.pos[0][0] === currentFood[0]) && (snake.pos[0][1] === currentFood[1])) {
snake.grow();
var del = foodController.foodList.indexOf(currentFood);
foodController.foodList.splice(del, 1);
score += 100;
}
canvas2d.fillStyle = "#FF0000";
canvas2d.fillRect(currentFood[0]*tileSize, currentFood[1]*tileSize, tileSize, tileSize);
canvas2d.fillStyle = "#000000";
})
//draw each part of snake
snake.pos.forEach(function(currentPos){
//if inside frame
if ((currentPos[0] >= 0 && currentPos[0] < size[0]/tileSize) && (currentPos[1] >= 0 && currentPos[1] < size[1]/tileSize)){
canvas2d.fillRect(currentPos[0]*tileSize, currentPos[1]*tileSize, tileSize, tileSize);
} else {
//die
reset();
}
});
var i = 1;
snake.pos.forEach(function(currentPos){
if (i!=1){ //if not the head
if ((snake.pos[0][0] === currentPos[0]) && (snake.pos[0][1] === currentPos[1])){
//die
reset();
}
}
i++;
})
canvas2d.font = "18px Arial";
canvas2d.fillText("Score: " +score,5,15);
}
document.addEventListener('keypress', keyHandler);
/*Sjekker tastetrykk*/
function keyHandler (event){
switch(event.which) {
case 119:
snake.direction = 'up';
break;
case 115:
snake.direction = 'down';
break;
case 97:
snake.direction = 'left';
break;
case 100:
snake.direction = 'right';
break;
}
}
/* fjerner alle elementer i canvas
og starter på nytt */
function reset(){
snake.pos = [[Math.floor(size[0]/tileSize/2), Math.floor(size[1]/tileSize/2)]];
foodController.foodList = [];
score = 0;
canvas2d.clearRect(0,0,size[0], size[1]);
}