From b9f720e0c785fc69db94b92bfc0bd281b3e9cff0 Mon Sep 17 00:00:00 2001 From: Adam Wojdyla Date: Mon, 23 Mar 2020 23:47:44 +0100 Subject: [PATCH 1/3] test --- .gitignore | 2 ++ kelner/main.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 73ffb59..1c69b2f 100644 --- a/.gitignore +++ b/.gitignore @@ -56,6 +56,8 @@ coverage.xml *.cover .hypothesis/ .pytest_cache/ +.idea +.idea/* # Translations *.mo diff --git a/kelner/main.py b/kelner/main.py index 0931ebd..f6d913f 100644 --- a/kelner/main.py +++ b/kelner/main.py @@ -1,4 +1,5 @@ import pygame + from src.components.GridBoard import GridBoard from src.components.Waiter import Waiter @@ -15,7 +16,7 @@ gridBoard = GridBoard(ScreenWidth, ScreenHeight, CellSize) #initialize waiter component waiter = Waiter(1, 1, 0, GridCountX - 1, 0, GridCountY - 1, CellSize) - +# #loop doRepaint = True running = True -- 2.20.1 From c39818df87321eec6047174c1120b47f2c86e83f Mon Sep 17 00:00:00 2001 From: = <=> Date: Mon, 27 Apr 2020 10:43:47 +0200 Subject: [PATCH 2/3] added idea to .gitignore --- .gitignore | 1 + .idea/ProjektAI.iml | 2 +- .idea/misc.xml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 73ffb59..b7646bf 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ share/python-wheels/ *.egg-info/ .installed.cfg *.egg +.idea /idea/workspace.xml MANIFEST diff --git a/.idea/ProjektAI.iml b/.idea/ProjektAI.iml index 341f107..53f2c69 100644 --- a/.idea/ProjektAI.iml +++ b/.idea/ProjektAI.iml @@ -2,7 +2,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 8e241c5..2edb3a9 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file -- 2.20.1 From c0f5a8f7f7257a36d7d6e9886753cdfedcd7d7fb Mon Sep 17 00:00:00 2001 From: = <=> Date: Mon, 27 Apr 2020 10:49:30 +0200 Subject: [PATCH 3/3] added BFS --- kelner/src/algorithms/BFS/BFS.py | 49 ++++++++++++++++++++++++++++ kelner/src/managers/WaiterManager.py | 3 ++ 2 files changed, 52 insertions(+) create mode 100644 kelner/src/algorithms/BFS/BFS.py diff --git a/kelner/src/algorithms/BFS/BFS.py b/kelner/src/algorithms/BFS/BFS.py new file mode 100644 index 0000000..ddc1d38 --- /dev/null +++ b/kelner/src/algorithms/BFS/BFS.py @@ -0,0 +1,49 @@ +import queue + + +class BFS: + def __init__(self, grid): + self.grid = grid + self.visited = [] + + def get_neighbors(self, node, grid): + dr = [-1, +1, 0, 0] + dc = [0, 0, +1, -1] + x = node[0] + y = node[1] + node = (x, y) + neighbors = [] + + for i in range(4): + new_col = x + dc[i] + new_row = y + dr[i] + node = (new_col, new_row) + + if 0 <= new_row < len(grid) and 0 <= new_col < len(grid[0]): + if (new_col, new_row) not in self.visited: + if grid[new_row][new_col] != 1: + neighbors.append((new_col, new_row)) + + return neighbors + + def find_path(self, start, end): + grid = self.grid + queue = [(start, [])] + + while len(queue) > 0: + node, path = queue.pop(0) + + path.append(node) + self.visited.append(node) + + if node == end: + if len(path) > 1: + path.pop(0) + return path + + adj_nodes = self.get_neighbors(node, grid) + for item in adj_nodes: + if item not in self.visited: + queue.append((item, path[:])) + + return None diff --git a/kelner/src/managers/WaiterManager.py b/kelner/src/managers/WaiterManager.py index 2240637..e75a9d6 100644 --- a/kelner/src/managers/WaiterManager.py +++ b/kelner/src/managers/WaiterManager.py @@ -3,6 +3,7 @@ import time import sys from kelner.src.components.Table import Status from kelner.src.algorithms.AStar.Finder import Finder +from kelner.src.algorithms.BFS.BFS import BFS # creates new thread @@ -20,11 +21,13 @@ class WaiterManager (threading.Thread): if tables: reservedPlaces = self.__drawableManager.getReservedPlaces(waiter) finder = Finder(reservedPlaces) + # bfs = BFS(reservedPlaces) origin = (waiter.getX(), waiter.getY()) for table in tables: targets = finder.getNeighbours((table.getX(), table.getY()), False) for target in targets: if target is not None: + # path = bfs.find_path(origin, target) path = finder.getPath(origin, target, True) if path: result = len(path) -- 2.20.1