Getting actions for each tile

This commit is contained in:
Hubert Westerlich 2024-05-12 14:18:44 +02:00
parent 37d0084561
commit 538b25c07a

View File

@ -1,3 +1,5 @@
from typing import Optional
import pygame import pygame
import os import os
from kb import ile_podlac, multi_sasiedzi 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 config import TILE_SIZE, FINAL_X, FINAL_Y, START_X, START_Y, STARTING_DIRECTION
from collections import deque from collections import deque
import heapq import heapq
from decisiontree import model
import random import random
class Tractor(pygame.sprite.Sprite): class Tractor(pygame.sprite.Sprite):
@ -30,6 +33,30 @@ class Tractor(pygame.sprite.Sprite):
self.actions = self.recreate_actions(path) self.actions = self.recreate_actions(path)
self.action_index = 0 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): def draw(self, surface):
surface.blit(self.image, self.rect) surface.blit(self.image, self.rect)