Erinevus lehekülje "ITI0205 2020 4 iseseisev töö" redaktsioonide vahel

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
(Uus lehekülg: '4. iseseisvas töös on sinu ülesandeks ehitada tagarakendus ja mitmemängija tugi 2. praktikumis realiseeritud Yahtzee mängule.')
 
1. rida: 1. rida:
4. iseseisvas töös on sinu ülesandeks ehitada tagarakendus ja mitmemängija tugi 2. praktikumis realiseeritud Yahtzee mängule.
+
== ITI0205 4. iseseisev töö: NodeJS rakendus ==
 +
 
 +
Iseseisva töö eesmärk on täiendada Yahtzeed nii, et sellele ehitada NodeJS tagarakendus, nii et seda oleks võimalik mängida kahe mängija poolt üle võrgu. Soovituslik on kasutada ExpressJS raamistikku.
 +
 
 +
Rakendus on vaja paigaldada turing.cs.ttu.ee serverisse aadressile http://turing.cs.ttu.ee/~uni-id/prax4 ja rakenduse lähtekood Gitlab.cs.ttu.ee kesskkonda.
 +
 
 +
Kaks mängijat peavad saama käia kumbki oma brauseris vaheldumisi ja kui mõlemad käinud, näidatakse kummalegi, kes võitis ja alustatakse uuesti. Sisselogimist ei ole vaja teha. Võimalik on korduvkasutada 2. praktikumitöö CSSi
 +
 
 +
Üks lihtne variant ehitamiseks on selline, kus veebileht end vastase käiku oodates kord sekundis refreshib ja seisu hoitakse lihtsalt failis ühe json-i formaadis:
 +
 
 +
* server kuvab algul veebilehe, kus saad sisestada nimeväljale oma nime ja mänguvälja.
 +
* serveril on üks seisufail, kuhu ta kirjutab mängu seisu - käigu, kombinatsioonid ja punktisumma
 +
* kui server saab päringu a’la POST name=martin&turn=1&dice=1,4,1,1,1
 +
** seisufail on tühi: server loob uue seisufaili ja annab tagasi htmli, mis ütleb “oota” ja refreshib sekundi järel, saates serverile päringu a la ?state=waiting
 +
** seisufailis on juba valitud kohal käik, siis seisufaili ei kirjutata vaid kasutaja peab uuesti proovima ?turn=player2&state=retry
 +
* Siis kontrollitakse kas käik on läbi ja saab määrata punkte.
 +
** Kui punktid on antud antakse mäng edasi teisele mängijale turn=playe2&state=waiting
 +
** Kui kõik käigud on tehtud, siis see mängija kes sai rohkem punkte on võitja. Seda näidatakse mõlemale kasutajale.
 +
 
 +
Pane tähele, et see lihtne skeem võib minna rikki, kui peale eelmise mängu tulemuse saamist väga kiiresti uue käigu teed: võib juhtuda, et vastase leht ei jõua enne refreshida ja tulemust näidata, kui sinu käik juba seisu üle salvestab.
 +
 
 +
Sa võid ehitada oma rakenduse ka mingi hoopis teistsuguse skeemi järgi.
 +
 
 +
'''Punktide arvestus'''
 +
 
 +
# Mitme mängija toe lisamine on kohustuslik ja annab 8 punkti
 +
# Lisaks mitmemängija toele on salvestatakse ka edetabel serverisse, s.t on nähtav kõigile rakenduse kasutajatele sõltumata sellest millisest arvutist nad seda vaatavad. See annab 5 punkti.
 +
# Lisaks annab 3 punkti kui salvestad edetabeli mitte serveris olevasse faili vaid andmebaasi, nt MySQL või SQLite.
 +
 
 +
'''Lisaks:'''
 +
 
 +
* HTML ja CSS peaksid olema eraldi. Nii on sul mugav seda hallata ja muuta.
 +
* Lehtede HTML peaks olema valideeruv ja javascripti kasutamisel ei tohi konsoolis olla veateateid.
 +
