-
Notifications
You must be signed in to change notification settings - Fork 3
/
putYellowGhost.c
119 lines (110 loc) · 4.61 KB
/
putYellowGhost.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include "pacman.h"
void putGhostYellow(t_pacman *pacman)
{
extern int map[H][W];
static int tmpPos = 0;
int tmp;
int lenClosest = INT_MAX;
int lenClosestFarest = 0;
pacman->ghostYellowMove = (t_pos){0, 0};
map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x + 0] = tmpPos;
if (map[pacman->ghostYellow.y + 1][pacman->ghostYellow.x + 0] != 2 &&
map[pacman->ghostYellow.y + 1][pacman->ghostYellow.x + 0] != 5 &&
map[pacman->ghostYellow.y + 1][pacman->ghostYellow.x + 0] != 6 &&
map[pacman->ghostYellow.y + 1][pacman->ghostYellow.x + 0] != 7)
{
if (pacman->eat == 0 && (tmp = sqrt(pow(pacman->ghostYellow.x - pacman->pac.x,2) + pow(pacman->ghostYellow.y + 1 - pacman->pac.y,2))) < lenClosest)
{
lenClosest = tmp;
pacman->ghostYellowMove = (t_pos) {0, 1};
tmpPos = map[pacman->ghostYellow.y + 1][pacman->ghostYellow.x + 0];
}
else if (pacman->eat != 0 && (tmp = sqrt(pow(pacman->ghostYellow.x - pacman->pac.x,2) + pow(pacman->ghostYellow.y + 1 - pacman->pac.y,2))) > lenClosestFarest)
{
lenClosestFarest = tmp;
pacman->ghostYellowMove = (t_pos) {0, 1};
tmpPos = map[pacman->ghostYellow.y + 1][pacman->ghostYellow.x + 0];
}
}
if (map[pacman->ghostYellow.y - 1][pacman->ghostYellow.x + 0] != 2 &&
map[pacman->ghostYellow.y - 1][pacman->ghostYellow.x + 0] != 5 &&
map[pacman->ghostYellow.y - 1][pacman->ghostYellow.x + 0] != 6 &&
map[pacman->ghostYellow.y - 1][pacman->ghostYellow.x + 0] != 7)
{
if (pacman->eat == 0 && (tmp = sqrt(pow(pacman->ghostYellow.x - pacman->pac.x,2) + pow(pacman->ghostYellow.y - 1 - pacman->pac.y,2))) < lenClosest)
{
lenClosest = tmp;
pacman->ghostYellowMove = (t_pos) {0, -1};
tmpPos = map[pacman->ghostYellow.y - 1][pacman->ghostYellow.x + 0];
}
else if (pacman->eat != 0 && (tmp = sqrt(pow(pacman->ghostYellow.x - pacman->pac.x,2) + pow(pacman->ghostYellow.y - 1 - pacman->pac.y,2))) > lenClosestFarest)
{
lenClosestFarest = tmp;
pacman->ghostYellowMove = (t_pos) {0, -1};
tmpPos = map[pacman->ghostYellow.y - 1][pacman->ghostYellow.x + 0];
}
}
if (map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x + 1] != 2 &&
map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x + 1] != 5 &&
map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x + 1] != 6 &&
map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x + 1] != 7)
{
if (pacman->eat == 0 && (tmp = sqrt(pow(pacman->ghostYellow.x + 1 - pacman->pac.x,2) + pow(pacman->ghostYellow.y - pacman->pac.y,2))) < lenClosest)
{
lenClosest = tmp;
pacman->ghostYellowMove = (t_pos) {1, 0};
tmpPos = map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x + 1];
}
else if (pacman->eat != 0 && (tmp = sqrt(pow(pacman->ghostYellow.x + 1 - pacman->pac.x,2) + pow(pacman->ghostYellow.y - pacman->pac.y,2))) > lenClosestFarest)
{
lenClosestFarest = tmp;
pacman->ghostYellowMove = (t_pos) {1, 0};
tmpPos = map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x + 1];
}
}
if (map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x - 1] != 2 &&
map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x - 1] != 5 &&
map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x - 1] != 6 &&
map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x - 1] != 7)
{
if (pacman->eat == 0 && (tmp = sqrt(pow(pacman->ghostYellow.x - 1 - pacman->pac.x,2) + pow(pacman->ghostYellow.y - pacman->pac.y,2))) < lenClosest)
{
lenClosest = tmp;
pacman->ghostYellowMove = (t_pos) {-1, 0};
tmpPos = map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x - 1];
}
else if (pacman->eat != 0 && (tmp = sqrt(pow(pacman->ghostYellow.x - 1 - pacman->pac.x,2) + pow(pacman->ghostYellow.y - pacman->pac.y,2))) > lenClosestFarest)
{
lenClosestFarest = tmp;
pacman->ghostYellowMove = (t_pos) {-1, 0};
tmpPos = map[pacman->ghostYellow.y + 0][pacman->ghostYellow.x - 1];
}
}
if (tmpPos == 3)
{
pacman->pacmanLives--;
if (pacman->pacmanLives == 0)
{
putTextMessage(pacman, "You lose");
SDL_RenderPresent(pacman->sdl.renderer);
SDL_Delay(1500);
exit(0);
}
map[pacman->pac.y][pacman->pac.x] = 0;
pacman->pac = (t_pos){17, 20};
pacman->pacMove = (t_pos){-1, 0};
pacman->ghostRed = (t_pos){6, 8};
pacman->ghostYellow = (t_pos){10, 10};
pacman->ghostBlue = (t_pos){1, 4};
pacman->ghostPink = (t_pos){16, 4};
putTextMessage(pacman, "GET READY");
SDL_RenderPresent(pacman->sdl.renderer);
sdlRenderClear(pacman);
SDL_Delay(1500);
tmpPos = 0;
}
pacman->ghostYellow.x += pacman->ghostYellowMove.x;
pacman->ghostYellow.y += pacman->ghostYellowMove.y;
map[pacman->ghostYellow.y][pacman->ghostYellow.x] = 8;
pacman->ghostYellowRect = (SDL_Rect){pacman->ghostYellow.x * 30, pacman->ghostYellow.y * 30, 30, 30};
}