Gra robotów udostępnia bibliotekę ułatwiającą programowanie. Zawarta jest w module rg
, który importujemy na początku pliku instrukcją import rg
.
Attention
Położenie robota (loc
) reprezentowane jest przez tuplę (x, y).
Zwraca matematyczną odległość między dwoma położeniami.
Zwraca różnicę w ruchach między dwoma położeniami. Ponieważ robot nie może poruszać się na ukos, jest to suma dx + dy
.
Zwraca listę typów położeń wskazywanych przez loc
. Możliwe wartości to:
invalid
– poza granicami planszy(np. (-1, -5) lub (23, 66));normal
– w ramach planszy;spawn
– punkt wejścia robotów;obstacle
– pola, na które nie można się ruszyć (szare kwadraty).
Metoda nie ma dostępu do kontekstu gry, np. wartość obstacle
nie oznacza, że na sprawdzanym kwadracie nie ma wrogiego robota; wiemy tylko, że dany kwadrat jest przeszkodą na mapie.
Zwrócona lista może zawierać kombinacje wartości typu: ['normal', 'obstacle']
.
Zwraca listę położeń sąsiadujących z loc
. Jako drugi argument filter_out
można podać listę typów położeń do wyeliminowania. Dla przykładu: rg.locs_around(self.location, filter_out=('invalid', 'obstacle'))
– poda listę kwadratów, na które można wejść.
Zwraca następne położenie na drodze z bieżącego miejsca do podanego. Np. poniższy kod:
import rg
class Robot:
def act(self, game):
if self.location == rg.CENTER_POINT:
return ['suicide']
return ['move', rg.toward(self.location, rg.CENTER_POINT)]
– skieruje robota do środka planszy, gdzie popełni on samobójstwo.
Stała (ang. constant) definiująca położenie środkowego punktu planszy.
Specjalny typ słownika (AttrDict) zawierający ustawienia gry.
rg.settings.spawn_every
– ilość rozegranych rund od wejścia robota do gry;rg.settings.spawn_per_player
- ilość robotów wprowadzonych przez gracza;rg.settings.robot_hp
– domyślna ilość punktów HP robota;rg.settings.attack_range
– tupla (minimum, maksimum) przechowująca zakres uszkodzeń wyrządzonych przez atak;rg.settings.collision_damage
– uszkodzenia wyrządzone przez kolizję;rg.settings.suicide_damage
– uszkodzenia wyrządzone przez samobójstwo;rg.settings.max_turns
– liczba rund w grze.
Ponieważ struktura game.robots
jest słownikiem robotów, w którym kluczami są położenia, a wartościami roboty, można użyć testu (x, y) in game.robots
, który zwróci True
, jeśli w danym położeniu jest robot, lub Flase
w przeciwnym razie.
Note
Niniejsza dokumentacja jest nieautoryzowanym tłumaczeniem oficjalnej dokumentacji dostępnej na stonie RobotGame.