Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hraní hry #16

Open
NoxArt opened this issue Nov 26, 2013 · 72 comments
Open

Hraní hry #16

NoxArt opened this issue Nov 26, 2013 · 72 comments

Comments

@NoxArt
Copy link
Owner

NoxArt commented Nov 26, 2013

Už by mělo být možno posílat hráčova slova

Na server jsem přidal handler, že pokud zpráva == send_words & count(unique(send_words od hráčů v daném kole)) == player_count, tak se aktivuje nové kolo přidáním zprávy round_started, stejně jak to bylo minulé kolo. Pokud ovšem round == round_limit, tak se místo toho přidá game_finished.

Jakmile bude nějaká databáze (wink, wink), tak přidám ještě před to vložení zprávy o bodech hráčů

Takže s vynecháním bodování by už mělo být teoreticky možné dodělat komplet hraní hry?

(updatována wiki - dole message)

@IevgenRagulin
Copy link
Collaborator

Podle mě server by neměl hned po odesílání slov posílat zprávu round_started.
Možna něco nechápu.
Představuji si to tak, že pokud zpráva == send_words & count(unique(send_words od hráčů v daném kole)) == player_count tak server

  1. V případě automatického vyhodnocení pošle zprávu round_ended s výsledky. Pak až admin zmáčkne start_game, server odpovědí zprávou round_started.
  2. V případě ručního vyhodnocení pošle zprávu round_ended, a všechna slova co hráče napsali. Pak hráče to vyhodnotí a až všichni skončí hodnocení, teda zpráva == send_evaluations& count(unique(send_evaluations od hráčů v daném kole)) == player_count server pošle zprávu round_started Nebo až admin zmáčkne tlačítko start_game.

Nebo hodnocení se děla až na konci, až skončíme hrát všechna kola? Tým pádem by to fungovalo jak jsi to napsal.

@IevgenRagulin
Copy link
Collaborator

Chtěl jsem také říct, že do 6. prosince nebudu moct dělat na projektu kvůli odevzdaní projektu GMU :(

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Může být, mj. v současnosti bych ani to ruční vyhodnocení neřešil, až pokud by byl čas, což nebude

To je celkem rána, protože tu Activity část's měl nastudovanou, resp. nemám moc projité ty Async věci ... prosil bych zbytek, aby se taky přidal, ať to neděláme dva...už jeden

@IevgenRagulin
Copy link
Collaborator

Dneska ještě dodělám odesílání slov, aktivace nového kola

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

To bude skvělé, díky moc. Tak ať to GMU dáš v pohodě

@IevgenRagulin
Copy link
Collaborator

Díky, myslím to bude v pořádku.
Nevíš nahodou proč to haže chybu FileNotFoundException na řádku InputStream stream = connection.getInputStream(); v HttpConnect.post() když se snažím poslat slova? Musí se něco upravit na serveru nebo v aplikaci?

11-27 11:41:34.898: E/MessageQueue(2541): null
11-27 11:41:34.898: E/MessageQueue(2541): java.io.FileNotFoundException: https://fit.noxart.cz/tam/
11-27 11:41:34.898: E/MessageQueue(2541):   at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
11-27 11:41:34.898: E/MessageQueue(2541):   at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
11-27 11:41:34.898: E/MessageQueue(2541):   at cz.fit.tam.utils.HttpConnect.post(HttpConnect.java:107)
11-27 11:41:34.898: E/MessageQueue(2541):   at cz.fit.tam.model.MessageQueue.sendMessage(MessageQueue.java:79)
11-27 11:41:34.898: E/MessageQueue(2541):   at cz.fit.tam.model.GameClient.sendWords(GameClient.java:213)
11-27 11:41:34.898: E/MessageQueue(2541):   at cz.fit.tam.model.Game.sendWords(Game.java:163)
11-27 11:41:34.898: E/MessageQueue(2541):   at cz.fit.tam.PlayingActivity$SendWordsAsyncTask.doInBackground(PlayingActivity.java:241)
11-27 11:41:34.898: E/MessageQueue(2541):   at cz.fit.tam.PlayingActivity$SendWordsAsyncTask.doInBackground(PlayingActivity.java:1)

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Na serveru, už je to opraveno

@IevgenRagulin
Copy link
Collaborator

Super, díky. Zatím ale server neodesílá odpověd' round_started nebo game_finished
nebo něco špatně dělám...

@IevgenRagulin
Copy link
Collaborator

Nevím jestli jsi něco opravoval nebo ne, ale už vidím zprávu round_started) asi to byla moje chyba

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Aha, po debatě zakomentoval. Tak jsem to zase aktivoval. Navíc to pro účely round_started/game_finished už ignoruje staré zprávy.

Teď mě napadá, že nevim jak řešit uplynutí limitu, zatím je to jen po odeslání všech odpovědí, tzn. funguje, pokud odešlou všichni, ale kontroluje se aktuální počet, ne max. tzn. to jede i pokud hraješ sám a # hráčů = 1.

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Asi to navážu na get_messages...jo, to by šlo

