AIprojekt-wozek/Environment.py

72 lines
2.3 KiB
Python
Raw Normal View History

from Empty import Empty
from Moving_truck import Moving_truck
from Package import Package
from Package_types import Package_types
2022-03-24 20:02:21 +01:00
from Shelf import Shelf
2022-04-04 20:08:45 +02:00
import pygame
import random
2022-03-24 20:02:21 +01:00
from Grid import Grid
from Truck import Truck
from Global_variables import Global_variables as G_var
from pygame.constants import *
2022-03-24 20:02:21 +01:00
class Environment:
def __init__(self, window):
self.window = window
self.grid = Grid(window)
self.initialize_eviroment_2d()
self.add_shelfs_to_enviroment_2d()
# TEST CREATE PACKAGE
new_package = Package(self.window, 26, 7)
self.enviroment_2d[26][7] = new_package
new_truck = Truck(window, 14, 7)
self.enviroment_2d[14][7] = new_truck
self.truck = new_truck
self.moving_truck = Moving_truck(
self.window, self.enviroment_2d, self.truck)
2022-03-24 20:02:21 +01:00
def draw_all_elements(self):
for row in self.enviroment_2d:
for field in row:
field.draw()
2022-03-24 20:02:21 +01:00
self.grid.draw_grid()
pygame.display.flip()
2022-03-24 20:02:21 +01:00
def update_truck(self, event):
if event.type == KEYDOWN:
if event.key == K_LEFT:
self.moving_truck.move(-1, 0)
if event.key == K_RIGHT:
self.moving_truck.move(1, 0)
if event.key == K_UP:
self.moving_truck.move(0, -1)
if event.key == K_DOWN:
self.moving_truck.move(0, 1)
2022-04-04 20:08:45 +02:00
def gen_shelf_type(self):
shelve_types = list(Package_types)
while True:
yield random.choice(shelve_types)
2022-04-04 20:08:45 +02:00
def initialize_eviroment_2d(self):
self.enviroment_2d = [[
Empty(self.window, j, i)
for i in range(G_var().DIMENSION_Y)]
for j in range(G_var().DIMENSION_X)
]
2022-04-04 20:08:45 +02:00
def add_shelfs_to_enviroment_2d(self):
shelf_2_offset = 9
avaiable_types = self.gen_shelf_type()
for x in range(2, 22, 3):
type_of_new_shelf_1 = next(avaiable_types)
type_of_new_shelf_2 = next(avaiable_types)
for y in range(0, 6):
self.enviroment_2d[x][y] = Shelf(
self.window, x, y, type_of_new_shelf_1
)
self.enviroment_2d[x][y + shelf_2_offset] = Shelf(
self.window, x, (y + shelf_2_offset), type_of_new_shelf_2
)