a_star #21

Merged
s464961 merged 15 commits from a_star into master 2022-04-27 19:50:51 +02:00
4 changed files with 32 additions and 6 deletions
Showing only changes of commit f4ec5b5869 - Show all commits

25
algorithms/a_star.py Normal file
View File

@ -0,0 +1,25 @@
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Tuple, Optional
from common.constants import Direction
@dataclass
class State:
position: Tuple[int, int]
direction: Direction
@dataclass
class Node:
state: State
parent: Optional[Node]
action: str
cost: int = field(init=False)
depth: int = field(init=False)
def __post_init__(self) -> None:
self.cost = 0 if not self.parent else self.parent.cost + 1
self.depth = self.cost

View File

@ -114,7 +114,7 @@ def go(row, column, direction):
def is_valid_move(map, target_row, target_column):
if 0 <= target_row < ROWS and 0 <= target_column < COLUMNS and map[target_row][target_column] == ' ':
if 0 <= target_row < ROWS and 0 <= target_column < COLUMNS and map[target_row][target_column] in ['g', 's', ' ']:
return True
return False

View File

@ -29,6 +29,7 @@ CASTLE_SPAWN_FIRST_COL = 9
NBR_OF_WATER = 16
NBR_OF_TREES = 20
NBR_OF_MONSTERS = 2
NBR_OF_SANDS = 15
TILES = [
'grass1.png',

View File

@ -8,7 +8,7 @@ class Spawner:
self.map = map
def __is_free_field(self, field):
return field == ' '
return field in ['g', 's', ' ']
def spawn_in_area(self, objects: list, spawn_area_pos_row=0, spawn_area_pos_column=0, spawn_area_width=0,
spawn_area_height=0, size=1):