From af42c841862a607850be57d6557b008048d8828e Mon Sep 17 00:00:00 2001 From: Wiktor Szynaka Date: Sat, 13 May 2023 19:30:00 +0200 Subject: [PATCH] speed bumps --- bfs.py | 2 +- city.py | 24 ++++++++++++++++++++++-- gridCellType.py | 3 ++- imgs/speed_bump.png | Bin 0 -> 293 bytes movement.py | 2 ++ speedBump.py | 13 +++++++++++++ startup.py | 11 +++++++++++ 7 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 imgs/speed_bump.png create mode 100644 speedBump.py diff --git a/bfs.py b/bfs.py index 2c7c646..12c09f4 100644 --- a/bfs.py +++ b/bfs.py @@ -90,6 +90,6 @@ def is_state_success(state: AgentState, grid: Dict[Tuple[int, int], GridCellType def is_state_valid(state: AgentState, grid: Dict[Tuple[int, int], GridCellType]) -> bool: try: - return grid[state.position] == GridCellType.STREET_HORIZONTAL or grid[state.position] == GridCellType.STREET_VERTICAL + return grid[state.position] == GridCellType.STREET_HORIZONTAL or grid[state.position] == GridCellType.STREET_VERTICAL or grid[state.position] == GridCellType.SPEED_BUMP except: return False \ No newline at end of file diff --git a/city.py b/city.py index b16c6ab..7360207 100644 --- a/city.py +++ b/city.py @@ -1,5 +1,6 @@ from typing import List from garbageCan import GarbageCan +from speedBump import SpeedBump from street import Street from gameContext import GameContext @@ -10,24 +11,39 @@ class Node: def __init__(self, id: int, can: GarbageCan) -> None: self.id self.can = can - + +class Bump: + speedBump: SpeedBump + id: int + + def __init__(self, id: int, bump: SpeedBump) -> None: + self.id + self.bump = bump + + class City: nodes: List[GarbageCan] + bumps: List[SpeedBump] streets: List[Street] def __init__(self) -> None: self.nodes = [] self.streets = [] + self.bumps = [] def add_node(self, node: GarbageCan) -> None: self.nodes.append(node) def add_street(self, street: Street) -> None: self.streets.append(street) + + def add_bump(self, bump: SpeedBump) -> None: + self.streets.append(bump) def render_city(self, game_context: GameContext) -> None: self._render_streets(game_context) self._render_nodes(game_context) + self._render_bumps(game_context) def _render_streets(self, game_context: GameContext) -> None: for street in self.streets: @@ -35,4 +51,8 @@ class City: def _render_nodes(self, game_context: GameContext) -> None: for node in self.nodes: - node.render(game_context) \ No newline at end of file + node.render(game_context) + + def _render_bumps(self, game_context: GameContext) -> None: + for bump in self.bumps: + bump.render(game_context) \ No newline at end of file diff --git a/gridCellType.py b/gridCellType.py index fd88aab..f8a637c 100644 --- a/gridCellType.py +++ b/gridCellType.py @@ -6,4 +6,5 @@ class GridCellType(Enum): STREET_HORIZONTAL = 2 GARBAGE_CAN = 3 VISITED_GARBAGE_CAN = 4 - LANDFILL = 5 \ No newline at end of file + LANDFILL = 5 + SPEED_BUMP = 6 \ No newline at end of file diff --git a/imgs/speed_bump.png b/imgs/speed_bump.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7114c9c40e72af9f18c211613a4c3328f061a7 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1SGcvS$+jljKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!Cjs%jv*f2d(S&^9Wmf>zIgBdj^f5Eu1YMY z^WHc-Ul{w5f3Mq%^0n2+g#*2kCFgax-4c7$`C_SIyZR%Q+~|)kGRty>{ayY%w44yO zW3tJPfIUalc=tV>rm^&(_;aD&Egu7QE_xqs&$RHl?Re2sYW0K88%wnLKe$Y}v`ySb z@Tv*eu-q>7MRSjZ*$B30zBz0%{YUk$pT6b)H@VDWi|3qvW68nocZ8Oj{CE_zXrh^2 jmugk!4+GxWUnI=UBTYolswVFQ`hvmJ)z4*}Q$iB}|DJVg literal 0 HcmV?d00001 diff --git a/movement.py b/movement.py index 8b8fe07..8cee448 100644 --- a/movement.py +++ b/movement.py @@ -38,6 +38,8 @@ def move_dust_car(actions: list[AgentActionType], game_context: GameContext) -> game_context.render_in_cell(street_position, "imgs/street_horizontal.png") elif game_context.grid[street_position] == GridCellType.STREET_VERTICAL: game_context.render_in_cell(street_position, "imgs/street_vertical.png") + elif game_context.grid[street_position] == GridCellType.SPEED_BUMP: + game_context.render_in_cell(street_position, "imgs/speed_bump.png") pygame.display.update() time.sleep(0.15) diff --git a/speedBump.py b/speedBump.py new file mode 100644 index 0000000..07119b8 --- /dev/null +++ b/speedBump.py @@ -0,0 +1,13 @@ +from typing import List, Tuple +from gameContext import GameContext +from gridCellType import GridCellType + +class SpeedBump: + position: Tuple[int, int] + + def __init__(self, position: Tuple[int, int]) -> None: + self.position = position + + def render(self, game_context: GameContext) -> None: + game_context.render_in_cell(self.position, "imgs/speed_bump.png") + game_context.grid[self.position] = GridCellType.SPEED_BUMP \ No newline at end of file diff --git a/startup.py b/startup.py index f5b7279..de8657b 100644 --- a/startup.py +++ b/startup.py @@ -6,6 +6,7 @@ from typing import Tuple, List from street import Street, StreetType from garbageTruck import GarbageTruck from garbageCan import GarbageCan +from speedBump import SpeedBump from landfill import Landfill @@ -30,10 +31,13 @@ def create_city() -> City: city: City = City() streets = create_streets() trashcans = create_trashcans() + bumps = create_speed_bumps() for s in streets: city.add_street(s) for t in trashcans: city.add_node(t) + for b in bumps: + city.add_bump(b) return city def create_streets() -> List[Street]: @@ -61,6 +65,13 @@ def create_trashcans() -> List[GarbageCan]: trashcans.append(GarbageCan((26, 4))) return trashcans +def create_speed_bumps() -> List[SpeedBump]: + bumps = [] + bumps.append(SpeedBump((10, 10))) + bumps.append(SpeedBump((12, 16))) + return bumps + + def _create_landfill(game_context: GameContext) -> None: landfil_position = (23,24) landfill = Landfill(landfil_position)