wozek-projekt/Program.py

59 lines
1.9 KiB
Python
Raw Normal View History

2023-03-27 13:33:47 +02:00
import pygame
2023-04-16 16:38:04 +02:00
import random
2023-05-05 06:13:03 +02:00
import a_star
2023-04-16 16:38:04 +02:00
2023-03-27 13:33:47 +02:00
from pygame.locals import *
from Forklift import Forklift
HORIZONTAL = 1250
VERTICAL = 750
TILE_SIZE = 50
2023-05-05 06:13:03 +02:00
2023-04-16 16:38:04 +02:00
def handle_turn(initial_state, turn_count):
if turn_count % 2 == 0:
2023-05-05 06:13:03 +02:00
commands = a_star.a_star(state=initial_state, goal=(7, 23))
2023-04-16 16:38:04 +02:00
else:
row = random.randint(0, 1) * 10 + 2 * random.randint(0, 2)
col = random.randint(1, 5) + 6 * random.randint(0, 3)
2023-05-05 06:13:03 +02:00
commands = a_star.a_star(state=initial_state, goal=(row, col))
2023-04-16 16:38:04 +02:00
print('I need to go to row: ' + str(row) + ' column: ' + str(col))
return commands
2023-03-27 13:33:47 +02:00
class Program:
def __init__(self):
pygame.init()
self.window = pygame.display.set_mode((HORIZONTAL, VERTICAL))
self.caption = pygame.display.set_caption('Autonomiczny wózek widłowy')
self.agent = Forklift(self.window)
self.agent.drawForklift()
running = True
2023-04-16 16:38:04 +02:00
turn_count = 0
2023-05-05 06:13:03 +02:00
initial_state = a_star.State(row=int(self.agent.y/50), column=int(self.agent.x/50),
direction=self.agent.direction)
2023-04-16 16:38:04 +02:00
2023-03-27 13:33:47 +02:00
while running:
2023-04-16 16:38:04 +02:00
commands = handle_turn(initial_state=initial_state, turn_count=turn_count)
while commands:
pygame.event.poll()
step = commands.pop(0)
if step == 'rotate_left':
self.agent.rotate_forklift_left()
elif step == 'rotate_right':
self.agent.rotate_forklift_right()
elif step == 'go':
self.agent.forklift_move()
pygame.time.delay(250)
print(commands)
turn_count += 1
pygame.time.delay(2000)
2023-05-05 06:13:03 +02:00
initial_state.row = int(self.agent.y / 50)
initial_state.column = int(self.agent.x / 50)
initial_state.direction = self.agent.direction