ITI0205 2020 2 iseseisev töö
ITI0205 2. iseseisev töö - Javascripti lauamäng
Mida tuleb teha
Sinu ülesandeks on kirjutada brauseris jooksev Yahtzee kasutades selleks ainult HTMLi, Javascripti ja CSSi. Yahtzee on viie täringuga mängitav mäng, mille eesmärgiks on saada võimalikult palju mängulehel märgitud numbrikombinatsioone. Võitja on mängija, kes peale mängulehe täitmist on saanud kõrgeima punktisumma.
Mängu käik
Mäng koosneb 13 käigust ja selle eesmärgiks on 5 täringut veeretades koguda erinevate täringukombinatsioonidega võimalikult palju punkte. Võitja on mängija kellel on 13 käigu järel kõige rohkem punkte.
Reeglid ja nõuded
Põhifunktsionaalsus
Realiseeritud põhifunktsionaalsus annab 7 punkti ja on kohustuslik praktikumi arvestamiseks.
- Enne mängu algust küsitakse kasutajalt käikude arv - võib olla 3, 8 või 13
- Kui valitud on käikude arv, saab mängu alustada.
- Kasutajale kuvatakse mängulauda ja tulemuste tabelit. Mängu alustades on tulemuste tabel tühi.
- Mängu eesmärk on koguda võimalikult palju punkte. Selleks:
- Heidab mängija viit 6-küljelist täringut.
- Mängija saab kõiki täringuid korraga uuesti visata
- Mängija valib kombinatsiooni millele ta saadud punktisumma tahab lisada.
- Minimaalses versioonis on realiseeritud vähemalt järgmised kombinatsiooni punkide saamiseks:
- Number (ühed, kahed, kolmed, neljad, viied, kuued)
- Jokker - täringute summa
- Kolmik - kolme sama väärtusega täringu summa
- Kui kombinatsiooni eest on punkte saadud siis samas mängus selle eest punkte enam ei saa.
- Mängijale kuvatakse mängu seis - milline käik ja milline on tema punktisumma kokku ja iga käigu järel.
- Kui mäng on läbi kuvatakse kasutajale tema tulemus
- Täringud on kuvatud piltidena
Lisaks põhifunktsionaalsusele
Iga punkt siit nimekirjast annab ühe punkti, st. lisaks baasfunktsionaalsusele on võimalik saada kokku 15 punkti.
- Mängija saab maksimaalselt kolmel korral kas kõiki või osasid täringuid uuesti visata.
- Lisaks käikude arvule küsitakse kasutajalt ka tema nimi. Mängu lõppedes kirjutatakse punktisumma tulemuste tabelisse kus näidatakse viimase 10 mängu kohta järgmised väljad: nimi, punktide arv, veeretuste arv ja mängule kulunud aeg.
- Tulemuste tabelit on võimalik sorteerida nime ja punktisumma järgi.
- Brauseri sulgemisel ja uuesti avamisel ei lähe tulemuste tabelisse salvestatud andmed kaduma
- Mängus saavad osaleda 2 .. 5 mängijat. Mäng toimub samas arvutis ja ühe mängija käigu lõppedes antakse käik üle järgmisele mängijale.
- Realiseereritud on kõik Yahtzee reeglites olevad kombinatsioonid: https://yatzy-yahtzeeeee.dk/en/the-13-different-combinations/
- Tärgingupildid on realiseeritud spritesheetidena.
- Mäng on lisaks desktop vaatele kohaldatud ka mobiilile
Lisapunkti saamiseks
- Mängu on võimalik mängida arvuti vastu, kusjuures arvuti ei tee oma otsuseid juhuslikult vaid kasutades optimaalset strateegiat võitmiseks. "AI" võimalikest strateegiatest võib lugeda näiteks siit: http://vermeille.fr/dotclear2/index.php/post/35-An-expectation-maximization-Yahtzee-AI
Mistahes põnevad lisandused on lubatud.
Millises järjekorras asju teha
Proovi alustada lihtsamate osadega ja sealt järjest keerulisemaks.
- Alusta puhta HTML failiga kuhu CSSiga joonistad staatilise mänguvälja ja täringud
- Proovi saada täringud staatiliselt kuvama soovitud numbreid
- Nüüd tee lihtne
onclick
meetod täringule, mis seda numbrit vahetaks - Lisa nupud täringu viskamiseks.
- Proovi hoida täringute summat mingis globaalses muutujas, mida näitad välja lehel - see tähendab et oleku salvestamine töötab
- Edasi proovi tulemused vastava käigu juurde tulemuste tabelisse kirjutada.
- Nüüd realiseeri mängu algus ja lõpuolekud - mängu kondikava on sellega olemas.
- Kuna iga mängija saab visata täringuid 3 korda, siis realiseeri nüüd see osa.
- Laienda funktsiooni mis arvutab punkte nii et see võtaks arvesse ka muid kombinatsioone.
- Nüüd on õige aeg hakata lisama edetabelit ja mitmemängija tugi.
Abimaterjale ja viiteid
- Yahtzee tutvustus Wikis: https://en.wikipedia.org/wiki/Yahtzee
- Mängi seda brauseris: https://cardgames.io/yahtzee/
- Vaata implementatsioone: https://github.com/peippo/yahtzee või https://github.com/taylorhansen/Yahtzee või https://codepen.io/SteveJRobertson/pen/dPVgqK
- Yahtzee võidustrateegiast: https://www.reddit.com/r/learnmath/comments/49bjoi/yahtzee_type_strategy_problem/ ja https://entertainment.howstuffworks.com/leisure/brain-games/yahtzee2.htm