sztuczna_inteligencja_2023_.../startup.py
2023-06-05 10:17:28 +02:00

119 lines
4.1 KiB
Python

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 = _craete_garbage_with_attributes()
garbage_pieces_counter = 0
for s in streets:
city.add_street(s)
for t in trashcans:
for _ in range(4):
t.add_garbage(garbage_pieces[garbage_pieces_counter])
garbage_pieces_counter = garbage_pieces_counter + 1
city.add_can(t)
garbage_pieces = _create_garbage_with_images()
garbage_pieces_counter = 0
for t in trashcans:
for _ in range(4):
t.add_garbage(garbage_pieces[garbage_pieces_counter])
garbage_pieces_counter = garbage_pieces_counter + 1
for b in bumps:
city.add_bump(b)
return city
def _craete_garbage_with_attributes() -> 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(None, param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7].strip()))
return garbage_pieces
def _create_garbage_with_images() -> list[Garbage]:
garbage_pieces = []
current_path_number = 3014
for _ in range(0, 28):
path = 'machine_learning/garbage_photos/photos_not_from_train_set/IMG_' + str(current_path_number) + '.jpg'
new_garbage = Garbage(path, None, None, None, None, None, None, None, None)
garbage_pieces.append(new_garbage)
current_path_number = current_path_number + 1
if current_path_number == 3025:
current_path_number = current_path_number + 1
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)