Robocod
Robocod software | |
---|---|
Sigla proiectului | |
Tip | Edutainment |
Dezvoltator | Mathew Nelson, Flemming N. Larsen |
Ultima versiune | 1.8.2.0 (06-06-2013) |
Sistem de operare | Multiplatform |
Limba | Java |
Licență | Licență publică comună ( licență gratuită ) |
Site-ul web | robocode.sourceforge.net/ |
"Construiește cele mai bune, distruge restul!" |
( Deviza Robocode ) |
Robocode este un proiect open source al cărui scop este să predea programarea Java în timp ce se distrează.
Învățarea are loc printr-un joc care constă în programarea unui robot și a-l face să concureze într-o arenă împotriva altor roboți identici, dar diferit programați.
Jucătorul este programatorul robotului și influențează indirect jocul realizând inteligența artificială a robotului său.
Istorie
Robocode a fost creat de un cercetător din campusul IBM Cambridge , Mat Nelson. Lansat pe 27 iulie 2001 folosind laboratorul de cercetare AlphaWorks, care le pune la dispoziția utilizatorilor.
Robocode a fost dezvoltat din 2006 de către Flemming N. Larsen sub licența publică comună , o licență de software open source publicată de IBM.
Aspecte didactice
Scopul principal al Robocode este de a preda programarea în Java: jucătorul se confruntă cu dezvoltarea algoritmilor care permit roboților să demonstreze abilități inteligente în domeniul specific al Robocode. Jucătorii începători învață cunoștințe de bază, cum ar fi moștenirea , polimorfismul , gestionarea evenimentelor, cursurile , în timp ce jucătorii mai experimentați testează concepte precum potrivirea modelelor , algoritmi de căutare optimizați, rețele neuronale .
Motorul grafic care efectuează simularea luptelor oferă posibilitatea de a „vedea” efectele algoritmilor creați; în acest fel jucătorul participă activ la construcția cunoștințelor. Această abordare este utilizată și în LOGO , un limbaj de programare orientat către grafică.
În timp ce Robocode nu este un simulator ideal, simplitatea sa l-a făcut popular. De asemenea, este posibil să vă comparați munca cu cea a mii de Robocoderi (dezvoltatori de roboți). Pentru a executa în siguranță codul roboților programați de alte persoane, Robocode a fost construit ca un sandbox și toți roboții au restricții privind utilizarea mașinii în care sunt rulați.
Trebuie remarcat faptul că nu există sânge, oameni sau referințe politice în Robocode. Luptele se petrec pentru distracția inerentă competițiilor.
Înțeles Robocode
Robocode este un simulator de luptă robot, portabil pe toate platformele care acceptă Java. În simulare, programarea aspectelor fizice este redusă la esențial și legătura dintre percepție și acțiune devine fundamentală.
Caracteristici tehnice
În Robocode, tancurile (roboții) luptă într-o bătălie care are loc într-un dreptunghi numit arenă de dimensiuni diferite și înconjurat de ziduri. Dimensiunea arenei este de 800x600 pixeli, dar poate fi modificată; roboții au o dimensiune fixă de 36x45 pixeli.
O bătălie constă într-un număr de runde stabilite de utilizator. Câștigătorul bătăliei este robotul cu cel mai mare scor la finalul tuturor rundelor. O rundă se încheie când toți roboții, cu excepția unuia, au fost distruși: „supraviețuitorul” este câștigătorul. Roboții încep fiecare rundă cu un nivel de energie de 100 și sunt distruse când scade sub zero.
Schimbările
Robocode se bazează pe conceptul de schimburi. În fiecare rând, toți roboții au o perioadă limitată de timp pentru a-și alege acțiunea. Când un robot și-a finalizat rândul, acțiunile sale sunt efectiv realizate secvențial.
Dacă un robot își depășește limita de timp pentru un turn, își pierde dreptul de a efectua acțiuni în acel turn. Dacă acest lucru se întâmplă de mai mult de treizeci de ori într-o rundă, robotul este distrus de sistem și pierde runda respectivă. Aceasta înseamnă că abilitățile roboților trebuie să fie un compromis între complexitatea lor de calcul și timpul necesar pentru a reacționa la evenimente.
Elementele unui tanc
Roboții se luptă folosind un tun. De asemenea, sunt echipate cu un radar cu care „văd” alți roboți până la o distanță de 1200 pixeli .
Radarul, tunul și corpul (întregul vehicul) al tancului se rotesc 360 de grade independent unul de celălalt sau tunul poate fi blocat pentru a urmări rotația vehiculului sau radarul poate fi blocat pentru a urma rotația tunul sau vehiculul.
Radarul
Radarul returnează informații despre roboți în raza sa de detectare. Unele dintre aceste informații sunt viteza, distanța (în pixeli), numele și energia, direcția și poziția. Aceste ultime două informații sunt similare cu cele utilizate în orientare și topografie : în Robocode zero-ul unghiurilor este în sus, ca și cum ar fi o busolă , și nu în dreapta ca în trigonometrie .
|
Tunul
Tunul poate trage cu o putere de foc variabilă și, proporțional cu puterea utilizată, energia este luată de la robotul care trage. Dacă glonțul lovește un adversar, robotul care trage câștigă energie proporțional cu puterea glonțului.
Roboții trebuie să aștepte între fiecare împușcare timpul necesar reîncărcării, care este definit la începutul bătăliei și este același pentru toți roboții. Gloanțele se deplasează cu o viteză în raport cu puterea de foc: cu cât puterea de foc este mai mică, cu atât este mai mare viteza glonțului.
Tabelul următor prezintă un exemplu de daune provocate, energie bonus de la lovirea unui adversar și viteza glonțului în raport cu puterea de foc.
Puterea de foc | Paguba cauzata | Energia primită | Viteza glonțului (pixeli / rotație) |
---|---|---|---|
0,1 | 0,4 | 0,3 | 19.7 |
1.0 | 4.0 | 3.0 | 17 |
2.0 | 10.0 | 6.0 | 14.0 |
3.0 | 16.0 | 9.0 | 11.0 |
Mișcările tancului
Roboții se mișcă cu accelerație constantă și viteză variabilă (înainte și înapoi). Viteza pozitivă indică mișcarea înainte și viteza negativă indică mișcarea înapoi. Viteza maximă a roboților este de 8 pixeli / schimbare.
Dacă doi roboți se ciocnesc, pierd 0,6 puncte de energie. Dacă un robot lovește un adversar cu partea din față a vehiculului în timp ce se deplasează înainte, mișcarea este considerată lovitură. Atunci când un robot este lovit, acesta primește un scor suplimentar.
Sistemul de notare
Robocode folosește un sistem de punctare pentru a determina câștigătorul unei bătălii. Câștigătorul nu este neapărat robotul care supraviețuiește cele mai multe runde, deoarece punctele sunt acordate în conformitate cu aceste reguli:
- dacă un robot efectuează ramming, i se acordă 2 puncte înmulțite cu daunele provocate adversarului în contact.
- dacă un robot îl distruge pe altul în timp ce bate, acesta este atribuit în puncte 30% din totalul daunelor provocate robotului.
- fiecare robot „viu” primește 50 de puncte de fiecare dată când un robot este distrus;
- robotului „supraviețuitor” din rundă i se acordă o sumă de 10 puncte pentru fiecare robot distrus în runda respectivă;
- un punct este atribuit fiecărei lovituri;
- dacă distrugeți un robot, 20% din daunele totale provocate acelui robot sunt atribuite în puncte;
Câștigătorul final este robotul cu cele mai multe puncte după finalizarea tuturor rundelor.
Competiții
Pentru competiții, roboții sunt împărțiți în categorii în mod similar cu boxul, unde greutatea unui boxer determină categoria de care aparțin.
Un robot aparține unei categorii bazate pe mărimea codului (compilat) cu care este programat. Codul unui robot este măsurat în octeți și au fost identificate următoarele categorii:
- Megaboti , fără restricții privind dimensiunea codului;
- Minibots , codul este mai mic de 1500 de octeți;
- Microboți , codul este mai mic de 750 de octeți;
- Nanoboti , codul este mai mic de 250 de octeți;
Roboții se confruntă în următoarele tipuri de lupte:
- OneOnOne , prescurtat la 1-la-1: în arenă există doi roboți care luptă unu la unu.
- Melee : Trei sau mai mulți roboți luptă împotriva tuturor.
- Echipe : Două sau mai multe echipe, fiecare formată din cinci roboți colaboratori.
RoboRumble @ Home
Cea mai importantă competiție este RoboRumble @ Home, bazat pe un sistem distribuit similar cu SETI @ home . RoboRumble @ Home vă permite să efectuați lupte de tip 1 la unu, Melee și Teams. Luptele la corp și luptele 1 la 1 sunt disponibile pentru toate cele patru tipuri de roboți.
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere pe Robocode
linkuri externe
- Site-ul oficial , pe robocode.sourceforge.net .
- Robocode , pe packages.debian.org .
- Laboratorul de cercetare AlphaWorks , la alphaworks.ibm.com .
- Site-ul nativ Robocode , la alphaworks.ibm.com .
- Seria de articole introductive IBM , la ibm.com .
- Sfaturi și strategii IBM , la ibm.com .
- RoboWiki , pe robowiki.net .
- Întrebări frecvente pentru Robocoders , pe robowiki.net .
- RoboRumble @ Home , pe robowiki.net .
- Robocode Irish Competition , la robocode.ie .
- Site-ul german Robocode , la robocode.de .
- Site-ul comunității ruse Robocode , la robocode.org.ru . Adus la 31 iulie 2009. Arhivat din original la 16 martie 2009 .
- Robocode și JGAP (Algoritmi genetici Java și pachet de programare genetică) [ link rupt ] , pe jgap.sourceforge.net .
- Robocode și algoritmi genetici , la hvilela.blogspot.com . Adus la 4 mai 2019 (arhivat din original la 5 martie 2016) .