@IevgenRagulin
Copy link
Collaborator

Jak navažeš na get_messages? Mohl bys to prosím vysvětlit?

Myslel jsem si, že pokud někdo skončí dřív, než uplyne ten limit, tak zmačne hotovo. Server na první takovou zprávu odpoví round_started. Na ostatní zprávy send_words pro ten round nebude odpovidat nic. Ten druhý hrač dostane zprávu round_started, a až tu zprávu dostane tak automatický se odešle to, co on vyplnil a přepne ho do nového kola.

Pokud uplyne limit, tak odešleme slova. Server na první takovou zprávu odpoví round_started. Na ostatní zprávy send_words pro ten round nebude odpovidat nic. Tym pádem ale všichni ostatní hráči dostanou zprávu round_started i když pro ně limit ne uplynul (to se asi muže stat kvůli tomu že někdo má rychlejší internet, nekdo pomalejší a nezačinaji vyplnovat kolo současně)

Možna rozumím tomu špatně.. pokud ano, prosím o vysvětlení

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Aha ... máš pravdu, to mě nenapadlo, pošle se to samo. Tak okey. Pardon za zmatení

@IevgenRagulin
Copy link
Collaborator

Ted' jsem zkusil odeslat slova v hře která má 2 kola. Server odpovídá zprávou game_finished
11-27 13:52:43.702: W/get_messages(1110): {"result":[{"id":"602","type":"send_words","data":"{"words":",,,,","round":"1"}"},{"id":"603","type":"game_finished","data":null}]}

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Hned po odeslání slov s round=1 to pošle game_finished? To je divné...mrknu na to

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Hmm, nějak blbne fetchColumn ... už by to mělo být opravené

@IevgenRagulin
Copy link
Collaborator

Díky, už to funguje. Ještě jeden dotaz.. Zkusil jsem spustit dva emulatory aby bylo tam dva hrače. Tak pokud tam je dva hrače a jeden odešle slova, tak server neodesila pak round_started. Myslel jsem si že pokud jeden hráč vyplni, tak round se skončí, ne?

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Aha, já myslel že až všichni, tak jsem to změnil, je to triviální

@IevgenRagulin
Copy link
Collaborator

Super, funguje. Můžu tě taky poprosit abys udělal to tak aby server odesilal zprávu round_started jen po obdržení prvního výsledku tohoto kola? Protože ted' funguje to tak že round_started se odesila po obdržení odpovědi od každého hráče. Tým pádem po prvním roundu, pokud máme tří hráče, server odešle tří zprávy round_started, a po prvním raundu bychom přešli do čtvrtého.

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

aha, jasně :) to jsem nedomyslel

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Tak teď snad?

@IevgenRagulin
Copy link
Collaborator

Nic se asi nezměnilo ..

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Když se dívám do databáze, třeba 184, tak se zdá, že to funguje dobře, po 1. send_words už to nehází round_started pro další z toho kola ... přístup do DB máš, že?

@IevgenRagulin
Copy link
Collaborator

Přístup do DB mám, ted' se na to dívám...

@IevgenRagulin
Copy link
Collaborator

už vidím.. byla to chyba v mém kodu. po obdržení zprávy nastavoval jsem nové aktuální kolo a pak jsem odesílal slova. Mělo by to byt naopak) Pardon

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

V pohodě, hlavně že se na to přišlo

@IevgenRagulin
Copy link
Collaborator

Přidal jsem odesílání slov, aktivace nového kola, přechod do Activity RoundEvaluation v případě zprávy game_finished. Ted to funguje trochu zvláštně: ten, kdo ukončí kolo první, odesílá slova (stejná) dvakrát. To nevadí nebo bude lepší když to upravím?

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Myslim že ne, kdyžtak to nějak pak upravim

@NoxArt
Copy link
Owner Author

NoxArt commented Nov 27, 2013

Dobrá práce!

@IevgenRagulin
Copy link
Collaborator

Díky. Neřekl bych že je dobrá (ma bagy), ale aspon nějak funguje. Chci se zepat jak to je s vyhodnocením opdovědi? Rozumím tomu správně že po skončení všech kol server odešle výsledky všíchnim hračům?

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

To nevadí, díky. Budu teď cestovat, ale jak dojedu, tak to dodělám

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

Teď už by to mělo dělat ten mechanismus, který jsme tu popisovali, snad to je správně

Evaluace zatím nekontroluje, jestli jsou slova i v databázi ... jenom jestli je vyplnil hráč sám nebo i ostatní (ale doplnit tu kontrolu nebude problém)

@IevgenRagulin
Copy link
Collaborator

Hlavně že odesila výsledky. Za hodinu budu doma a začnu na tom pracovat..

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

Opravil jsem tak teďka chybu, že startovalo nové kolo se stejným $round, ne $round + 1...ale asi byste napsali, kdyby se to u nahrávání nějak projevilo

