From 1e5a1b9254e418ccdd5a566c754aca8e4b8d33fd Mon Sep 17 00:00:00 2001 From: majkellll Date: Sat, 27 May 2023 13:16:41 +0200 Subject: [PATCH 1/4] filled each garbage can with 4 pieces of garbage --- garbage.py | 30 ++++++++++++++--- garbageCan.py | 4 ++- machine_learning/garbage_infill.csv | 29 ++++++++++++++++ machine_learning/training_data.csv | 52 ++++++++++++++++++++++++++++- startup.py | 28 ++++++++++++++-- 5 files changed, 134 insertions(+), 9 deletions(-) create mode 100644 machine_learning/garbage_infill.csv diff --git a/garbage.py b/garbage.py index 5769b4a..268f2b6 100644 --- a/garbage.py +++ b/garbage.py @@ -1,21 +1,43 @@ from enum import Enum -class GarbageType (Enum): + +class GarbageType(Enum): PAPER = 0, PLASTIC_AND_METAL = 1 GLASS = 3 BIO = 4 MIXED = 5 + class Garbage: img: str + shape: str + flexibility: str + does_smell: str + weight: str + size: str + color: str + softness: str + does_din: str - def __init__(self, img: str) -> None: + def __init__(self, img: str, shape: str, flexibility: str, does_smell: str, weight: str, size: str, color: str, softness: str, does_din: str) -> None: self.img = img + self.shape = shape + self.flexibility = flexibility + self.does_smell = does_smell + self.weight = weight + self.size = size + self.color = color + self.softness = softness + self.does_din = does_din -class RecognizedGarbage (Garbage): + def xxx(self): + return self.shape + + +class RecognizedGarbage(Garbage): garbage_type: GarbageType def __init__(self, src: Garbage, garbage_type: GarbageType) -> None: super().__init__(src.img) - self.garbage_type = garbage_type \ No newline at end of file + self.garbage_type = garbage_type diff --git a/garbageCan.py b/garbageCan.py index 7d6f361..e70a6ff 100644 --- a/garbageCan.py +++ b/garbageCan.py @@ -3,6 +3,7 @@ from typing import List, Tuple from gameContext import GameContext from gridCellType import GridCellType + class GarbageCan: position: Tuple[int, int] garbage: List[Garbage] @@ -19,6 +20,7 @@ class GarbageCan: def remove_garbage(self, garbage: Garbage) -> None: self.garbage.remove(garbage) + def render(self, game_context: GameContext) -> None: game_context.render_in_cell(self.position, "imgs/container.png") - game_context.grid[self.position] = GridCellType.GARBAGE_CAN \ No newline at end of file + game_context.grid[self.position] = GridCellType.GARBAGE_CAN diff --git a/machine_learning/garbage_infill.csv b/machine_learning/garbage_infill.csv new file mode 100644 index 0000000..a044a3f --- /dev/null +++ b/machine_learning/garbage_infill.csv @@ -0,0 +1,29 @@ +Shape,Flexibility,DoesSmell,Weight,Size,Color,Softness,DoesDin +Irregular,High,No,High,Medium,Dark,Low,Yes +Longitiudonal,Low,No,Low,Low,Light,Medium,Yes +Longitiudonal,Medium,No,Medium,Low,Dark,High,No +Longitiudonal,Low,No,Medium,Low,Dark,High,Yes +Round,Low,Yes,High,High,Transparent,High,Yes +Irregular,Medium,Yes,High,Low,Transparent,Medium,No +Longitiudonal,Medium,Yes,Low,High,Colorful,Medium,Yes +Longitiudonal,Low,No,Low,Medium,Dark,Medium,Yes +Flat,Medium,Yes,High,Low,Transparent,Low,Yes +Irregular,Medium,Yes,High,Medium,Dark,Low,No +Longitiudonal,High,No,Low,High,Colorful,Low,Yes +Round,Medium,No,Medium,Medium,Dark,Low,No +Longitiudonal,Medium,No,Medium,Medium,Transparent,High,No +Flat,Medium,Yes,Low,Low,Light,Medium,No +Flat,Medium,Yes,Medium,High,Light,Medium,No +Flat,Low,No,High,Low,Dark,High,No +Longitiudonal,Medium,Yes,High,High,Dark,Low,Yes +Flat,Low,Yes,Low,Low,Transparent,Low,No +Flat,Low,No,Medium,Low,Colorful,Low,No +Longitiudonal,Low,Yes,High,Medium,Transparent,Low,No +Longitiudonal,Low,No,Medium,High,Dark,Low,Yes +Irregular,Medium,No,Medium,Medium,Light,Low,Yes +Longitiudonal,High,No,High,High,Colorful,Low,No +Flat,Low,No,Low,Low,Dark,High,No +Flat,Low,Yes,Low,High,Dark,Low,Yes +Irregular,Medium,Yes,High,High,Dark,Low,No +Flat,High,No,High,Low,Dark,Medium,Yes +Longitiudonal,High,Yes,Low,Medium,Colorful,Low,Yes diff --git a/machine_learning/training_data.csv b/machine_learning/training_data.csv index 6eb7cbb..8005179 100644 --- a/machine_learning/training_data.csv +++ b/machine_learning/training_data.csv @@ -48,4 +48,54 @@ Irregular,Low,No,Low,Medium,Light,Medium,No,PAPER Flat,Low,No,High,Low,Dark,Low,No,PLASTIC_AND_METAL Irregular,Low,Yes,Low,Low,Transparent,Medium,Yes,MIXED Flat,Low,No,High,High,Light,Low,No,PLASTIC_AND_METAL -Longitiudonal,Medium,No,High,Medium,Dark,Low,Yes,PLASTIC_AND_METAL \ No newline at end of file +Longitiudonal,Medium,No,High,Medium,Dark,Low,Yes,PLASTIC_AND_METAL +Round,Low,Yes,High,High,Transparent,High,No,MIXED +Flat,Medium,No,Medium,Low,Transparent,Low,Yes,GLASS +Longitiudonal,Low,No,High,Medium,Colorful,Medium,No,PLASTIC_AND_METAL +Longitiudonal,Low,Yes,High,Medium,Colorful,High,No,BIO +Longitiudonal,High,No,High,Medium,Transparent,Medium,Yes,PLASTIC_AND_METAL +Irregular,Medium,No,Medium,Medium,Dark,High,No,PAPER +Irregular,Low,No,Low,Medium,Light,Medium,Yes,PLASTIC_AND_METAL +Round,High,No,Medium,Medium,Colorful,Low,Yes,PLASTIC_AND_METAL +Irregular,High,No,High,High,Colorful,Low,No,MIXED +Round,High,Yes,Medium,Medium,Transparent,High,Yes,PLASTIC_AND_METAL +Flat,Medium,Yes,High,Medium,Colorful,Medium,Yes,BIO +Round,High,No,Medium,Medium,Light,High,No,MIXED +Flat,Low,Yes,Low,Low,Transparent,Medium,No,PLASTIC_AND_METAL +Flat,Low,No,Medium,High,Light,High,Yes,MIXED +Round,Medium,Yes,Medium,High,Transparent,High,No,MIXED +Irregular,Medium,Yes,Medium,Medium,Colorful,Low,No,MIXED +Flat,Low,Yes,Low,High,Light,Medium,No,BIO +Flat,Low,Yes,Medium,Medium,Dark,Medium,No,MIXED +Irregular,Low,No,High,High,Transparent,High,No,PLASTIC_AND_METAL +Irregular,Low,Yes,Low,Medium,Dark,Low,Yes,GLASS +Flat,Low,Yes,Low,Medium,Light,Low,No,GLASS +Longitiudonal,Medium,Yes,Low,Medium,Dark,Low,Yes,PLASTIC_AND_METAL +Irregular,Medium,No,Low,Low,Colorful,Medium,Yes,PAPER +Round,High,No,Medium,Medium,Dark,High,No,MIXED +Round,High,Yes,Low,High,Colorful,Low,No,MIXED +Longitiudonal,Low,Yes,Low,Low,Transparent,Medium,Yes,MIXED +Flat,Low,No,High,Medium,Light,Low,No,PLASTIC_AND_METAL +Irregular,High,No,Low,Low,Colorful,High,Yes,PAPER +Round,High,No,Medium,Medium,Colorful,High,No,MIXED +Irregular,High,Yes,High,Low,Transparent,Medium,No,MIXED +Round,Low,No,Medium,Low,Colorful,Low,No,GLASS +Flat,Low,No,High,Low,Light,Low,No,MIXED +Irregular,High,No,High,Medium,Light,Low,No,PLASTIC_AND_METAL +Flat,Medium,Yes,High,Low,Dark,Low,No,MIXED +Round,Medium,No,High,High,Colorful,Medium,No,PAPER +Flat,Low,Yes,Medium,Low,Transparent,Medium,No,PLASTIC_AND_METAL +Flat,Medium,No,Low,Medium,Transparent,High,NoMIXED +Flat,Low,Yes,Medium,High,Colorful,Low,No,GLASS +Longitiudonal,Low,Yes,High,Medium,Dark,High,No,BIO +Longitiudonal,Medium,Yes,Low,High,Dark,High,Yes,BIO +Round,High,No,Low,Low,Colorful,Medium,No,PAPER +Longitiudonal,Medium,Yes,Medium,Low,Colorful,Low,Yes,PLASTIC_AND_METAL +Longitiudonal,High,Yes,Low,Medium,Light,Medium,Yes,BIO +Round,Medium,No,High,Low,Transparent,Low,Yes,GLASS +Longitiudonal,High,No,Medium,High,Dark,High,Yes,MIXED +Irregular,Medium,No,High,High,Dark,Low,Yes, PLASTIC_AND_METAL +Flat,High,Yes,Medium,Medium,Colorful,Low,Yes,PAPER +Longitiudonal,Low,Yes,Medium,Medium,Light,Medium,Yes,MIXED +Round,Medium,Yes,High,Low,Light,Medium,Yes,PLASTIC_AND_METAL +Longitiudonal,High,No,Medium,Low,Light,Low,Yes,PLASTIC_AND_METAL \ No newline at end of file diff --git a/startup.py b/startup.py index e857080..ece107b 100644 --- a/startup.py +++ b/startup.py @@ -8,6 +8,7 @@ from garbageTruck import GarbageTruck from garbageCan import GarbageCan from speedBump import SpeedBump from landfill import Landfill +from garbage import Garbage def startup(game_context: GameContext): @@ -19,26 +20,45 @@ def startup(game_context: GameContext): game_context.dust_car = car _create_landfill(game_context) + def create_dust_car(game_context: GameContext) -> GarbageTruck: return GarbageTruck((3, 3)) + def render_background(game_context: GameContext): bg_img = Image.open("imgs/background.jpg") pygame_bg_image = pygame.image.frombuffer(bg_img.tobytes(), bg_img.size, 'RGB') game_context.canvas.blit(pygame_bg_image, (0, 0)) + def create_city() -> City: city: City = City() streets = create_streets() trashcans = create_trashcans() bumps = create_speed_bumps() + garbage_pieces = create_garbage_pieces() + garbage_pieces_counter = 0 for s in streets: city.add_street(s) for t in trashcans: + for i in range(4): + t.add_garbage(garbage_pieces[0]) + garbage_pieces_counter = garbage_pieces_counter + 1 city.add_can(t) for b in bumps: city.add_bump(b) - return city + + +def create_garbage_pieces() -> List[Garbage]: + garbage_pieces = [] + with open('machine_learning/garbage_infill.csv', 'r') as file: + lines = file.readlines() + for line in lines[1:]: + param = line.strip().split(',') + garbage_pieces.append( + Garbage('img', param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7])) + return garbage_pieces + def create_streets() -> List[Street]: streets = [] @@ -54,6 +74,7 @@ def create_streets() -> List[Street]: streets.append(Street(17, 23, 25, StreetType.VERTICAL)) return streets + def create_trashcans() -> List[GarbageCan]: trashcans = [] trashcans.append(GarbageCan((9, 4))) @@ -65,6 +86,7 @@ def create_trashcans() -> List[GarbageCan]: trashcans.append(GarbageCan((26, 4))) return trashcans + def create_speed_bumps() -> List[SpeedBump]: bumps = [] bumps.append(SpeedBump((10, 9))) @@ -73,7 +95,7 @@ def create_speed_bumps() -> List[SpeedBump]: def _create_landfill(game_context: GameContext) -> None: - landfil_position = (23,24) + landfil_position = (23, 24) landfill = Landfill(landfil_position) game_context.landfill = landfill - landfill.render(game_context) \ No newline at end of file + landfill.render(game_context) From f79fa2ee66a6530d709bdfb2b056f2ac78fa4b03 Mon Sep 17 00:00:00 2001 From: majkellll Date: Sat, 27 May 2023 13:35:39 +0200 Subject: [PATCH 2/4] dodany przecinek --- machine_learning/training_data.csv | 2 +- startup.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/machine_learning/training_data.csv b/machine_learning/training_data.csv index 8005179..b0d47b1 100644 --- a/machine_learning/training_data.csv +++ b/machine_learning/training_data.csv @@ -85,7 +85,7 @@ Irregular,High,No,High,Medium,Light,Low,No,PLASTIC_AND_METAL Flat,Medium,Yes,High,Low,Dark,Low,No,MIXED Round,Medium,No,High,High,Colorful,Medium,No,PAPER Flat,Low,Yes,Medium,Low,Transparent,Medium,No,PLASTIC_AND_METAL -Flat,Medium,No,Low,Medium,Transparent,High,NoMIXED +Flat,Medium,No,Low,Medium,Transparent,High,No,MIXED Flat,Low,Yes,Medium,High,Colorful,Low,No,GLASS Longitiudonal,Low,Yes,High,Medium,Dark,High,No,BIO Longitiudonal,Medium,Yes,Low,High,Dark,High,Yes,BIO diff --git a/startup.py b/startup.py index ece107b..7bdd14a 100644 --- a/startup.py +++ b/startup.py @@ -47,6 +47,7 @@ def create_city() -> City: city.add_can(t) for b in bumps: city.add_bump(b) + return city def create_garbage_pieces() -> List[Garbage]: From a1f2e4b298ac7c58820753e31c8cbe021cfbaf73 Mon Sep 17 00:00:00 2001 From: majkellll Date: Sat, 27 May 2023 13:45:31 +0200 Subject: [PATCH 3/4] garbage_pieces_counter --- startup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/startup.py b/startup.py index 7bdd14a..0605095 100644 --- a/startup.py +++ b/startup.py @@ -42,7 +42,7 @@ def create_city() -> City: city.add_street(s) for t in trashcans: for i in range(4): - t.add_garbage(garbage_pieces[0]) + t.add_garbage(garbage_pieces[garbage_pieces_counter]) garbage_pieces_counter = garbage_pieces_counter + 1 city.add_can(t) for b in bumps: From d8e34ad65b257c9c64d1faa544f73da4945b1d8b Mon Sep 17 00:00:00 2001 From: majkellll Date: Sat, 27 May 2023 13:46:44 +0200 Subject: [PATCH 4/4] delated test methods --- garbage.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/garbage.py b/garbage.py index 268f2b6..205e00c 100644 --- a/garbage.py +++ b/garbage.py @@ -31,9 +31,6 @@ class Garbage: self.softness = softness self.does_din = does_din - def xxx(self): - return self.shape - class RecognizedGarbage(Garbage): garbage_type: GarbageType