Roboty, wirtualna arena, igrzyska śmierci …

Źródło: pixabay.com
Źródło: pixabay.com

Czy marzysz o tym, aby stworzony przez Ciebie robot był niezniszczalny? Pokonywał przeciwników bez specjalnych uszkodzeń? Czy chcesz zyskać międzynarodową sławę jako „haker(ka) roku” lub „niestraszony(a) coder”? Teraz to wszystko jest w zasięgu ręki, a właściwie obu rąk, którymi tworzysz …..

Aha, czytasz dalej, zatem interesuje Cię ten temat – to dobrze. Przejdę zatem do konkretów.

Wirtualna arena zmagań.

rg_simul

Roboty walczą ze sobą na specjalnej arenie – trochę przypomina ona szachownicę, ale poza tym jest inna. Roboty pojawiają się w losowo wybranych tzw. punktach wejścia (SPAWN points), a następnie mogą poruszać sie po planszy w sposób, jaki zaprogramujemy, tworząc ich inteligencję (AI) – oczywiście kodując ją w Pythonie.

AI – Artificial Intelligence – Inteligencja naszego robota.

rg_kod_robota

To, w jaki sposób „walczy Twój robot”, zależy tylko od Ciebie. Tworzysz kod w Pythonie, który determinuje zachowanie robota. Możesz uczyć się od najlepszych – inni programiści udostępniają swój kod, Ty również możesz. To nazywa się OpenSource – Otwarty Kod.

# snoflake by sne11ius
# http://robotgame.org/viewrobot/1250

import rg

class Robot:

 def num_enemies(self, game):
     enemies = 0
     for location, bot in game.get('robots').items():
         if bot.get('player_id') != self.player_id:
             if 1 == rg.wdist(self.location, location):
                 enemies += 1
 return enemies

 def num_frieds(self, game):
     friends = 0
         for location, bot in game.get('robots').items():
             if bot.get('player_id') == self.player_id:
                 if 1 == rg.wdist(self.location, location):
                     friends += 1
 return friends

 def act(self, game):
     num_enemies = self.num_enemies(game)
     if num_enemies * 9 > self.hp:
         return ['suicide']

 min_distance = float("inf")
 move_to = rg.CENTER_POINT
 for location, bot in game.get('robots').items():
     if bot.get('player_id') != self.player_id:
         if rg.dist(location, self.location) <= 1:
             return ['attack', location]
     if bot.get('player_id') == self.player_id:
         if rg.wdist(location, self.location) < min_distance:
             min_distance = rg.wdist(location, self.location)
 move_to = location
 if min_distance < 2:
     move_to = rg.CENTER_POINT

 if self.location == rg.CENTER_POINT:
     return ['guard']

 if self.num_frieds(game) > 1:
     return ['guard']

 return ['move', rg.toward(self.location, move_to)]

Walka – czy Twój robot jest odważny?

rg_run

W każdej chwili możesz poddać Twojego robota testowi – uruchamiając „walkę” z dowolnym innym robotem. Przeliczenie 100 rund walki (standardowo) na komputerze z procesorem Core2Duo 2 x 2,26 GHz trwa około 15 sekund. Potem możesz sopokojnie zobaczyć wizualizacje walki.

Wyzwanie – dołącz do nas !

Chcesz spróbować nauczyć się programować takie roboty? Nic prostszego – pokaż ten artykuł nauczycielowi/nauczycielce informatyki z Twojej lub zaprzyjaźnionej szkoły. Centrum Edukacji Obywatelskiej prowadzi projekt o nazwie „Koduj z Klasą”, w którym szkoli nauczycieli  organizuje rozgrywki robotów.

Aby dołączyć do programu, po prostu kliknij link – ZAPISY do Koduj z Klasą.

Jestem jednym z Ambasadorów programu, więc może sie zdarzyć, że pojawię się w Twojej szkole….

„Let the challenge begin…”


Adam Jurkiewicz – haker edukacji, absolwent kursów Massachusetts Institute of Technology z języka programowania Python.

Trener technologii Web 2.0 ze szczególnym uwzględnieniem otwartych zasobów edukacyjnych. Programista, administrator systemów UNIX/Linux, twórca remiksu edukacyjnego FREE_Desktop – remiksu systemu operacyjnego dla wolnych ludzi, legalnego i darmowego dla wszystkich.

Prelegent oraz prowadzący warsztaty dla nauczycieli w trakcie wielu konferencji edukacyjnych, m.in: Od Becika Każdy Klika w Kołobrzegu, K@SSK w Nowym Tomyślu, Ogólnopolski Zjazd Opekunów Pracowni Szkolnych w Mrozach, Nowoczesne Technologie dla Edukacji w Radomiu.

Współpracownik Fundacji Wolnego i Otwartego Oprogramowania, w projekcie „Strategie Wolnych i Otwartych Implementacji” twórca części scenariuszy mechatronicznych zajęć pozalekcyjnych z użyciem oprogramowania Scratch i mikrokontrolerów kompatybilnych z Arduino oraz ekspert ds. systemów i współtwórca systemu operacyjnego Szkolny Remiks Uczniowski.

Współpracownik Fundacji Interkl@sa, w projekcie „E-Pasj@ – nowoczesne nauczanie” ekspert ds. otwartego oprogramowania edukacyjnego. Prowadzi spotkania edukacyjne z nauczycielami w całym kraju.

Współpracownik Centrum Edukacji Obywatelskiej, w projekcie „Koduj z Klasą” ambasador i trener nauczycieli w zakresie języka programowania Python.

Propagator Wolnego i Otwartego Oprogramowania, otwartej cyfrowej mapy OpenStreet Map i wszelkich „otwartych” rozwiązań. Prywatnie – miłośnik szant, stateczny mąż i ojciec, zwariowany nauczyciel młodzieży jeśli tylko ma okazję.

Print Friendly, PDF & Email
Adam Jurkiewicz

Adam Jurkiewicz

Adam Jurkiewicz - haker edukacji, członek nieformalnej grupy SuperbelfrzyRP. Absolwent kursów Massachusetts Institute of Technology z języka programowania Python.

Zdobywca wyróżnienia Szerokiego Porozumienia na Rzecz Umiejętności Cyfrowych Polsce, trener języka programowania Python, robotyki, mechatroniki, technologii komputerowych ze szczególnym uwzględnieniem otwartych zasobów edukacyjnych oraz oprogramowania OpenSource. Programista, administrator systemów UNIX/Linux, twórca remiksu edukacyjnego FREE_Desktop - remiksu systemu operacyjnego dla wolnych ludzi, legalnego i darmowego dla wszystkich - dostępnego na stronie http://free-desktop.pl

Twórca portalu http://robotgame.edu.pl - platformy do współzawodnictwa wśród uczniów, w oparciu o RGKit (OpenSource) - bibliotekę walk robotów w Pythonie. Twórca portalu http://robotyka.cyfrowaszkola.waw.pl - środowiska do sterowania robotami na ekranie w oparciu o projekt Open Source Reeborg - Blockly i Python.
Adam Jurkiewicz

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.