* Leht ei tohi välja näha väga jube. Vaata ka: [[http://lambda.ee/wiki/Htmli_kujunduse_üldpõhimõtted|http://lambda.ee/wiki/Htmli_kujunduse_%C3%BCldp%C3%B5him%C3%B5tted]]
 +
 
 +
'''Soovitusi'''
 +
 
 +
Arendamiseks piisab kahest eraldi tabist ühes brauseris + selleks ei ole vaja mitut reaalset inimest.

Redaktsioon: 28. november 2020, kell 01:39

ITI0205 4. iseseisev töö: NodeJS rakendus

Iseseisva töö eesmärk on täiendada Yahtzeed nii, et sellele ehitada NodeJS tagarakendus, nii et seda oleks võimalik mängida kahe mängija poolt üle võrgu. Soovituslik on kasutada ExpressJS raamistikku.

Rakendus on vaja paigaldada turing.cs.ttu.ee serverisse aadressile http://turing.cs.ttu.ee/~uni-id/prax4 ja rakenduse lähtekood Gitlab.cs.ttu.ee kesskkonda.

Kaks mängijat peavad saama käia kumbki oma brauseris vaheldumisi ja kui mõlemad käinud, näidatakse kummalegi, kes võitis ja alustatakse uuesti. Sisselogimist ei ole vaja teha. Võimalik on korduvkasutada 2. praktikumitöö CSSi

Üks lihtne variant ehitamiseks on selline, kus veebileht end vastase käiku oodates kord sekundis refreshib ja seisu hoitakse lihtsalt failis ühe json-i formaadis:

  • server kuvab algul veebilehe, kus saad sisestada nimeväljale oma nime ja mänguvälja.
  • serveril on üks seisufail, kuhu ta kirjutab mängu seisu - käigu, kombinatsioonid ja punktisumma
  • kui server saab päringu a’la POST name=martin&turn=1&dice=1,4,1,1,1
    • seisufail on tühi: server loob uue seisufaili ja annab tagasi htmli, mis ütleb “oota” ja refreshib sekundi järel, saates serverile päringu a la ?state=waiting
    • seisufailis on juba valitud kohal käik, siis seisufaili ei kirjutata vaid kasutaja peab uuesti proovima ?turn=player2&state=retry
  • Siis kontrollitakse kas käik on läbi ja saab määrata punkte.
    • Kui punktid on antud antakse mäng edasi teisele mängijale turn=playe2&state=waiting
    • Kui kõik käigud on tehtud, siis see mängija kes sai rohkem punkte on võitja. Seda näidatakse mõlemale kasutajale.

Pane tähele, et see lihtne skeem võib minna rikki, kui peale eelmise mängu tulemuse saamist väga kiiresti uue käigu teed: võib juhtuda, et vastase leht ei jõua enne refreshida ja tulemust näidata, kui sinu käik juba seisu üle salvestab.

Sa võid ehitada oma rakenduse ka mingi hoopis teistsuguse skeemi järgi.

Punktide arvestus

  1. Mitme mängija toe lisamine on kohustuslik ja annab 8 punkti
  2. Lisaks mitmemängija toele on salvestatakse ka edetabel serverisse, s.t on nähtav kõigile rakenduse kasutajatele sõltumata sellest millisest arvutist nad seda vaatavad. See annab 5 punkti.
  3. Lisaks annab 3 punkti kui salvestad edetabeli mitte serveris olevasse faili vaid andmebaasi, nt MySQL või SQLite.

Lisaks:

  • HTML ja CSS peaksid olema eraldi. Nii on sul mugav seda hallata ja muuta.
  • Lehtede HTML peaks olema valideeruv ja javascripti kasutamisel ei tohi konsoolis olla veateateid.
  • Leht ei tohi välja näha väga jube. Vaata ka: [[1]]

Soovitusi

Arendamiseks piisab kahest eraldi tabist ühes brauseris + selleks ei ole vaja mitut reaalset inimest.