@IevgenRagulin
Copy link
Collaborator

Projevilo se to u nahravaní, ale myslel jsem si že to je chyba v mém kódu) Nahrali jsme dvakrat první kolo, Katka tam pak přídá obrázek aby to vypadalo, že to je druhé kolo.

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

Ok, dobře, omlouvám se ... kdyžtak ještě až dokončíme tady toto, tak to může přidat

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

Za chvílu teda víc testnu tu evaluaci

Jinak zatím bych skryl ve vytváření hry (a seznamu her pokud je) to nastavení evaluace

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

Akorát je drobnost, že pro finální hodnocení se musí vytáhnout ještě kolo round_limit + 1

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

Aktuální hodnocení kola teda můžeš vytáhnout z round_started (viz databáze), ještě jsem přidal command get_scores (viz Wiki)

A doplnil command do Game, vrací Map<String, Integer> ~ Map<player_name => score> commit 8db6522

@IevgenRagulin
Copy link
Collaborator

Mohl bys prosím vysvětlit na co potřebujeme metodu getScores()? Server to pošle automaticky, ne?

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

V message round_started v data: evaluation jsou hodnocení, ale hodnocení za 1 kolo.

GetScores jsou hodnocení hráčů dohromady za všechny kola (nemusíš dělat součet v aplikaci).

Přemýšlím, že by v evaluation místo player_id mohly být taky jména ... to si kdyžtak řekni

@IevgenRagulin
Copy link
Collaborator

Jasně, díky. Jména by byli lepší, protože id v aplikaci neznáme a nemůžeme je namapovat. Také podle mě bylo by dobrý kdyby zpráva s hodnocením kola také obsahovala slová, která hrače vyplnili. Aby bylo vídět za která slova kolika bodů dostal každý hrač. Co myslíš?

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

Změnil jsem v evaluation player_id na player_name

Přidal jsem do start_round kromě evaluation s hodnocením taky previous_letter s písmenem z předchozího kola a words se všemi vyplněnými slovy { player_name: ",,slovo3,slovo4,", player_name: "slovo1,,,slovo4,slovo5",... }

@IevgenRagulin
Copy link
Collaborator

To player name už vidím, ale slova zatím ne.. Tady je zpráva
{"id":"2047","type":"round_started","data":"{"round":2,"time":1385938572,"letter":"u","evaluation":{"User":[10,10,0,0,0]},"words":[],"previous_letter":"h"}"}]}

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

Zkus teď prosím

@IevgenRagulin
Copy link
Collaborator

Už funguje, díky

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 1, 2013

super

@IevgenRagulin
Copy link
Collaborator

Zkusel jsem get_scores. Mohl bys prosím udělat aby tam byli také jména hračů kromě bodů? Tady je zpáva kterou dostal jsem
12-02 16:49:15.113: W/get_scores(1080): command=get_scores&game_id=291
12-02 16:49:15.113: W/get_scores(1080): {"result":{"":20}}

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 2, 2013

Zkus prosím teď

@IevgenRagulin
Copy link
Collaborator

Už funguje, díky

@IevgenRagulin
Copy link
Collaborator

Přidal jsem hodnocení. Neměl jsem ale čas to otestovat s více než jedním hráčem.

@IevgenRagulin
Copy link
Collaborator

Zkusil jsem záhrat s více než jedním hráčem a z nějakého důvodu to nejde. Nemůžu přejit od posledního kola do hodnocení, protože nedostavám zprávu round_started, pokud je tam více než jeden hrač. Pokud hrač je jeden, tak prně dostanu zprávu game_finished, pak round_started. Když mám dva hrače, tak dostavám zprávu game_finished, ale nedostavám round_started.

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 7, 2013

Kouknu se na to

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 7, 2013

A odesíláš i slova ostatních hráčů?

@IevgenRagulin
Copy link
Collaborator

Ano. V databazi je to vídět - posledni hra, id 364

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 7, 2013

Vidím to tam, ale zatim mi to nejde reprodukovat (resp. mě to teď funguje dobře)

Aha, už možná chápu

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 7, 2013

Zkus teďka

Ona ta game_finished uzavřela hru a byla tam na to podmínka, teď už jde posílat i potom

@IevgenRagulin
Copy link
Collaborator

Pardon, že tak dlouho jsem odpovidal, nebyl jsem doma. Zkusil jsem to ted' a je to stejný.. hra 365

@NoxArt
Copy link
Owner Author

NoxArt commented Dec 7, 2013

Tak teï u¾ by to opravdu mìlo jít

Dne 7. prosince 2013 21:00 IevgenRagulin [email protected](a):

Pardon, ¾e tak dlouho jsem odpovidal, nebyl jsem doma. Zkusil jsem to ted'
a je to stejný.. hra 365

Reply to this email directly or view it on GitHubhttps://github.com//issues/16#issuecomment-30063348
.

@IevgenRagulin
Copy link
Collaborator

díky, už to jede

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants