Biblioteka rg ############## *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). .. raw:: html
**rg.dist(loc1, loc2)** ******************************* Zwraca matematyczną odległość między dwoma położeniami. .. raw:: html
**rg.wdist(loc1, loc2)** ******************************** 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``. .. raw:: html
**rg.loc_types(loc)** ******************************* 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']``. .. raw:: html
**rg.locs_around(loc, filter_out=None)** ************************************************* 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ść. .. raw:: html
**rg.toward(current_loc, dest_loc)** ******************************************** Zwraca następne położenie na drodze z bieżącego miejsca do podanego. Np. poniższy kod: .. code-block:: python 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. .. raw:: html
**rg.CENTER_POINT** ***************************** Stała (ang. *constant*) definiująca położenie środkowego punktu planszy. .. raw:: html
**rg.settings** ***************************** 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. .. raw:: html
Czy w danym położeniu jest robot ********************************* 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 `_.