back to scratko.xyz
aboutsummaryrefslogtreecommitdiff
path: root/pacman.c
diff options
context:
space:
mode:
Diffstat (limited to 'pacman.c')
-rw-r--r--pacman.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/pacman.c b/pacman.c
index c3225b2..5b5b50a 100644
--- a/pacman.c
+++ b/pacman.c
@@ -1,26 +1,28 @@
#include "field.h"
#include "ghosts.h"
#include "pac.h"
+#include "queue.h"
#include <ncurses.h>
#include <stdlib.h>
#include <unistd.h>
-enum {
+enum {
timeout_duration = 0,
sleep_duration = 190000,
key_escape = 27,
count_get_out_moves = 5
};
-static void pathfinder_stage(game_space field, struct ghost_type *red_ghost,
- struct ghost_type *pink_ghost,
+static void pathfinder_stage(game_space field, struct pacman pac,
+ struct ghost_type *red_ghost,
+ struct ghost_type *pink_ghost,
struct ghost_type *blue_ghost,
struct ghost_type *orange_ghost)
{
enum intersection_type intersection;
intersection = get_intersection(field, red_ghost);
if(intersection != direct_path)
- redirect(field, intersection, red_ghost, breadth_first_search);
+ redirect(field, intersection, red_ghost, pac, breadth_first_search);
}
int main()
@@ -33,6 +35,7 @@ int main()
stored_direction = none;
get_out_stage = count_get_out_moves;
initscr();
+ start_color();
cbreak();
noecho();
curs_set(0);
@@ -46,31 +49,27 @@ int main()
initialize_ghost(&blue_ghost, blue);
initialize_ghost(&orange_ghost, orange);
initialize_pac(&pac);
- display_ghosts_on_field(&red_ghost, &pink_ghost, &blue_ghost,
+ display_ghosts_on_field(&red_ghost, &pink_ghost, &blue_ghost,
&orange_ghost);
- display_character(pac.position.y, pac.position.x, 'C');
+ display_character(pac.position.y, pac.position.x, pac_char);
usleep(sleep_duration);
while((key = getch()) != key_escape) {
if(get_out_stage)
- pull_out_ghosts(&get_out_stage, &red_ghost, &pink_ghost,
+ pull_out_ghosts(&get_out_stage, &red_ghost, &pink_ghost,
&blue_ghost, &orange_ghost);
else
- pathfinder_stage(field, &red_ghost, &pink_ghost, &blue_ghost,
+ pathfinder_stage(field, pac, &red_ghost, &pink_ghost, &blue_ghost,
&orange_ghost);
- if(key != ERR)
+ if(key != ERR)
change_pac_direction(field, &pac, key, &stored_direction);
- else {
- if(stored_direction != none)
- check_remaining_direction(field, &pac, &stored_direction);
- else
- check_remaining_direction(field, &pac, NULL);
- }
- make_ghost_moves(field, &red_ghost, &pink_ghost, &blue_ghost,
+ else
+ check_remaining_direction(field, &pac, &stored_direction);
+ make_ghost_moves(field, &red_ghost, &pink_ghost, &blue_ghost,
&orange_ghost);
make_pac_move(field, &pac);
- display_ghosts_on_field(&red_ghost, &pink_ghost, &blue_ghost,
+ display_ghosts_on_field(&red_ghost, &pink_ghost, &blue_ghost,
&orange_ghost);
- display_character(pac.position.y, pac.position.x, 'C');
+ display_character(pac.position.y, pac.position.x, pac_char);
usleep(sleep_duration);
}
endwin();