AI_PRO/main.py

102 lines
3.0 KiB
Python
Raw Normal View History

2021-03-29 02:19:55 +02:00
import pygame
# wersja 1.05
from Main import Board, driving, drawUI
from Main.Tractor import Tractor
2021-03-29 19:15:36 +02:00
from Main.TractorAction import action, chooseToolset
2021-03-29 14:33:16 +02:00
from Main.TractorLoad import TillageUnit
2021-03-29 02:19:55 +02:00
from Main.constants import *
2021-03-29 19:15:36 +02:00
from Main.driving import autodrive, isComebackTime
2021-03-29 02:19:55 +02:00
pygame.init()
display = pygame.display.set_mode((DISPLAY_SIZE_HORIZONTAL, DISPLAY_SIZE_VERTICAL))
pygame.display.set_caption('Tractor')
working = True
2021-03-29 17:18:14 +02:00
cruiseControl = True
autoAction = True
2021-03-29 19:15:36 +02:00
autonomousDrive = True
2021-03-29 14:33:16 +02:00
2021-03-29 19:15:36 +02:00
comeback = False
lastDirection = "RIGHT"
2021-03-29 17:18:14 +02:00
direction = "RIGHT"
2021-03-29 13:46:30 +02:00
hitchCounter = 0
2021-03-29 14:33:16 +02:00
loadCounter = 0
2021-03-29 19:15:36 +02:00
toolCounter = 0
2021-03-29 14:33:16 +02:00
2021-03-29 02:19:55 +02:00
board = Board.generate()
2021-03-29 19:15:36 +02:00
tractor = Tractor(horizontal_index=-0, vertical_index=0, hitch="nothing", header=False)
2021-03-29 14:33:16 +02:00
tillageUnit = TillageUnit("Nothing")
2021-03-29 03:41:38 +02:00
tractor.turnOnEngine()
2021-03-29 02:19:55 +02:00
clock = pygame.time.Clock()
while working:
for event in pygame.event.get():
if event.type == pygame.QUIT:
working = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
field = board[tractor.horizontal_index][tractor.vertical_index]
2021-03-29 19:15:36 +02:00
field.state = action(field, tractor)
2021-03-29 13:32:51 +02:00
if event.key == pygame.K_q:
2021-03-29 13:46:30 +02:00
hitchCounter = (hitchCounter + 1) % 3
if hitchCounter == 0:
tractor.hitch = "Crop Trailer"
if hitchCounter == 1:
2021-03-29 14:33:16 +02:00
tractor.hitch = tillageUnit
2021-03-29 13:46:30 +02:00
if hitchCounter == 2:
tractor.hitch = "Nothing"
2021-03-29 13:32:51 +02:00
if event.key == pygame.K_w:
2021-03-29 13:46:30 +02:00
if tractor.header:
tractor.header = False
else:
tractor.header = True
2021-03-29 14:33:16 +02:00
if event.key == pygame.K_e:
2021-03-29 17:18:14 +02:00
loadCounter = (loadCounter + 1) % 4
2021-03-29 14:33:16 +02:00
if loadCounter == 0:
tillageUnit.load = "Nothing"
elif loadCounter == 1:
tillageUnit.load = "Seeds"
elif loadCounter == 2:
tillageUnit.load = "Water"
elif loadCounter == 3:
tillageUnit.load = "Fertilizer"
2021-03-29 17:18:14 +02:00
direction = driving.manualTurning(event, tractor)
2021-03-29 14:33:16 +02:00
2021-03-29 17:18:14 +02:00
print(tractor.horizontal_index, " ", tractor.vertical_index)
2021-03-29 02:53:27 +02:00
2021-03-29 14:33:16 +02:00
field = board[tractor.horizontal_index][tractor.vertical_index]
2021-03-29 17:18:14 +02:00
if autoAction:
2021-03-29 19:15:36 +02:00
if tractor.horizontal_index == 0 and tractor.vertical_index == 0:
toolCounter = (toolCounter + 1) % 5
tractor, tillageUnit = chooseToolset(tractor, tillageUnit, toolCounter)
tractor.fill_tank()
field.state = action(field, tractor)
print(direction)
tractor.drive(driving.cruiseControl(tractor, direction, cruiseControl))
2021-03-29 17:18:14 +02:00
2021-03-29 02:53:27 +02:00
if direction != "STOP":
lastDirection = direction
else:
2021-03-29 19:15:36 +02:00
direction = lastDirection
direction = autodrive(tractor, autonomousDrive, direction, comeback)
comeback, direction = isComebackTime(tractor, direction, comeback)
2021-03-29 17:18:14 +02:00
2021-03-29 19:15:36 +02:00
drawUI.drawUI(board, display, tractor, direction, tillageUnit, field)
2021-03-29 17:18:14 +02:00
2021-03-29 02:19:55 +02:00
clock.tick(FPS)
2021-03-29 03:41:38 +02:00
tractor.reduce_fuel()
2021-03-29 02:19:55 +02:00
pygame.quit()
quit()