Robocod

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Robocod
software
Siglă
Sigla proiectului
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 .

Rezervorul Robocode

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 .

Sistem de referință al unui robot în arenă.
(0, înălțimea arenei) (lățimea arenei, înălțimea arenei)
0 grade
270 de grade robot 90 de grade
180 de grade
(0, 0) (lățimea arenei, 0)
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

linkuri externe