3.6.3. 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.

Uwaga

Położenie robota (loc) reprezentowane jest przez tuplę (x, y).


3.6.3.1. rg.dist(loc1, loc2)

Zwraca matematyczną odległość między dwoma położeniami.


3.6.3.2. 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.


3.6.3.3. 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'].


3.6.3.4. 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ść.


3.6.3.5. rg.toward(current_loc, dest_loc)

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.


3.6.3.6. rg.CENTER_POINT

Stała (ang. constant) definiująca położenie środkowego punktu planszy.


3.6.3.7. 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.

3.6.3.8. 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.

Informacja

Niniejsza dokumentacja jest nieautoryzowanym tłumaczeniem oficjalnej dokumentacji dostępnej na stonie RobotGame.


Licencja Creative Commons Materiały Python 101 udostępniane przez Centrum Edukacji Obywatelskiej na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowa.

Utworzony:2022-05-22 o 19:52 w Sphinx 1.5.3
Autorzy:Patrz plik “Autorzy”