From 538b25c07aa2d7a94e19de5cb489ea64459ab41d Mon Sep 17 00:00:00 2001 From: Hubert Westerlich Date: Sun, 12 May 2024 14:18:44 +0200 Subject: [PATCH] Getting actions for each tile --- src/tractor.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/tractor.py b/src/tractor.py index d07d002f..a04f9382 100644 --- a/src/tractor.py +++ b/src/tractor.py @@ -1,3 +1,5 @@ +from typing import Optional + import pygame import os from kb import ile_podlac, multi_sasiedzi @@ -5,6 +7,7 @@ from tile import Tile from config import TILE_SIZE, FINAL_X, FINAL_Y, START_X, START_Y, STARTING_DIRECTION from collections import deque import heapq +from decisiontree import model import random class Tractor(pygame.sprite.Sprite): @@ -30,6 +33,30 @@ class Tractor(pygame.sprite.Sprite): self.actions = self.recreate_actions(path) self.action_index = 0 + def next_turn(self): + data=[] + actions=[][16] + for i in range(16): + for j in range(16): + current_tile = self.field.tiles.sprites()[j * 16 + i] + x, y = i, j + neighbors = self.get_neighbors_types(x, y) + water_needed = ile_podlac(current_tile.type, current_tile.faza)[0]['Woda'] + modifier = multi_sasiedzi(current_tile.type, neighbors)[0]['Mul'] + + # Tworzenie obiektu danych dla danego pola + data_point = { + "tile_type": current_tile.type, + "water_level": current_tile.water_level, + "plant_stage": current_tile.stage, + "neighbor_N": neighbors[0] if len(neighbors) > 0 else None, + "neighbor_E": neighbors[1] if len(neighbors) > 1 else None, + "neighbor_W": neighbors[2] if len(neighbors) > 2 else None, + "neighbor_S": neighbors[3] if len(neighbors) > 3 else None + } + data.append(data_point) + actions[i][j] = model.predict(data_point)[0] + return actions def draw(self, surface): surface.blit(self.image, self.rect)