NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze – Programujeme jednoduchou hru v Javě: Šibenice

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
mnauik
Člen
Avatar
mnauik:6.11.2014 14:01

Myslím, že nejlepší by bylo to udělat objektově. (i pro čtenáře začátečníka). 4*

Odpovědět
6.11.2014 14:01
minusuj mě, ale zdůvodni to ;)
Avatar
Neaktivní uživatel:6.11.2014 14:13

Určite by to bolo krajšie objektovo naprogramované a taká pozn. používaš príliš často spojovanie reťazcov pomocou "+", kedže sú reťazce v Jave immutable(neme­niteľné), tak sa vytvára dosť veľa zvytočných objektov a vytváranie objektov je dosť náročné a dosť to spomaluje program... Preto máme v Jave tzv. builder (StringBuilder), ktorý je mutable(meniteľný) a je vhodnejšie používať ten, keď potrebuješ často meniť alebo spájať nejaký reťazec. Možno by nebol zlý nápad v tomto prípade použiť napríklad textový súbor na tie šibenice.

Odpovědět
6.11.2014 14:13
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:6.11.2014 14:20

Je to tutoriál pro začátečníky, jak je uvedeno v úvodu. Napsal to geniálně tak, aby si to mohl zkusit každý. Řešit zde OOP nemá vůbec smysl, to je stejné jako bys někomu vytýkal že jeho Hello World není objektový. K OOP se musíš dostat.

Odpovědět
6.11.2014 14:20
New kid back on the block with a R.I.P
Avatar
Contrix
Tvůrce
Avatar
Contrix:6.11.2014 19:39

Jak již bylo uvedeno, tento tutoriál má byt pro začátečníky, kteří ještě neovládají OOP. Když programátor začátečník zdatně neovládá takovéto jednoduché prvky, stěží by je pak psal s použitím OOP.
Mým cílem není vytvářet tutoriály na dokonalé aplikace, ale na takové, aby jí byl schopen každý se základními znalostmi Javy naprogramovat. Proto jen konzole a postup takový, jaký je.
Navíc, pokud někdo OOP ovládá, tak k takové jednoduché hře nepotřebuje žádný tutoriál.

Odpovědět
6.11.2014 19:39
Jsou zloději, které zákon netrestá, třebaže kradou člověku to nejcennější čas.
Avatar
hanpari
Člen
Avatar
Odpovídá na Neaktivní uživatel
hanpari:6.11.2014 20:07

No, když už jsi v tom, proč rovnou nepoužít nějaké návrhové vzory :) Já bych navrhoval to udělat tak pružné, aby v případě potřeby mohl z té šibenice udělat piškvorky :)

 
Odpovědět
6.11.2014 20:07
Avatar
Roman Duchoň:19.9.2016 22:45

Kdyby měl někdo náladu na porovnání si zdrojáku -> Moje Šibenice .
Mám delší! Dostal jsem se na celých 180 řádků. :D
Snad jsem to moc nepřepískl, nechci psát zdlouhavé kódy. Ale chod aplikace se mi líbí.

Myslím, že naučit se OOP už je namístě. :)

Odpovědět
19.9.2016 22:45
RD
Avatar
Misko X007X
Člen
Avatar
Misko X007X:11.1.2017 18:20

Chcel by som sa spýtať dá sa do cyklu while dať další cyklus while?

 
Odpovědět
11.1.2017 18:20
Avatar
Odpovědět
11.1.2017 18:59
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Mirka Baranová:21.1.2017 13:33

Asi chyba v kódu (v textu je to napsáno správně)
Místo:

String slovo = databaze[(int)(Math.random()*databaze.length)];

by asi mělo být:

String slovo = databaze[(int)(Math.random()*(databaze.length-1))];

aby se nestalo, že vyjde v našem případě prvek 4., když tam máme jen prvky 0. až 3.

Nicméně pokud chápu přetypování na int správně, že např. z čísla 1,8547.. získáme 1, tzn. že se usekne část za desetinnou čárkou, tak např. zde:

int cislo = (int)(Math.random() * 3) // vrátí celé číslo mezi 0 a 3

je minimální pravděpodobnost, že císlo == 3. To nastane jen v případě že metoda random vygeneruje 1. Zatímco pravděpodobnost, že cislo == 0 nebo 1 nebo 2 je velmi vysoká, protože všechna desetinná čísla se na ně přetypují.

V tom přídadě je skutečně vhodné pracovat s celou délkou databaze nezmenšenou o 1 a jenom ošetřit případ, kdy nastane ta nepravděpodobná situace, že získáme číslo 4 (třeba to číslo zmenšíme o 1):

String[] databaze = {"auto", "pocitac", "internet", "skola"};
int cislo = (int)(Math.random()*databaze.length);
if (cislo == databaze.length){
        cislo--;
}
String slovo = databaze[cislo];

Nebo další možnost: vygenerované číslo nejdříve zaokrouhlit a pak až přetypovat.

Odpovědět
21.1.2017 13:33
Pro člověka, který je plný touhy, není nic nemožné.
Avatar
Mirka Baranová:21.1.2017 20:11

Právě jsem zjistila, že Math.random() generuje čísla v intervalu <0,1) a ne <0,1>, takže svůj komentář výše bych nejraději smazala. Škoda, že to nejde.

Odpovědět
21.1.2017 20:11
Pro člověka, který je plný touhy, není nic nemožné.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 14.