3.1. Zasady i zaczynamy¶
RobotGame to gra, w której walczą ze sobą programy – roboty na planszy o wymiarach 19x19 pól. Celem gry jest umieszczenie na niej jak największej ilości robotów w ciągu 100 rund rozgrywki.
Czarne pola (ang. obstacle) wyznaczają granicę areny walk, zielone pola (ang. spawn points) to punkty wejścia, w których co 10 rund pojawia się po 5 robotów, każdy z 50 punktami HP (ang. health points) na starcie.
W każdej rundzie każdy robot musi wybrać jedno z następujących działań:
- Ruch (ang. move) na przyległe pole w pionie (góra, dół) lub poziomie (lewo, prawo). W przypadku, kiedy w polu docelowym znajduje się lub znajdzie się inny robot następuje kolizja i utrata po 5 punktów HP.
- Atak (ang. attack) na przyległe pole, wrogi robot na tym polu traci 8-10 punktów HP.
- Samobójstwo (ang. suicide) – robot ginie pod koniec rundy zabierając wszystkim wrogim robotom obok po 15 punktów HP.
- Obrona (ang. guard) – robot pozostaje w miejscu, tracąc połowę punktów HP w wyniku ataku lub samobójstwa.
W grze nie można uszkodzić własnych robotów.
3.1.1. Sztuczna inteligencja¶
Zadaniem gracza jest stworzenie sztucznej inteligencji robota, która pozwoli mu w określonych sytuacjach na arenie wybrać odpowiednie działanie. Trzeba więc: określić daną sytuację, ustalić działanie robota, zakodować je i przetestować, np.:
- Gdzie ma iść robot po po wejściu na arenę?
- Działanie: “Idź do środka”.
- Jaki kod umożliwi robotowi realizowanie tej reguły?
- Czy to działa?
Aby ułatwić budowanie robota, przedstawiamy kilka przykładowych reguł i “klocków”, z których można zacząć składać swojego robota. Pokazujemy również, jak testować swoje roboty. Nie podajemy jednak “przepisu” na robota najlepszego. Do tego musisz dojść sam.
3.1.2. Środowisko testowe¶
Do budowania i testowania robotów używamy biblioteki rg z pakietu rgkit.
Przygotujemy więc środowisko deweloperskie w katalogu robot
.
Attention
Jeżeli korzystasz z polecanej przez nas na warsztaty dystrybucji LxPupXenial,
środowisko testowe jest już przygotowane w katlogu ~/robot
.
W terminalu wydajemy polecenia:
~$ mkdir robot; cd robot
~robot$ virtualenv env
~robot$ source env/bin/activate
(env):~/robot$ pip install rgkit
Dodatkowo instalujemy pakiet zawierający roboty open source, następnie symulator ułatwiający testowanie, a na koniec tworzymy skrót do jego uruchamiania:
(env):~/robot$ git clone https://github.com/mpeterv/robotgame-bots bots
(env):~/robot$ git clone https://github.com/mpeterv/rgsimulator.git
(env):~/robot$ ln -s rgsimulator/rgsimulator.py symuluj
Po wykonaniu wszystkich powyższych poleceń i komendy ls -l
powinniśmy zobaczyć:
Kolejne wersje robota proponujemy zapisywać w plikach robot01.py, robot02.py itd. Będziemy mogli je uruchamiać lub testować za pomocą poleceń:
(env)~/robot$ rgrun robot01.py robot02.py
(env)~/robot$ rgrun bots/stupid26.py robot01.py
(env)~/robot$ python ./symuluj robot01.py robot02.py
3.1.3. Obsługa symulatora¶
- Klawisz F: utworzenie robota-przyjaciela w zaznaczonym polu.
- Klawisz E: utworzenie robota-wroga w zaznaczonym polu.
- Klawisze Delete or Backspace: usunięcie robota z zaznaczonego pola.
- Klawisz H: zmiana punktów HP robota.
- Klawisz C: wyczyszczenie planszy gry.
- Klawisz Spacja: pokazuje planowane ruchy robotów.
- Klawisz Enter: uruchomienie rundy.
- Klawisz G: tworzy i usuwa roboty w punktach wejścia (ang. spawn locations), “generowanie robotów”.
Attention
Opisana instalacja zakłada użycie środowiska wirtualnego tworzonego
przez polecenie virtualenv, dlatego przed uruchomieniem rozgrywki
lub symulacji trzeba pamiętać o wydaniu w katalogu robot
polecenia
source env/bin/activate
. Poleceniem deactivate
opuszczamy
środowisko wirtualne.
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: | 2017-09-08 o 19:38 w Sphinx 1.4.5 |
---|---|
Autorzy: | Patrz plik “Autorzy” |