import pygame import Board import FindPath import TractorAction import drawUI import Graphsearch from Tractor import Tractor from TractorLoad import TillageUnit from constants import * from manualSteering import manualSteeringDriver pygame.init() display = pygame.display.set_mode((DISPLAY_SIZE_HORIZONTAL, DISPLAY_SIZE_VERTICAL)) pygame.display.set_caption('Tractor') working = True autoAction = True animationSpeed = ANIMATION_PART hitchCounter = 0 loadCounter = 0 toolCounter = - 1 board = Board.generate() tractor = Tractor(horizontal_index=-0, vertical_index=0, hitch="nothing", header=False, autodrive=True, direction="RIGHT") tillageUnit = TillageUnit("Nothing") tractor.turnOnEngine() move_list = [] clock = pygame.time.Clock() while working: for event in pygame.event.get(): if event.type == pygame.QUIT: working = False if event.type == pygame.KEYDOWN: hitchCounter, loadCounter = \ manualSteeringDriver(event, board, tractor, hitchCounter, tillageUnit, loadCounter) field = board[tractor.horizontal_index][tractor.vertical_index] if not move_list: field.state = TractorAction.changeFieldState(field, tractor) istate = Graphsearch.Istate(tractor.direction, tractor.horizontal_index, tractor.vertical_index) move_list = Graphsearch.graphsearch([], [], istate, FindPath.nearestLookingField(board, tractor, TillageUnit), board) print(move_list) elif move_list: tractor.auto_movement(move_list.pop(0)) TractorAction.changeFieldState(field, tractor) if tractor.autodrive and tractor.engineWorking: animationSpeed = ANIMATION_PART else: animationSpeed = 1 if field.horizontal_index == 0 and field.vertical_index == 0 and not move_list: tractor, tillageUnit, toolCounter = TractorAction.autoToolsChange(tractor, tillageUnit, toolCounter) drawUI.drawUI(board, display, tractor, tractor.direction, tillageUnit, field, animationSpeed) clock.tick(FPS) pygame.quit() quit()