diff --git a/graphsearch.py b/graphsearch.py index 7827098..43f9cc4 100644 --- a/graphsearch.py +++ b/graphsearch.py @@ -250,7 +250,7 @@ class BFS: result = BFS.breadth_first_graph_search(problem) print(result) - #return result + return result #print(BFS.print_node_state(result)) @staticmethod diff --git a/main.py b/main.py index 46b2ff8..5e1804e 100644 --- a/main.py +++ b/main.py @@ -43,13 +43,13 @@ class Game: if tile == "#": Wall(self, col, row) if tile == '>': - self.player = Player(self, col, row) + self.player = Player(self, col, row, Direction.Right.name) if tile == '^': - self.player = Player(self, col, row) + self.player = Player(self, col, row, Direction.Up.name) if tile == '<': - self.player = Player(self, col, row) + self.player = Player(self, col, row, Direction.Left.name) if tile == 'v': - self.player = Player(self, col, row) + self.player = Player(self, col, row. Direction.Down.name) def run(self): @@ -90,21 +90,40 @@ class Game: if event.key == pg.K_ESCAPE: self.quit() if event.key == pg.K_LEFT: - self.player.move(dx=-1, direction='Left') + self.player.move(dx=0, move='Left') if event.key == pg.K_RIGHT: - self.player.move(dx=1, direction='Right') + self.player.move(dx=0, move='Right') if event.key == pg.K_UP: - self.player.move(dy=-1, direction='Up') - if event.key == pg.K_DOWN: - self.player.move(dy=1, direction='Down') + self.player.move(dy=0, move='Forward') if event.key == pg.K_F2 and self.wentyl_bezpieczenstwa == 0: self.player.maze.run() self.player.parse_maze_moves() self.i_like_to_move_it() self.wentyl_bezpieczenstwa = 1 - if event.key == pg.K_F3: - BFS.run() + if event.key == pg.K_F3 and self.wentyl_bezpieczenstwa == 0: + player_moves = BFS.run() + self.graph_move(player_moves) + self.wentyl_bezpieczenstwa = 1 + + + def graph_move(self, moves): + for i in moves: + if i == 'Right': + self.player.move(dx=0, move='Right') + self.update() + self.draw() + pg.time.delay(250) + if i == 'Left': + self.player.move(dx=0, move='Left') + self.update() + self.draw() + pg.time.delay(250) + if i == 'Forward': + self.player.move(dx=0, move='Forward') + self.update() + self.draw() + pg.time.delay(250) def i_like_to_move_it(self): diff --git a/sprites.py b/sprites.py index 5433ebc..2ca7817 100644 --- a/sprites.py +++ b/sprites.py @@ -23,63 +23,72 @@ class Player(pg.sprite.Sprite): self.maze = Maze() self.moves = '' - def move(self, dx=0, dy=0, direction = ''): - if direction == self.direction: + def set_direction(self, direction): + self.direction = direction + + def move(self, dx=0, dy=0, move = ''): + if move == Moves.Right.name: if self.direction == Direction.Right.name: - if dx > 0: - if self.check_border(dx): - if not self.collide_with_walls(dx): - if self.collide_with_mines(dx): - #ctypes.windll.user32.MessageBoxW(0, "Mine Ahead!", "Warning", 1) - print("Mine Ahead!") - self.x += dx - else: - self.x += dx + self.direction = Direction.Down.name + elif self.direction == Direction.Down.name: + self.direction = Direction.Left.name + elif self.direction == Direction.Left.name: + self.direction = Direction.Up.name + elif self.direction == Direction.Up.name: + self.direction = Direction.Right.name + elif move == Moves.Left.name: + if self.direction == Direction.Right.name: + self.direction = Direction.Up.name + elif self.direction == Direction.Down.name: + self.direction = Direction.Right.name + elif self.direction == Direction.Left.name: + self.direction = Direction.Down.name + elif self.direction == Direction.Up.name: + self.direction = Direction.Left.name + elif move == Moves.Forward.name: + if self.direction == Direction.Right.name: + if self.check_border(1): + if not self.collide_with_walls(1): + if self.collide_with_mines(1): + #ctypes.windll.user32.MessageBoxW(0, "Mine Ahead!", "Warning", 1) + print("Mine Ahead!") + self.x += 1 + else: + self.x += 1 if self.direction == Direction.Up.name: - if dy < 0: - if self.check_border(0, dy): - if not self.collide_with_walls(0, dy): - if self.collide_with_mines(0, dy): - #ctypes.windll.user32.MessageBoxW(0, "Mine Ahead!", "Warning", 1) - print("Mine Ahead!") - self.y += dy - else: - self.y += dy + if self.check_border(0, -1): + if not self.collide_with_walls(0, -1): + if self.collide_with_mines(0, -1): + #ctypes.windll.user32.MessageBoxW(0, "Mine Ahead!", "Warning", 1) + print("Mine Ahead!") + self.y += -1 + else: + self.y += -1 if self.direction == Direction.Down.name: - if dy > 0: - if self.check_border(0, dy): - if not self.collide_with_walls(0, dy): - if self.collide_with_mines(0, dy): - #ctypes.windll.user32.MessageBoxW(0, "Mine Ahead!", "Warning", 1) - print("Mine Ahead!") - self.y += dy - else: - self.y += dy + if self.check_border(0, 1): + if not self.collide_with_walls(0, 1): + if self.collide_with_mines(0, 1): + #ctypes.windll.user32.MessageBoxW(0, "Mine Ahead!", "Warning", 1) + print("Mine Ahead!") + self.y += 1 + else: + self.y += 1 - if self.direction == Direction.Left.name: - if dx < 0: - if self.check_border(dx): - if not self.collide_with_walls(dx): - if self.collide_with_mines(dx): - #ctypes.windll.user32.MessageBoxW(0, "Mine Ahead!", "Warning", 1) - print("Mine Ahead!") - self.x += dx - else: - self.x += dx + if self.direction == Direction.Left.name: + if self.check_border(-1): + if not self.collide_with_walls(-1): + if self.collide_with_mines(-1): + #ctypes.windll.user32.MessageBoxW(0, "Mine Ahead!", "Warning", 1) + print("Mine Ahead!") + self.x += -1 + else: + self.x += -1 + print("I move: " + str(self.direction)) - elif direction != self.direction: - self.direction = direction - print(self.direction) - """if self.direction == Direction.Up.name: - self.image = pg.transform.rotate(self.baseImage, 90) - if self.direction == Direction.Right.name: - self.image == pg.transform.rotate(self.baseImage, 360) - if self.direction == Direction.Down.name: - self.image == pg.transform.rotate(self.baseImage, -90) - if self.direction == Direction.Left.name: - self.image == pg.transform.rotate(self.baseImage, -180)""" + print("My direction is: " + str(self.direction)) + def check_border(self, dx=0, dy=0): if (self.x + dx) < 0 or (self.y + dy) < 0 or (self.x + dx) >= MAP_SIZE or (self.y + dy) >= MAP_SIZE : @@ -187,6 +196,11 @@ class Direction(enum.Enum): Down = 3; Right = 4; +class Moves(enum.Enum): + Left = 1 + Right = 2 + Forward = 3 + class Mine(pg.sprite.Sprite): def __init__(self, game, x, y):