-
Notifications
You must be signed in to change notification settings - Fork 0
/
food.ts
39 lines (36 loc) · 1.22 KB
/
food.ts
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
class Food {
// The position of the food, represented as coordinates on the canvas.
position: { x: number, y: number };
snake: Snake;
obstacles: Obstacle[];
constructor(_snake: Snake, _obstacles: Obstacle[]) {
this.snake = _snake;
this.obstacles = _obstacles;
this.position = this.randomPosition();
}
// The randomPosition function generates a random position for the food.
randomPosition() {
let position;
do {
position = {
x: Math.floor(Math.random() * 20) * 20,
y: Math.floor(Math.random() * 20) * 20
};
} while (this.positionOccupied(position));
return position;
}
// The positionOccupied function checks if a position is occupied by the snake.
positionOccupied(pos: { x: number, y: number }) {
for (let segment of this.snake.body) {
if (segment.x === pos.x && segment.y === pos.y) {
return true;
}
for (let obstacle of this.obstacles) {
if (obstacle.position.x === pos.x && obstacle.position.y === pos.y) {
return true;
}
}
}
return false;
}
}