import pygame import astar from classes import Field, Plant, Fertilizer, Player from bfs import Node from bfs import Istate, print_moves, succ from bfs import graphsearch from board import Grid, Box, Obstacle, getGridBoxes, gridObjects from screen import SCREEN # pygame.init() # Game Constants Ucelu = False SCREENX = 500 SCREENY = 500 pygame.display.set_caption('Inteligentny Traktor') # COLORS WHITE = (255, 255, 255) BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0, 0) BLUE = (0, 0, 255, 0) GREY = (128, 128, 128) CLOCK = pygame.time.Clock() FPS = 30 DELAY = 300 # np. 10 pól x 10 pól = 100 pól GRIDX = 10 GRIDY = 10 obstacleObjects = {} # Store the obstacle objects (Blocks on the path) from Obstacle class # global gridObjects # gridObjects = {} # Store grid-box objects from Grid Class gridObstacle = {} # Store the grid:obstacle pair stuck together boxObjects = {} boxes = 1 obstacles = 1 # BFS Variables startNode = Istate( 1,1,1) goalNode = [1,1] graph = dict() pathFound = [] # Store the path in a list box index to draw on later def drawGrid(sizex,sizey): spaceX = SCREENX // sizex spaceY = SCREENY // sizey width = 2 counter = 1 for i in range(sizex): for j in range(sizey): # g = Grid(i*spaceX, j*spaceY, spaceX, spaceY) g = Grid(50 + i*50, 50 + j*50, spaceX, spaceY) gridObjects[counter] = g counter += 1 def generateGraph(row,col): # This function generates a graph based on the gridObjects instantiated! sample_graph = {'A':['B','C','E'], 'B':['A','D','E'], 'C':['A','F','G'], 'D':['B'], 'E':['A','B','D'], 'F':['C'], 'G':['C'] } miniG = {} for grid in range(len(gridObjects)): grid += 1 # Synchronize index mod = grid % col # Used to check the Top and Bottom Grid Boxes! gN = grid - 1 gS = grid + 1 gE = grid + col gW = grid - col # CHECK THE NEIGHBORS TO THE GRID-BOXES, ACCOUNTING FOR THE EXTREME GRID-BOXES(BORDERS) if mod == 0: # 5,10,15,20,25 - You can't go south from here (Bottom Boxes) if grid > col: # Away from the Left Border of the Screen if grid > (col*row)-col: # You are on the Right Border of the screen - You can't go East miniG[grid] = [gN, gW] else: # Away from the Right Border of the Screen - You can go East miniG[grid] = [gN, gE, gW] else: # You are on the Left Edge of the screen - You can't go West miniG[grid] = [gN, gE] elif mod == 1: # 6,11,16,21 :> You can't go North from here (Top Boxes) if grid > col: # Away from the Left Border of the Screen if grid > (col*row)-col: # You are on the Right Border of the screen - You can't go East miniG[grid] = [gS, gW] else: # Away from the Right Border of the Screen - You can go east miniG[grid] = [gS, gE, gW] else: # You are on the Left Edge of the screen - You can't go West miniG[grid] = [gS, gE] else: # All the rest (Not Top or Bottom Boxes) - You can go North or South if grid > col: # Away from the Left Border of the Screen if grid > (col*row)-col: # You are on the Right Border of the screen - You can't go East miniG[grid] = [gN, gS, gW] else: # Away from the Right Border of the Screen - You can go East miniG[grid] = [gN, gS, gE, gW] else: # You are on the Left Edge of the screen - You can't go West miniG[grid] = [gN, gS, gE] # FILTER OUT OBSTACLES FROM THE GRAPH miniG2 = {} for grid in range(len(gridObjects)): grid += 1 if grid not in gridObstacle: # gridObjects.remove(grid) # Dict object has no attribute : 'remove' # HACK miniG2[grid] = miniG[grid] # Created a new dictionary that stored the values required # IN-DEPTH FILTER - Filter out obstacles from the neighbors-list for neigbor in miniG2[grid]: if neigbor in gridObstacle: miniG2[grid].remove(neigbor) # Filtering again as the first Filter block didn't clear out everything # Filtering through the neighbors for grid in miniG2: for item in miniG2[grid]: if item in gridObstacle: miniG2[grid].remove(item) return miniG2 def drawGraph(pathF): #Draws the path given the path-list global Ucelu #print(pathF) if (Ucelu == False): for grid in pathF: # g = gridObjects[grid] # Get the grid-box object mentioned in the path # x = g.x # y = g.y # sx = g.sx # sy = g.sy # a = 0 # pygame.draw.rect(SCREEN, GREEN, pygame.Rect(x, y, sx, sy)) if grid == 'rotate_right': player.rotation = (player.rotation - 90) % 360 if grid == 'rotate_left': player.rotation = (player.rotation + 90) %360 #( player.rotation) if grid == 'move': if player.rotation == 0: if player.x < 9: player.x = player.x + 1 if player.rotation == 180: if player.x > 0: player.x = player.x - 1 if player.rotation == 270: if player.y < 9: player.y = player.y + 1 if player.rotation == 90: if player.y > 0: player.y = player.y - 1 # if player.x < (x/50 - 1): # a = 1 # if player.x > (x/50 - 1): # a =2 # if player.y < (y/50 - 1): # a =3 # if player.y > (y/50 - 1): # a =4 # # if a==1: # # player.x = x/50 - 1 # player.rotation = 0 # if a==2: # # player.x = x/50 - 1 # player.rotation = 180 # if a==3: # # player.y = y/50 - 1 # player.rotation = 270 # if a==4: # # player.y = y/50 - 1 # player.rotation = 90 # tmpImg = pygame.transform.rotate(imgPlayer, player.rotation) # if player.rotation == 180: # tmpImg = pygame.transform.flip(tmpImg, True, True) # tmpImg = pygame.transform.flip(tmpImg, True, False) # # #player is seen on the way # SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y)) # pygame.display.update() # # pygame.time.wait(300) # player.y = y/50 - 1 # player.x = x/50 - 1 # ----------------------------- i = 0 while i < len(T): j = 0 while j < len(T[i]): #color = (255, 255, 255, 0) if T[i][j].isWet == 0: # a = 1 color = (160, 80, 40, 0) else: # a = 1 color = (50, 25, 0, 0) #Covers 'player' on the way pygame.draw.rect(SCREEN, color, pygame.Rect(50 + 50 * i, 50 + 50 * j, 50, 50)) if T[i][j].plantType == 1: SCREEN.blit(imgWheat, (50 + 50 * i, 50 + 50 * j)) if T[i][j].plantType == 2: SCREEN.blit(imgCarrot, (50 + 50 * i, 50 + 50 * j)) if T[i][j].plantType == 3: SCREEN.blit(imgCabbage, (50 + 50 * i, 50 + 50 * j)) if T[i][j].plantType == 4: SCREEN.blit(imgTree, (50 + 50 * i, 50 + 50 * j)) j = j + 1 i = i + 1 # Render the trees for obs in obstacleObjects: obstacleObjects[obs].draw() for bx in boxObjects: boxObjects[bx].draw() i = 0 while i < len(T)+1: pygame.draw.line(SCREEN, (0, 0, 0), (50 + i * 50, 50), (50 + i * 50, 50 + len(T) * 50), 1) pygame.draw.line(SCREEN, (0, 0, 0), (50, 50 + i * 50), (50 + len(T) * 50, 50 + i * 50), 1) i = i + 1 tmpImg = pygame.transform.rotate(imgPlayer, player.rotation) if player.rotation == 180: tmpImg = pygame.transform.flip(tmpImg, True, True) tmpImg = pygame.transform.flip(tmpImg, True, False) #player is seen on the way SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y)) # -------------------------------------- # tmpImg = pygame.transform.rotate(imgPlayer, player.rotation) # # if flip: # # if flip == True: # if player.rotation == 180: # tmpImg = pygame.transform.flip(tmpImg, True, True) # tmpImg = pygame.transform.flip(tmpImg, True, False) # # SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y)) pygame.display.update() pygame.time.wait(300) SCREEN.fill((WHITE)) # pygame.time.wait(50) # pygame.draw.rect(SCREEN, WHITE, pygame.Rect(x, y, sx, sy)) Ucelu = True def UIHandler(mouseObj): # drawGrid(GRIDX, GRIDY) global Ucelu drawGrid(10,10) for grid in gridObjects: gridObjects[grid].draw() for bx in boxObjects: boxObjects[bx].draw() for obs in obstacleObjects: obstacleObjects[obs].draw() if pathFound: drawGraph(pathFound) # Ucelu = False def eventHandler(kbdObj,mouseObj): global boxes global obstacles global startNode global goalNode global pathFound global Ucelu if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: pygame.time.wait(DELAY) if event.key == pygame.K_LEFT: if player.x > 0: player.x = player.x - 1 player.rotation = 180 if event.key == pygame.K_UP: if player.y > 0: player.y = player.y - 1 player.rotation = 90 if event.key == pygame.K_RIGHT: if player.x < 9: player.x = player.x + 1 player.rotation = 0 if event.key == pygame.K_DOWN: if player.y < 9: player.y = player.y + 1 player.rotation = 270 # Aga start lewo prawo, naprzód if event.key == pygame.K_a: player.rotation = (player.rotation + 90) % 360 if event.key == pygame.K_d: player.rotation = (player.rotation - 90) % 360 if event.key == pygame.K_w: if player.rotation == 0: if player.x < 9: player.x = player.x + 1 if player.rotation == 180: if player.x > 0: player.x = player.x - 1 if player.rotation == 270: if player.y < 9: player.y = player.y + 1 if player.rotation == 90: if player.y > 0: player.y = player.y - 1 # If Key_f is pressed, set goal node if kbdObj[pygame.K_f]: gBox = getGridBoxes(int(len(gridObjects))) # gBox = getGridBoxes() #x = mouseObj[0] #y = mouseObj[1] # x = gBox.x # y = gBox.y sx = gBox.sx sy = gBox.sy # ---------------------------------------- mseX = mouseObj[0] mseY = mouseObj[1] for grid in gridObjects: g = getGridBoxes(grid) x = g.x y = g.y sx = g.sx sy = g.sy if mseX > x and mseX < x + sx: if mseY > y and mseY < y + sy: posX = x posY = y gridBox = grid # SCREEN.blit(imgTree, (posX, posY)) # --------------------------------------- bo = Box(posX, posY, sx, sy, BLUE) boxObjects[boxes] = bo # boxes += 1 boxes = 1 # goalNode = GRIDX*GRIDX # goalNode = (10 * (x + 1) + (y + 1) - 10) # goalNode.state = int(10 * (posX/50 ) + (posY/50) - 10) # goalNode[0] = int((posX/50) # goalNode[1] = int(posY/50) - 10 goalNode = [int(posX/50), int(posY/50)] # goalNode = [10,10] print(' goalNode x=', goalNode[0], 'goalNode y=', goalNode[1]) # pygame.display.update() # goalNode = (x/sx) * (y/sy) # Delay to avoid multiple spawning of objects pygame.time.wait(DELAY) # If Key_x is pressed, spawn tree if kbdObj[pygame.K_x]: obs = Obstacle(mouseObj) obstacleObjects[obstacles] = obs # print(obs.gridBox) obstacles += 1 # print(obstacleObjects) gridObstacle[obs.gridBox] = obstacles # Delay to avoid multiple spawning of objects mseX = mouseObj[0] mseY = mouseObj[1] for grid in gridObjects: g = getGridBoxes(grid) x = g.x y = g.y sx = g.sx sy = g.sy if mseX > x and mseX < x + sx: if mseY > y and mseY < y + sy: posX = x posY = y T[int((posX/50)-1)][int((posY/50)-1)].plantType=4 pygame.display.update() pygame.time.wait(DELAY) # if Key_SPACE is pressed, start the magic if kbdObj[pygame.K_SPACE]: Ucelu = False gBox = getGridBoxes(1) x = gBox.x y = gBox.y sx = gBox.sx sy = gBox.sy x = (player.x +1) * 50 y = (player.y +1) * 50 # tmpImg = pygame.transform.rotate(imgPlayer, player.rotation) # SCREEN.blit(tmpImg, (50 + 50 * player.x, 50 + 50 * player.y)) # pygame.display.update() #when on it keeps flashing - among others #bo = Box(x, y, sx, sy, RED) #boxObjects[boxes] = bo # boxes += 1 boxes = 1 # startNode.state = (10 * (player.x + 1) + (player.y + 1) - 10) startNode.x = player.x + 1 startNode.y = player.y + 1 if player.rotation == 0: startNode.direction = 1 elif player.rotation == 90: startNode.direction = 2 elif player.rotation == 180: startNode.direction = 3 elif player.rotation == 270: startNode.direction = 4 print(' startNode x=', startNode.x, 'startNode y= ', startNode.y, 'startNode direction =', startNode.direction) graph = generateGraph(GRIDY,GRIDX) print(graph) # if startNode != goalNode: if startNode.x != goalNode[0] or startNode.y != goalNode[1]: elem = [] move_list = (graphsearch([], [], goalNode, startNode)) # przeszukiwanie grafu wszerz pathFound = move_list # pathFound = bfs.graphsearch() print('akcje które wykonuję by znalezc sie u celu') print(move_list) print('\n') # Delay to avoid multiple spawning of objects pygame.time.wait(DELAY) # startNode = goalNode if kbdObj[pygame.K_b]: Ucelu = False gBox = getGridBoxes(1) x = gBox.x y = gBox.y sx = gBox.sx sy = gBox.sy x = (player.x +1) * 50 y = (player.y +1) * 50 # tmpImg = pygame.transform.rotate(imgPlayer, player.rotation) # SCREEN.blit(tmpImg, (50 + 50 * player.x, 50 + 50 * player.y)) # pygame.display.update() #when on it keeps flashing - among others #bo = Box(x, y, sx, sy, RED) #boxObjects[boxes] = bo # boxes += 1 boxes = 1 # startNode.state = (10 * (player.x + 1) + (player.y + 1) - 10) startNode.x = player.x + 1 startNode.y = player.y + 1 if player.rotation == 0: startNode.direction = 1 elif player.rotation == 90: startNode.direction = 2 elif player.rotation == 180: startNode.direction = 3 elif player.rotation == 270: startNode.direction = 4 print(' startNode x=', startNode.x, 'startNode y= ', startNode.y, 'startNode direction =', startNode.direction) # startNode = (((player.x + 1)*10 - 9) * (player.y + 1) ) # startNode = 2 # tmpImg = pygame.transform.rotate(imgPlayer, player.rotation) # SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y)) # pygame.display.update() # Delay to avoid multiple spawning of objects #pygame.time.wait(DELAY) graph = generateGraph(GRIDY,GRIDX) print(graph) # if startNode != goalNode: if startNode.x != goalNode[0] or startNode.y != goalNode[1]: elem = [] move_list = (astar.graphsearch([], astar.f, [], goalNode, startNode, T, succ)) # przeszukiwanie grafu wszerz pathFound = move_list # pathFound = bfs.graphsearch() print('akcje które wykonuję by znalezc sie u celu') print(move_list) print('\n') # else: # startNode = (10 * (player.x + 1) + (player.y + 1) - 10) # Ucelu = True # Delay to avoid multiple spawning of objects pygame.time.wait(DELAY) #With it it keeps going, if without it turns off # Ucelu = False T = [[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,2,1,0,0,0),Field(1,3,0,0,0,0),Field(0,3,0,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,0,1,0,0,0),Field(1,3,1,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(0,2,1,0,0,0),Field(0,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,0,0,0,0),Field(0,2,1,0,0,0),Field(0,1,1,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,0,1,0,0,0),Field(0,0,1,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,3,1,0,0,0),Field(0,1,0,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,3,0,0,0,0),Field(0,3,1,0,0,0),Field(1,2,1,0,0,0),Field(1,1,1,0,0,0),Field(0,1,1,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,1,0,0,0,0),Field(0,2,0,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,0,1,0,0,0),Field(0,0,1,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,3,1,0,0,0),Field(1,2,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,0,0,0,0,0),Field(0,2,0,0,0,0),Field(1,1,0,0,0,0),Field(1,0,1,0,0,0),Field(0,2,1,0,0,0),Field(0,3,0,0,0,0),Field(0,0,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)], [Field(1,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,0,0,0,0,0),Field(0,1,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)]] #T = [[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,2,1,0,0,0),Field(1,3,0,0,0,0),Field(0,3,0,0,0,0),Field(0,0,1,0,0,0),Field(0,3,0,0,0,0),Field(1,0,1,0,0,0),Field(1,3,0,0,0,0),Field(1,2,1,0,0,0)], # [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,0,1,0,0,0),Field(1,3,1,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(0,2,0,0,0,0),Field(1,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,1,0,0,0,0)], # [Field(0,2,1,0,0,0),Field(0,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,0,0,0,0),Field(0,2,1,0,0,0),Field(0,1,1,0,0,0),Field(0,2,0,0,0,0),Field(1,0,0,0,0,0),Field(1,0,0,0,0,0),Field(1,1,0,0,0,0)], # [Field(1,0,1,0,0,0),Field(0,0,1,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,3,1,0,0,0),Field(0,1,0,0,0,0),Field(0,0,0,0,0,0),Field(1,2,0,0,0,0),Field(1,0,0,0,0,0),Field(1,0,0,0,0,0)], # [Field(1,3,0,0,0,0),Field(0,3,1,0,0,0),Field(1,2,1,0,0,0),Field(1,1,1,0,0,0),Field(0,1,1,0,0,0),Field(0,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,0,1,0,0,0),Field(1,3,0,0,0,0),Field(1,0,1,0,0,0)], # [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,1,0,0,0,0),Field(0,2,0,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,1,1,0,0,0)], # [Field(1,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,0,1,0,0,0),Field(0,0,1,0,0,0),Field(0,1,0,0,0,0),Field(1,2,1,0,0,0),Field(1,2,1,0,0,0),Field(1,0,0,0,0,0)], # [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,3,1,0,0,0),Field(1,2,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(0,1,1,0,0,0),Field(1,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,1,1,0,0,0)], # [Field(1,0,0,0,0,0),Field(0,2,0,0,0,0),Field(1,1,0,0,0,0),Field(1,0,1,0,0,0),Field(0,2,1,0,0,0),Field(0,3,0,0,0,0),Field(0,0,0,0,0,0),Field(1,0,0,0,0,0),Field(1,2,1,0,0,0),Field(1,2,1,0,0,0)], # [Field(1,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,0,0,0,0,0),Field(0,1,1,0,0,0),Field(0,0,1,0,0,0),Field(0,1,0,0,0,0),Field(1,1,1,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0)]] # ========================================================================================= # no i tutaj mamy główna pętlę programu pygame.init() player = Player() running = True # clock = pygame.time.Clock() SCREEN.fill(WHITE) while running: for event in pygame.event.get(): kbd = pygame.key.get_pressed() mse = pygame.mouse.get_pos() UIHandler(mse) eventHandler(kbd, mse) pygame.display.update() # CLOCK.tick(FPS) #screen.fill((175, 255, 50, 0)) # SCREEN.fill((WHITE)) imgWheat = pygame.image.load('img/wheat.png') imgCarrot = pygame.image.load('img/carrot.png') imgCabbage = pygame.image.load('img/cabbage.png') imgPlayer = pygame.image.load('img/player.png') global imgTree imgTree = pygame.image.load('img/tree.png') # pygame.display.update() i = 0 while i < len(T): j = 0 while j < len(T[i]): # color = (255, 255, 255, 0) if T[i][j].isWet == 0: # a = 1 color = (160, 80, 40, 0) else: # a = 1 color = (50, 25, 0, 0) #colour from the beginning pygame.draw.rect(SCREEN, color, pygame.Rect(50 + 50 * i, 50 + 50 * j, 50, 50)) if T[i][j].plantType == 1: SCREEN.blit(imgWheat, (50 + 50 * i, 50 + 50 * j)) if T[i][j].plantType == 2: SCREEN.blit(imgCarrot, (50 + 50 * i, 50 + 50 * j)) if T[i][j].plantType == 3: SCREEN.blit(imgCabbage, (50 + 50 * i, 50 + 50 * j)) if T[i][j].plantType == 4: SCREEN.blit(imgTree, (50 + 50 * i, 50 + 50 * j)) j = j + 1 i = i + 1 i = 0 while i < len(T)+1: pygame.draw.line(SCREEN, (0, 0, 0), (50 + i * 50, 50), (50 + i * 50, 50 + len(T) * 50), 1) pygame.draw.line(SCREEN, (0, 0, 0), (50, 50 + i * 50), (50 + len(T) * 50, 50 + i * 50), 1) i = i + 1 for obs in obstacleObjects: obstacleObjects[obs].draw() # if startNode.state != goalNode.state: if startNode.x != goalNode[0] or startNode.y != goalNode[1] : for bx in boxObjects: boxObjects[bx].draw() tmpImg = pygame.transform.rotate(imgPlayer, player.rotation) if player.rotation == 180: tmpImg = pygame.transform.flip(tmpImg, True, True) tmpImg = pygame.transform.flip(tmpImg, True, False) #player seen at the beginning SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y)) # if Ucelu == False: # for bx in boxObjects: # boxObjects[bx].draw() font = pygame.font.SysFont('comicsans', 18) label = font.render('f- punkt końcowy, x- drzewa, spacja- uruchomienie', 1, (0, 0, 0)) label1 = font.render('strzałki-ręczne poruszanie traktorem,', 1, (0, 0, 0)) label2 = font.render('a- obrót w lewo, d- w prawo, w-ruch naprzód', 1, (0, 0, 0)) label3 = font.render('b - uruchom A*', 1, (0, 0, 0)) SCREEN.blit(label, (10, 570)) SCREEN.blit(label1, (10, 590)) SCREEN.blit(label2, (10, 610)) SCREEN.blit(label3, (10, 630)) # pygame.display.flip() pygame.display.update() CLOCK.tick(FPS) # Done! Time to quit. pygame.quit()