2021-04-24 00:04:19 +02:00
import astar
2021-03-21 12:40:13 +01:00
import definitions
2021-04-09 22:49:58 +02:00
import graph
2021-04-03 00:16:53 +02:00
import map
2021-03-21 12:40:13 +01:00
import plant
2021-03-13 22:30:18 +01:00
import pygame
2021-04-03 00:16:53 +02:00
import station
2021-05-15 22:41:07 +02:00
import treelearn
2021-03-21 12:40:13 +01:00
import tractor
2021-03-13 22:30:18 +01:00
pygame . display . set_caption ( " Smart Tractor " )
def main ( ) :
2021-04-03 11:24:39 +02:00
#tworzenie podstawowych obiektów
2021-04-03 00:16:53 +02:00
map1 = map . Map ( [ ] )
map1 . create_base_map ( )
2021-04-10 18:24:13 +02:00
move_list = [ ]
2021-03-31 12:56:29 +02:00
amount_of_seeds_dict = { " beetroot " : definitions . TRACTOR_AMOUNT_OF_SEEDS_EACH_TYPE , " carrot " : definitions . TRACTOR_AMOUNT_OF_SEEDS_EACH_TYPE , " potato " : definitions . TRACTOR_AMOUNT_OF_SEEDS_EACH_TYPE , " wheat " : definitions . TRACTOR_AMOUNT_OF_SEEDS_EACH_TYPE }
collected_plants_dict = { " beetroot " : 0 , " carrot " : 0 , " potato " : 0 , " wheat " : 0 }
2021-03-27 21:31:22 +01:00
fertilizer_dict = { " beetroot " : definitions . TRACTOR_FERTILIZER , " carrot " : definitions . TRACTOR_FERTILIZER , " potato " : definitions . TRACTOR_FERTILIZER , " wheat " : definitions . TRACTOR_FERTILIZER }
2021-04-03 00:16:53 +02:00
station1 = station . Station ( collected_plants_dict )
2021-04-10 19:38:24 +02:00
tractor1 = tractor . Tractor ( amount_of_seeds_dict , collected_plants_dict , definitions . TRACTOR_DIRECTION_NORTH , fertilizer_dict , definitions . TRACTOR_FUEL , definitions . TRACTOR_WATER_LEVEL , 0 , 0 )
2021-03-23 17:14:46 +01:00
tractor1_rect = pygame . Rect ( tractor1 . get_x ( ) , tractor1 . get_y ( ) , definitions . BLOCK_SIZE , definitions . BLOCK_SIZE )
2021-03-13 22:30:18 +01:00
clock = pygame . time . Clock ( )
2021-05-15 22:41:07 +02:00
treelearn . treelearn ( )
2021-03-13 22:30:18 +01:00
run = True
2021-04-03 11:24:39 +02:00
while run : #pętla główna programu
2021-03-21 12:40:13 +01:00
clock . tick ( definitions . FPS )
2021-03-13 22:30:18 +01:00
for event in pygame . event . get ( ) :
if event . type == pygame . QUIT :
run = False
2021-04-09 14:57:52 +02:00
map1 . draw_window ( tractor1 , tractor1_rect )
2021-04-10 19:38:24 +02:00
if not move_list and plant . Plant . if_any_mature_plant ( map1 ) is True : #jeżeli są jakieś ruchy do wykonania w move_list oraz istnieje jakaś dojrzała roślina
istate = graph . Istate ( tractor1 . get_direction ( ) , tractor1 . get_x ( ) / definitions . BLOCK_SIZE , tractor1 . get_y ( ) / definitions . BLOCK_SIZE ) #stan początkowy traktora (jego orientacja oraz jego aktualne współrzędne)
2021-04-24 00:04:19 +02:00
#move_list = (graph.graphsearch([], [], istate, graph.succ, plant.Plant.get_closest_mature_plant(map1, tractor1))) #lista z ruchami, które należy po kolei wykonać, graph
2021-04-24 20:43:09 +02:00
move_list = ( astar . graphsearch ( [ ] , [ ] , istate , graph . succ , plant . Plant . get_closest_mature_plant ( map1 , istate ) , astar . f , map1 ) ) #lista z ruchami, które należy po kolei wykonać, astar
2021-04-10 19:38:24 +02:00
elif move_list : #jeżeli move_list nie jest pusta
tractor1 . handle_movement ( move_list . pop ( 0 ) , tractor1_rect ) #wykonaj kolejny ruch oraz zdejmij ten ruch z początku listy
2021-04-10 18:24:13 +02:00
else :
2021-04-10 19:38:24 +02:00
tractor1 . handle_random_movement ( tractor1_rect ) #wykonuj losowe ruchy
tractor1 . do_work ( map1 , station1 , tractor1_rect ) #wykonaj pracę na danym polu
plant . Plant . grow_plants ( map1 ) #zwiększ poziom dojrzałości roślin
2021-03-13 22:30:18 +01:00
pygame . quit ( )
if __name__ == " __main__ " :
main ( )