import pygame import random import graph import field import settings import common import agent AGENT_IMG = pygame.image.load('./assets/tracktor/tractor.png') AGENT = pygame.transform.scale(AGENT_IMG, (settings.Field.size(), settings.Field.size())) possibleFields = { 'dirt': field.Dirt(), 'grass': field.Grass(), 'cobble': field.Cobble(), 'sand': field.Sand(), } def randomize_map(): fields_array = [] for i in possibleFields: fields_array.append(possibleFields[i].tile.object) field_array_big = [] field_array_small = [] field_array_big_2 = [] field_array_small_2 = [] for i in range(settings.Field.horizontal_count()): for j in range(settings.Field.vertical_count()): k = random.choice(list(possibleFields.keys())) field_array_small.append(possibleFields[k].tile.object) field_array_small_2.append(k) field_array_big.append(field_array_small) field_array_big_2.append(field_array_small_2) field_array_small = [] field_array_small_2 = [] return field_array_big, field_array_big_2 def read_img(agent, fields): window = common.get('window') current_field = fields[agent.x()][agent.y()] if current_field == possibleFields['grass'].tile.object: window.blit(possibleFields['grass'].block.object, (0, 0)) elif current_field == possibleFields['dirt'].tile.object: window.blit(possibleFields['dirt'].block.object, (0, 0)) elif current_field == possibleFields['sand'].tile.object: window.blit(possibleFields['sand'].block.object, (0, 0)) elif current_field == possibleFields['cobble'].tile.object: window.blit(possibleFields['cobble'].block.object, (0, 0)) pygame.display.update() pygame.time.delay(2000) common.set('state_imgShown', False) def agent_action(action: str): if action == 'open_window': common.set('state_imgShown', True) def draw_window(agent, fields): window = common.get('window') rect = agent.rect for i in range(settings.Field.horizontal_count()): for j in range(settings.Field.vertical_count()): window.blit(fields[i][j], (i * settings.Field.size(), j * settings.Field.size())) window.blit(AGENT, (rect.x, rect.y)) pygame.display.update() common = common.Instance() agent = agent.Instance(1000) graph = graph.Instance() def main(): common.set('game_running', True) common.set('state_imgShown', False) common.set( 'window', pygame.display.set_mode(( settings.Pygame.width(), settings.Pygame.height()))) pygame.display.set_caption(settings.Pygame.display_name()) fields, fields_2 = randomize_map() graph.config(fields_2) while common.get('game_running'): pygame.time.Clock().tick(settings.Pygame.fps()) for event in pygame.event.get(): if event.type == pygame.QUIT: common.set('game_running', False) if common.get('state_imgShown'): read_img(agent, fields) else: draw_window(agent, fields) agent_action(agent.move()) pygame.quit() if __name__ == "__main__": main()