-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsquare.js
86 lines (72 loc) · 2.02 KB
/
square.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
// Atividade 3 da Matéria PLIA
// Aluno: Samuel Gadiel de Ávila
// Matricula: 11721EAU005
class Square {
constructor(x, y) {
this.x = x;
this.y = y;
this.neighbors = [];
this.previous = undefined;
this.fCost = 0;
this.gCost = 0;
this.hCost = 0;
this.isWall = false;
}
show(colour) {
this.isWall ? fill(100, 100, 100) : fill(colour);
rect(this.x, this.y, cellwidth, cellHeight);
// fill(0);
// textAlign(CENTER, CENTER);
// textSize(12);
// text(this.fCost, this.x, this.y, cellwidth, cellHeight);
}
location = () => [this.x, this.y]
// Adiciona os vizinhos
addNeighbors(grid) {
let xIndex = this.x / cellwidth;
let yIndex = this.y / cellHeight;
if (xIndex < cols - 1) {
if (!grid[xIndex + 1][yIndex].isWall) {
this.neighbors.push(grid[xIndex + 1][yIndex])
}
}
if (xIndex > 0) {
if (!grid[xIndex - 1][yIndex].isWall) {
this.neighbors.push(grid[xIndex - 1][yIndex])
}
}
if (yIndex < rows - 1) {
if (!grid[xIndex][yIndex + 1].isWall) {
this.neighbors.push(grid[xIndex][yIndex + 1])
}
}
if (yIndex > 0) {
if (!grid[xIndex][yIndex - 1].isWall) {
this.neighbors.push(grid[xIndex][yIndex - 1])
}
}
// Diagonais
if (allowDiagonals) {
if ((xIndex < cols - 1) && (yIndex < rows - 1)) {
if (!grid[xIndex + 1][yIndex + 1].isWall) {
this.neighbors.push(grid[xIndex + 1][yIndex + 1])
}
}
if ((xIndex < cols - 1) && (yIndex > 0)) {
if (!grid[xIndex + 1][yIndex - 1].isWall) {
this.neighbors.push(grid[xIndex + 1][yIndex - 1])
}
}
if ((yIndex < rows - 1) && (xIndex > 0)) {
if (!grid[xIndex - 1][yIndex + 1].isWall) {
this.neighbors.push(grid[xIndex - 1][yIndex + 1])
}
}
if ((xIndex > 0) && yIndex > 0) {
if (!grid[xIndex - 1][yIndex - 1].isWall) {
this.neighbors.push(grid[xIndex - 1][yIndex - 1])
}
}
}
}
}