ITI0011-2016:HW03 Ussimäng

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Tagasi ITI0011 lehele.

Üldine

Kolmas kodutöö aines Programmeerimise põhikursus Javas (ITI0011)
Kaust gitis: HW03
Kaitsmised: 18. - 22. aprill 2016

Ülesanne tuleb lahendada kasutades JavaFX raamistikku või Android platvormile.

Põhiosa (4p)

Realiseerida ussimäng. Uss liigub mööda ekraani, liikumist saab juhtida, eesmärk on koguda aardeid ja võimalikult kaua elus püsida.

Põhiosa jaoks on vaja realiseerida ussi liikumine koos sabaga. Alati on ekraanil vähemalt üks aare, mille "korjamisel" (kui uss liigub aarde peale) saab punkte. Punktid kuvatakse mängijale ekraanil.

Ussi saab juhtida hiirega. Kui hiire kursorit liigutada, pöörab uss kas vasakule või paremale. Pööramine peaks toimuma sujuvalt (näiteks kuni 10 kraadi võrra, aga proovige kindlasti läbi ka, kas õnnestub ohuolukorras välja keerata (näiteks nurgale lähenedes)).

Kui uss korjab aarde, läheb ta seeläbi alguses paksemaks, aga lühikese aja möödudes muutub tagasi kõhnemaks, aga seejuures pikeneb (klassikaliselt uss kohe pikeneb, siin mängus toimub pikenemine väikese viitega). Näiteks ussi pikkus on 10 ühikut, laius 2 ühikut. Uss sööb aarde ära, ussi paksus on 3 ühikut, pikkus on endiselt 10 ühikut. Näiteks 10 sammu pärast muutub ussi paksus tagasi 2 ühiku peale, aga ussi pikkus pikeneb näiteks 15 ühikuni.

Kui uss läheb enda saba või seina vastu, saab mäng läbi (või realiseerite ussimängu mitme eluga - sellisel juhul kaotab ta ühe elu).

Realiseerida seadete vaade. Sealt võiks saada seadistada näiteks ussi algset pikkust, liikumiskiirust, aarde söömisel pikkuse kasvu jms. Seaded tuleb salvestada faili (või andmebaasi). Mängu taasavamisel peavad seaded olema need, mis eelmise mängu korral sai määratud.

Nagu ülesande tekstist näha, on teil väga palju vabadust. Näiteks aarde suuruse, ussi pikenemise, ussi liikumiskiiruse jms väärtused või väärtuste vahemikud (seadete jaoks) määrate ise "mõistlikult". Mäng ei tohiks olla liiga kerge ega liiga raske.

Võimalikud lisaosad

Toome allpool välja mõned võimalikud lisaosad. Kui soovid realiseerida midagi, mida all kirjas pole, uuri see eelnevalt õppejõududelt üle. Üldiselt on teretulnud tudengite enda mõtted.

Lisaosa: sinka-vonka liikumine (1p)

Uss selle asemel, et liikuda punktist punkti sirgjooneliselt, teeb seda S-kujuliselt kahele poole vingerdades.

Lisaosa: erinevat tüüpi aarded (1p)

Mängus on erinevat tüüpi aardeid. Näiteks võiks vähemalt sellised olla:

  • aare, mis jookseb eest ära (küll ehk natuke aeglasemalt kui uss)
  • aare, millel on taimer (mingi kindel aeg, mille jooksul ta kättesaadav on). vastavalt ajale muudab kas värvi või läbipaistvust vms. Punkte võiks saada näiteks seda rohkem, mida varem selleni jõuad.
  • aare, mis annab trahvipunkte (võib siis teist värvi olla, aga näiteks hästi suur).

jne.

Lisaosa: takistused (1p)

Mängu peab saama ehitada labürinti või takistavaid seinu. Selliselt võiks paar erinevat taset olla. Kui üks tase on "läbi" mängitud, saaks järgmisele (keerulisemale) tasemele.

Lisaosa: mitu ussi (1p)

Mängu võiks saada mängida mitmekesi. Näiteks teine mängija juhib ussi klaviatuuriga - üks nupp keerab natuke paremale, teine nupp keerab natuke vasakule. Sedasi saab mitu mängijat klaviatuuriga mängima panna. Võite realiseerida ka päris üle võrgu mängimise.

Lisaosa: AI (1p)

Mängus on teine uss, mida juhib arvuti. Selleks peate realiseerima ise AI, mis ei saa väga kergelt surma. Ta võiks proovida aardeid otsida ja vältida seinu/takistusi.

Lisaosa: edetabel (1p)

Realiseerida edetabel, mis salvestatakse mängude vahel faili/andmebaasi/veebi. Erinevate seadete/tasemetega peaks olema erinev edetabel.