
Harcban
Februarban neveztem eloszor a Google AI challengre, amikor Tront jatszo botot kellett irni. Utolag atgondolva a dolgot, az a feladat nem is annyira az AIrol szolt, inkabb a min-max algoritmus ugyes implementalasarol. Ennek megfeleloen nem voltam tulzottan lelkes, amikor a batyam bejelentette, hogy megint van egy AI challenge, de azert megnezegettem, mi a lenyeg iden.
A mostani jatek szinten nagyon egyszeru elso latasra: Vannak bolygok, amik lehetnek a jatekose, az ellenfele, illetve fuggetlenek. Minden bolygon van egy bizonyos szamu hajo, es a jatekos es az ellenfel bolygoi folyamatosan termelik az uj hajokat a merettol fuggo mennyisegben. A bolygokrol el lehet kuldeni flottakat masik bolyogkra, akik vagy megtamadjak azt (ha ellenfel vagy fuggetlen) vagy csatlakoznak hozza (ha sajat).
Tobbfelekeppen lehet nyerni:
1: lenyomod az ellenfelet teljesen, azaz se bolyogja, se eppen repulo flottaja nincs
2: Ha lejar a kor limit (jelenleg 200) es neked tobb hajod van.
3: Ha az ellenfel rossz lepest ad ki, akkor azonnal vesztett, szoval ilyenkor is te nyertel..
Az utobbi ketto mod amugy dontetlent is eredmenyezhet.
Ez a jatek, bar elsore nagyon egyszerunek latszik, valojaban egeszen osszetett taktikakat igenyelhet, es nincs olyan algoritmus, amivel pikk-pakk meg lehetne nyerni.
Peldaul, azonnal kikuldesz minden hajot, vagy nehany koronkent egy nagyobb flottat? Mennyit tartasz a bolygokon? Figyeled-e az ellenfel mozgasat, vagy csak azzal foglalkozol, hogy te mit akarsz csinalni? A fuggetleneket tamadod, vagy az ellenfelet?
Az en elso botom annyira egyszeru volt, mint egy bot (pun intended). Egy bolygorol kuldtem ki hajokat, az osszes tobbi csak erre a bolygora kuldott minden termelest, meghagyva mindig a bolygon kb. 40 hajot. A “fo” bolygo meg kivalasztott a palyarol egy nagy bolygot, aztan odakuldott mindent, amig el nem foglalta. Biztos vannak olyan botok, akiket ezzel a taktikaval meg lehet verni, de nagyon hamar rajottem, hogy a hajoim folosleges utaztatasa eleg folosleges, inkabb minden bolygorol azonnal el kene kuldeni a termelest a celbolygora.
Innen indultam. Mostanra a kod sokszorosan bonyolultabb, a jatek allasatol fuggoen valtoztatja a taktikajat a bot, a bolygok figyelik, hogy tamadjak-e oket, es ha igen, akkor vedekeznek, etc. Nagyon tetszik a kihivas, rengeteget gondolkozom azon, hogy lehetne fejleszteni a taktikat meg, es nezem a meccseimet, hogy hogyan nyertem vagy miert vesztettem.
Akit erdekel, megnezheti az aktualis botom meccseit itt:
Moonson
Egy tovabbi elonye a mostani versenynek, hogy ugy gondoltam, most a valtozatossag kedveert nem Javaban, hanem Pyhonban fogom a botom kesziteni. Korabban a python nyelvvel csak futolag talalkoztam, atolvastam egy konyvet, meg szuttyogtem kicsit a konzolon, de semmi komolyat nem alkottam benne. Ehhez kepest most egy csomo dolgot fel kellett hasznalom, amirol eddig csak halvany elkepzelesem volt, hogy jobb, okosabb, hatekonyabb kodot irjak.
Vicces, mennyire alkalmasak ezek a versenyek a programozas elsajatitasara. A kezdocsomagban kapsz egy kicsi programot, amit kedvedre modosithatsz. Kezdheted egy passziv bottal: semmi mas parancsot nem ad ki, csak a kor veget. Aztan mondjuk fogod a bolygok listajat, kivalasztasz egyet, es odakuldesz 50 hajot. Megnezed, hogy mi tortenik. Aztan tovabb, tovabb, mig a vegen mar lambdakkal es list comprehensionnel dobalozol, hogy egy sorban legyen meg az ellenfel ot legjobb bolygojanak a listaja.
Minden ismerosomnek nagyon ajanlom, aki erdeklodik a programozas irant. Jo kis ujjgyakorlat, kellemes kihivas, es bar gyozni szinte lehetetlen (nagyon okos csavok is jatszanak am) nagyon jo latni, amikor a botod nyer egy harcot.