import pygame from src.world import World from src.tractor import Tractor from src.settings import Settings from utils.astar import a_star_search def main(): pygame.init() settings = Settings() # ustawienia pygame world = World(settings) # stworzenie mapy na bazie ustawień pygame tractor = Tractor("Spalinowy", "Nawóz 1", settings, 8 * settings.tile_size, 8 * settings.tile_size) # stworzenie traktora z podanymi argumentami obstacles = [tile for tile in world.tiles if tile.type == 'rock'] # stworzenie listy z przeszkodami, kamień = przeszkoda clock = pygame.time.Clock() # FPS purpose screen = pygame.display.set_mode((settings.screen_width, settings.screen_height)) # tworzenie ekranu pygame.display.set_caption('TRAKTOHOLIK') # nazwa okna start_cords = (8, 1) goals = [(8, 7), (7, 7), (0, 0)] end_cords = goals[0] start_dir = tractor.curr_direction # przypisanie początkowego ustawienia traktora do zmiennej # path = BFSSearcher().search(start_cords, end_cords, start_dir) # wygenerowanie listy ruchów na bazie BFS path = a_star_search(start_cords, end_cords, start_dir, world) # generowanie ścieżki za pomocą A* run = True while run: clock.tick(settings.fps) world.draw_tiles(screen) world.draw_lines(screen) tractor.draw(screen) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False # iteracja przez listę ruchów if path: action = path.pop(0) # pobranie pierwszego ruchu z listy tractor.update(action) # wykonanie ruchu przez traktor else: if len(goals) > 1: # sprawdzenie czy są inne cele new_start = goals.pop(0) # pobierz współrzędne pierwszego celu i ustaw jako początkowe end_cords = goals[0] # ustaw kolejny cel start_dir = tractor.curr_direction # aktualizacja kierunku traktora # path = BFSSearcher().search(start_cord, end_cords, start_dir) # generacja nowej ścieżki path = a_star_search(new_start, end_cords, start_dir, world) pygame.time.wait(settings.freeze_time) pygame.display.update() pygame.quit() if __name__ == '__main__': main()