FieldWalk

../../../_images/fieldwalk.png

This game represents a search in a square graph of the shortest path. In a square of NxM, each cell has a cost that represents the cost of passing through that cell. From each cell, the player can go to one of the 4 adjacent cells (up, down, left, right). The objective is to reach the bottom-right cell [N-1,M-1] from the top-left cell [0,0] with the minimum cost.

Goal

Starting at [0,0], the goal is to reach [N-1,M-1] with the minimum cost.

Score

The score of the game is the sum of the values of the squares that the player has passed through (initial square does not count).

Import

from IArena.games.FieldWalk import FieldWalkPosition
from IArena.games.FieldWalk import FieldWalkMovement
from IArena.games.FieldWalk import FieldWalkRules

Movement

A movement is represented an int: direction.

  • direction - int - 0 <= direction <= 3 - Indicates the direction of the movement - Some movements are not possible if they go out of the board

Direction

Enumeration of the possible directions:

  • Up - 0

  • Down - 1

  • Left - 2

  • Right - 3

# To move up
movement = FieldWalkMovement.up()
# or
movement = FieldWalkMovement(
  direction=FieldWalkMovement.Direction.Up)

Position

A position is represented by 3 int. One indicates the x axis, other the y axis and the last one the cost to arrive to the current position.

# position : FieldWalkPosition
position.x     # X axis [0, N-1]
position.y     # Y axis [0, M-1]
position.cost  # Cost to arrive to this position

Rules

Constructor

Can receive the map, or let it be created randomly.

# Initiate with a map of 2x2 with cost 1
rules = FieldWalkRules(initial_map=FieldWalkMap([[1,1],[1,1]]))

# Initial position board 5x4 with random cost
rules = FieldWalkRules(rows=5, cols=4)

# Replicable initial position board 5x4 with random cost
rules = FieldWalkRules(rows=5, cols=4, seed=0)

Map

This game counts with a class FieldWalkMap that represents the grid of the game. This is created from a List[List[int]]. The method get_matrix() returns the list of lists with all the values.

# get the FieldWalkMap
fw_map = rules.get_map()

# Get the size
N, M = len(fw_map)
# or
N, M = fw_map.goal()

# Get the matrix of the map
fw_map.get_matrix().get_matrix()

# Get the value of the final position
value = fw_map.get_matrix()[N-1][M-1]
# or
value = fw_map[N-1,M-1]