from gameContext import GameContext from city import City from PIL import Image import pygame 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 from garbage import Garbage def startup(game_context: GameContext): render_background(game_context) game_context.city = create_city() game_context.city.render_city(game_context) car = create_dust_car(game_context) car.render(game_context) 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[garbage_pieces_counter]) 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].strip())) return garbage_pieces def create_streets() -> List[Street]: streets = [] streets.append(Street(3, 30, 3, StreetType.HORIZONTAL)) streets.append(Street(4, 15, 10, StreetType.VERTICAL)) streets.append(Street(4, 10, 25, StreetType.VERTICAL)) streets.append(Street(11, 24, 10, StreetType.HORIZONTAL)) streets.append(Street(4, 9, 18, StreetType.VERTICAL)) streets.append(Street(1, 30, 16, StreetType.HORIZONTAL)) streets.append(Street(17, 30, 2, StreetType.VERTICAL)) streets.append(Street(3, 25, 23, StreetType.HORIZONTAL)) streets.append(Street(17, 30, 13, StreetType.VERTICAL)) streets.append(Street(17, 23, 25, StreetType.VERTICAL)) return streets def create_trashcans() -> List[GarbageCan]: trashcans = [] trashcans.append(GarbageCan((9, 4))) trashcans.append(GarbageCan((9, 15))) trashcans.append(GarbageCan((12, 22))) trashcans.append(GarbageCan((3, 24))) trashcans.append(GarbageCan((17, 9))) trashcans.append(GarbageCan((24, 17))) trashcans.append(GarbageCan((26, 4))) return trashcans def create_speed_bumps() -> List[SpeedBump]: bumps = [] bumps.append(SpeedBump((10, 9))) bumps.append(SpeedBump((12, 16))) return bumps def _create_landfill(game_context: GameContext) -> None: landfil_position = (23, 24) landfill = Landfill(landfil_position) game_context.landfill = landfill landfill.render(game_context)