From 8fe3d253243a21cb5d5fe4e16c50a9825f613778 Mon Sep 17 00:00:00 2001 From: MarRac Date: Sun, 14 Apr 2024 17:20:27 +0200 Subject: [PATCH] added tractor movement based on bfs --- .../area/__pycache__/tractor.cpython-311.pyc | Bin 7649 -> 8923 bytes source/area/tractor.py | 25 ++++++++++--- source/main.py | 35 ++++++++---------- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/source/area/__pycache__/tractor.cpython-311.pyc b/source/area/__pycache__/tractor.cpython-311.pyc index 9d4cac2a93fa664e165c085eba01092ab743d5c7..944643367ddfe19758669b37674739b726a1669d 100644 GIT binary patch delta 1448 zcmc(eO>7%Q6vt=0YiDB5`XjLuJ9g~GPK1&}0ihsOR3U*{jcIUNwGhduiCnLf+Vw{? z-cYG>Wmn3<4VGeSFFh0~2UL*S9*}_p65@cka9Xcc@@i2I95~~MN(D~LZ0a@z?#%Q2 zX5Regy`6pI{pGEn$$Q5u3o1>5t zEZ{s4`CTAdA6Ni*Nc(Y1IYrwpNV!C=-HO5C_E*l;nOo+Jk2HzYJINr#4``!dS`BQ9l}j{Zgi>h zllKn`EOmYu|HJ}sbyg?7fi8!2rVpMYBzr?ie})?zkB*3T=KubgMgHFZn*4CcE#Dj& zla(>&#BEMGu`|yPoCB+Thx59toP-BU07zIK4g@(GA|G*cEFMEpwVVT2ySMo&l)vQ1 zXhap{&C0U4yhA=hzIUJJcsbjP%$xknMWtzZ(Q?BqGVxWxfxwQ#p6G?3G*3nDgy=je zPEe75CVFY4YarTaQgGmAuD1#wKzfO^A2$eIyi<)jv4KEeVPr6;H~){IrYeHVVAhtr z6(QM5d52`Ol~;4c^cEeir876SNO`9up3ZM?kvPp_U{aRSQg(ynwysNt!#2_ZdE-FnB3f z%o^58A)DQvwHiYbNoS-oF}Srv(ikq5KhACxauvz2N;Q(s70etJD~&wG8i}$TcCoxc zqjKd^h2-hN9oj1qT9Z0B#3Rj>9-dV3q!NC+ix)M#*uzN`C%gEfhA-CRbccpRJseeW z^kDw+nXhxo++r6mX?Up~|CP7zCVPB9*0&?A|#)6JV_gD5-?k1bb1~pyqwANK2 zrU)^r^l(hYu`Zs`@Qh;qn0{3iqKXhrnH$(K>Bp$yX$4Q~$kjt36@~6y?xHCTO(|&V z5ILL99-36qWEVv=6j4y*5aFi1_4-|*DKx0{eS_1JXm@!e^*o=`Og&~DGhbxymiaVDliU-VR$>ELS zWnyq=NMUVZNMT#X#K5o`h#??~FNI~|G-XEiiMuj{G?{L(rDdk(q(ngJ$jyd~t^$k? zCO;4qoxEO zZ9XR6&BR!@IY??7BR@Z@>IVimp)y%q#*aypf3l}ypvx_;#G=$hJ+M29xPh)L;sFs- zAc7A>#DfSG5TOJlesS33=BJeAq}mlF1G$VqT>N129Ywi%C#DZTKJCdH3@R6}Aa9i$ b47?3s_<^mOkx}jg19tKwSo{kPS+Gw58{>Xw diff --git a/source/area/tractor.py b/source/area/tractor.py index 70772af..32cce26 100644 --- a/source/area/tractor.py +++ b/source/area/tractor.py @@ -1,7 +1,7 @@ from crop_protection_product import CropProtectionProduct -from area.constants import TILE_SIZE, DIRECTION_EAST, DIRECTION_SOUTH, DIRECTION_WEST, DIRECTION_NORTH, FIELD_WIDTH, FIELD_HEIGHT -from area.field import fieldX,fieldY +from area.constants import TILE_SIZE, DIRECTION_EAST, DIRECTION_SOUTH, DIRECTION_WEST, DIRECTION_NORTH, FIELD_WIDTH, FIELD_HEIGHT, WIDTH, HEIGHT import pygame +import time class Tractor: @@ -79,19 +79,15 @@ class Tractor: def move(self): if self.direction == DIRECTION_EAST: - #self.x += TILE_SIZE self.rect.x += TILE_SIZE elif self.direction == DIRECTION_WEST: - #self.x -= TILE_SIZE self.rect.x -= TILE_SIZE elif self.direction == DIRECTION_NORTH: - #self.y -= TILE_SIZE self.rect.y -= TILE_SIZE elif self.direction == DIRECTION_SOUTH: - #self.y += TILE_SIZE self.rect.y += TILE_SIZE @@ -129,3 +125,20 @@ class Tractor: win.blit(imageTractor, (self.rect.x, self.rect.y)) pygame.display.flip() + +def do_actions(tractor, WIN, move_list): + trail = pygame.image.load("resources/images/background.jpg").convert_alpha() + trail = pygame.transform.scale(trail, (TILE_SIZE, TILE_SIZE)) + + pygame.display.update() + for move in move_list: + WIN.blit(trail, (tractor.rect.x, tractor.rect.y, TILE_SIZE, TILE_SIZE)) + if move == "move": + tractor.move() + elif move == "rotate_right": + tractor.rotate_to_right() + elif move == "rotate_left": + tractor.rotate_to_left() + tractor.draw_tractor(WIN) + pygame.display.update() + time.sleep(1) \ No newline at end of file diff --git a/source/main.py b/source/main.py index 7b63356..e2bfb7a 100644 --- a/source/main.py +++ b/source/main.py @@ -4,7 +4,7 @@ import random from area.constants import WIDTH, HEIGHT, TILE_SIZE, GREY from area.field import drawWindow -from area.tractor import Tractor +from area.tractor import Tractor, do_actions from area.field import tiles, fieldX, fieldY from area.field import get_tile_coordinates from ground import Dirt @@ -13,26 +13,26 @@ from bfs import graphsearch, Istate, succ WIN = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption('Intelligent tractor') -trail = pygame.image.load("resources/images/background.jpg").convert_alpha() -trail = pygame.transform.scale(trail, (TILE_SIZE, TILE_SIZE)) + def main(): run = True window = drawWindow(WIN) pygame.display.update() #getting coordinates of a certain tile - test: - tile_index=22 + tile_index=30 tile_x, tile_y = get_tile_coordinates(tile_index) if tile_x is not None and tile_y is not None: print(f"Coordinates of tile {tile_index} are: ({tile_x}, {tile_y})") else: print("Such tile does not exist") +#graphsearch activation: istate = Istate(170, 100, 2) goaltest = [] goaltest.append(tile_x) - goaltest.append(tile_y) - - print(graphsearch(istate, succ, goaltest)) + goaltest.append(tile_y) + moves = (graphsearch(istate, succ, goaltest)) + print(moves) #main loop: while run: @@ -48,21 +48,18 @@ def main(): d1.pests_and_weeds() tile1.ground=d1 - tractor = Tractor(0*TILE_SIZE, 0*TILE_SIZE, 1) - tractor.rotate_to_right() + #movement based on route-planning test: + tractor = Tractor(0*TILE_SIZE, 0*TILE_SIZE, 2) tractor.rect.x += fieldX - tractor.rect.y += fieldY + tractor.rect.y += fieldY tractor.draw_tractor(WIN) time.sleep(1) - for _ in range(5): - WIN.blit(trail, (tractor.rect.x, tractor.rect.y, TILE_SIZE, TILE_SIZE)) - tractor.move() - - tractor.draw_tractor(WIN) - pygame.display.flip() - tractor.work_on_field(tile1, d1, p1) - time.sleep(2) - print("\n") + if moves != None: + do_actions(tractor, WIN, moves) + + tractor.work_on_field(tile1, d1, p1) + time.sleep(2) + print("\n")