ITI0140 2016 Bomberman

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Bomberman

Eesmärk:

Luua autonoomne bombermani algoritm, mis toimib põhimõttel "There can be only one!". See tähendab, et bomberman käib laual ringi, otsib teisi bombermane ja üritab nad kõrvaldada.

Selleks:

1) Implementeerida Bomberman klassi järglane StudentBomberman.

2) Tekitada loodud klassis meetod bombermanIdentificationNumber, mis tagastaks matrikli ja tudengi nime, detailsemat kirjeldust vaata koodis.

3) Tekitada loodud klassis meetod action, milles toimub järgmise käigu arvutamine, detailset sisendi ja väljundi kirjeldust vaata koodis.

4) Panna oma lahendus git-i kataloogi "BOMB" teisipäeva õhtuks (20.12) ja saata kiri kursuse meiliaadressile (iti0140 ätt cs.ttu.ee), et anda teada oma soovist osaleda.


Saadetud lahendustest tekitame turniiri ja vaatame, kelle lahendused kõige vingemad on.


Simulaator:

Simulaator: bomberman.py

Tudengi lahendus student_bomberman.py

NB! Failide nimetused on siin wikis suure algustähega. Need tuleb ära muuta väikeseks: bomberman.py ja student_bomberman.py

student_bomberman.py fail on see, mida peab muutma. See fail tuleb saata testrisse ja hiljem ka võistlusele.



Dokumentatsiooni tasub lisaks vaadata koodist. Olemas on kolm implementatsiooni:

1) PassiveBomberman - ei tee midagi

2) InteractiveBomberman - küsib kasutajalt järgmist käiku

3) SuicideBomberman - katkine lahendus, mis näitab, kuidas toimitakse lahendusega, mis käigu arvutamisel katki läheb.

Turniir

Turniiril osalevad ka eelmise aasta lahendused. Nii on põnev teada saada, kas selle aasta lahendused on võimekamad kui eelmise aasta omad.

Turniir toimub viimases tunnis (17. detsembril). Turniir mängitakse maha kasutades bombermani turniiriprogrammi ja see näidatakse projektoriga seinale.

KKK

Kas on võimalik osaleda tiimiga?

Jah. Võite osaleda kahekesi ühe tiimina - eelistame siiski individuaalset osalemist, sest nii õpite te rohkem.

Kui on kaks pommi kõrvuti ning üks lõhkeb, kas siis lõhkeb ka teine pomm seal kõrval?

Jah.

Kui üks mängijatest soovib ruudule pommi panna ning teine soovib samal ajal sinna liikuda, kas siis kasutatakse ka randomi?

Jah. Mängijate käigud lahendatakse juhuslikus järjekorras. Kes jõuab juhuslikult ette, saab käigu tehtud.

Kas pommi panemisel mängija seisab ühe käigu?

Jah. Pommi panemine ongi käik.

Kas võitlus toimub 1vs1 või on platsil rohkem mängijaid?

Tänavune võistlus on 1 vs 1.

Mis väärtused saab pommi delayks panna?

Jälgige ja kasutage simulaatori Constants klassi väärtusi.

Kui pomm jõuab 0i kas kõigepealt lõhkeb pomm või jõuab mängija veel ühe käigu enne teha?

Kõigepealt kärab pauk ära, siis on alles käigud. St, kui laual on 0 ja mängija on selle lõhkeulatuses, siis on mängija kutu-piilu. Kui laual on 1 ja mängija on selle lõhkeulatuses, siis jõuab ühe käigu veel ära teha. Arvestades, et pommid lõhatakse enne mängija käike, siis 0-i ei peaks mängijad üldse nägema.

Kui suure mänguväljakuga peaks arvestama?

Arvestada võib väljakuga, mis ei ole suurem kui 20x20 ruutu.

Kui palju on käigu tegemiseks aega?

Käigu peaks ära tegema kiiremini kui 1 sekund. Kui action() funktsioon ei returni selleks ajaks, siis paremal juhul jäävad järgmised üle aja läinud käigud vahele (mõõdetakse aeg palju käigu tegemiseks tegelikult kulus). Halvemal juhul ei arvestata üldse tulemust kui aeg üle läheb (automaatne "pass").