-
Notifications
You must be signed in to change notification settings - Fork 0
/
fantasma.c
89 lines (65 loc) · 1.87 KB
/
fantasma.c
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
struct Fantasma {
float x;
float y;
float vx;
float vy;
Texture2D textura;
int think_1;
int think_2;
int think_3;
int think_4;
char letra;
};
struct Fantasma updateFantasma(struct Fantasma fantasma) {
if (fantasma.letra == 'f') {
fantasma.textura = phantonF;
}
if (fantasma.letra == 'r') {
fantasma.textura = phantonR;
}
if (fantasma.letra == 'a') {
fantasma.textura = phantonA;
}
DrawTexture(fantasma.textura, marginX + fantasma.x * BLOCKSIZE, marginY + fantasma.y * BLOCKSIZE, WHITE);
fantasma.x += fantasma.vx;
fantasma.y += fantasma.vy;
return fantasma;
}
struct Fantasma updateFantasmaColision(struct Fantasma fantasma, int x, int y) {
// Colision
if ((round(fantasma.x) == x) && (round(fantasma.y) == y)) {
if (map[(int) round(fantasma.x - 0.5) + 1][y] == 1) {
fantasma.x -= 0.1;
fantasma.vx = 0;
}
if (map[(int) round(fantasma.x + 0.5) - 1][y] == 1) {
fantasma.x += 0.1;
fantasma.vx = 0;
}
if (map[x][(int) round(fantasma.y - 0.5) + 1] == 1) {
fantasma.y -= 0.1;
fantasma.vy = 0;
}
if (map[x][(int) round(fantasma.y + 0.5) - 1] == 1) {
fantasma.y += 0.1;
fantasma.vy = 0;
}
// AI
if (rand() % 20 == 2) {
int probabilidad = rand() % 4 + 1;
fantasma.think_1 = 0;
fantasma.think_2 = 0;
fantasma.think_3 = 0;
fantasma.think_4 = 0;
if (probabilidad == 1) fantasma.think_1 = 1;
if (probabilidad == 2) fantasma.think_2 = 1;
if (probabilidad == 3) fantasma.think_3 = 1;
if (probabilidad == 4) fantasma.think_4 = 1;
}
if (fantasma.think_1) fantasma.vx = 0.1;
if (fantasma.think_2) fantasma.vx = -0.1;
if (fantasma.think_3) fantasma.vy = 0.1;
if (fantasma.think_4) fantasma.vy = -0.1;
}
return fantasma;
}