Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
python week
Avatar
Neaktivní uživatel:12.11.2018 20:40

Ahoj všichni,
vytvořil jsem hru, kdy počítač má nějaké číslo a vy se ho snažíte hádat. Vše funguje, ale mohu položit jen jednu otázku. Například: Je to číslo větší než 30? Ano, je. Položím tedy další otázku, ale odpověď na ni již nedostanu. Program tedy vyhodonotí jen jednu otázku. Zatím tam je číslo 32, ale v budoucnu to bude náhodné. Můžete pomoc?

Zkusil jsem: Vynulovat všechny proměnné ale nepomohlo to. Tady je kod:
namespace Cykly
{
class Program
{
static void Main(string[] args)
{
int cislo = 32;

//Info
Console.Write­Line("Myslím si nějaké číslo. Hádej jaké...");
Console.Write­Line("Pokud chcete použít větu je číslo větší než nebo je čílo menší než, první napiěte tuto větu a až poté uveďte dané číslo.");

//nastavení proměných
string otazka = Console.ReadLine();
string nez = Console.ReadLine();
int Nez = int.Parse(nez);

//Je číslo Větší
if (otazka == "Je větší než")
{

if (cislo > Nez)
{
Console.Write­Line("Ano je.");
otazka = "";
Nez = 0;
}

else
{
Console.Write­Line("Ne, není");
otazka = "";
Nez = 0;
}
}

//Je číslo Menší než
if (otazka == "Je menší než")
{

if (cislo < Nez)
{
Console.Write­Line("Ano je");
otazka = "";
Nez = 0;
}

else
{
Console.Write­Line("Ne, není");
otazka = "";
Nez = 0;
}
}

//Je to číslo
if (otazka == "Je to číslo")
{

if (cislo == Nez)
{
Console.Write­Line("Ano, je");
Console.Write­Line("Uhádl jsi! Aplikaci můžeš ukončit");
}

else
{
Console.Write­Line("Bohužel. Není");
otazka = "";
Nez = 0;
}

}
}
}
}

Odpovědět
12.11.2018 20:40
Neaktivní uživatelský účet
Avatar
Vít Kološ
Člen
Avatar
Vít Kološ:12.11.2018 21:00

Je to kvůli tomu, že tam máš ReadLine pouze jednou – to znamená, že na uživatelský vstup program čeká pouze poprvé. Když chceš, aby vstup vyhodnocoval neustále, musíš po každém WriteLine hodit zase ReadLine (akorát to udělej co nejúsporněji, jeden řádek kódu by tam v ideálním případě měl být jenom jednou, ale to asi víš). :-)
Jinak řečeno: Čekáš na vstup = ReadLine. Pokud čekáš jeden vstup = jeden ReadLine. Pokud čekáš dva, měl bys mít dva.
Už si moc nevzpomínám, jak C# funguje, ale tuším, že ReadLine zastaví běh programu. Můžeš si tedy pomoct i jakousi navigací ve stylu „Nyní zadej číslo, na které se mě ptáš:“.


Ještě si troufnu doplnit můj user-friendly návrh vstupu:
Vzhledem k tomu, že jsou prakticky tři možnosti otázky (větší než, menší než, je to číslo), pomocí WriteLine bych tam vypsal jakýsi číslovaný seznam a pak kontroloval, jakou možnost (1/2/3) uživatel zvolil. Pokud možnost neodpovídá těmto číslům, vypsal bych chybovou hlášku.
Každopádně je to tvůj program, tak ti do toho nechci moc mluvit (psát). :-D

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
12.11.2018 21:00
Neopravuj, co není rozbité.
Avatar
zitekv
Člen
Avatar
zitekv:12.11.2018 21:20

Nemáš tam vložený žádný cyklus např. while...

 
Nahoru Odpovědět
12.11.2018 21:20
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Reaktivní uživatel:12.11.2018 21:29

Pro jistotu se pak můžeš předvést s výsledkem. Ale už prosím použij tlačítko na vložení kódu (druhé zleva).

Jak již Vít poznamenal, neopakuj zbytečně jeden řádek kódu. To platí i pro již existující – mám na mysli

otazka = "";
Nez = 0;

K návrhu na user-friendly vstup: mohl bys např. (pevně do kódu) zadat více možností, jak se ptát, a pokud možno číst jednu otázku z jednoho řádku.

Nahoru Odpovědět
12.11.2018 21:29
Kdo je připraven, toho zaskočí něco jiného
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.11.2018 7:30

OT.
Dalsi trik pro hadani cisel. Predlozis mu nekolik tabulek, on rekne, zda tam to cislo je ci neni.
http://jreichl.com/…ni_cisel.pdf
Nebo, toto je dobra finta, taky :)
https://hadanky-a-hlavolamy.webnode.cz/…te-myslenky/

 
Nahoru Odpovědět
13.11.2018 7:30
Avatar
Odpovídá na Vít Kološ
Neaktivní uživatel:13.11.2018 14:15

Díky moc, hodně to pomohlo.

Nahoru Odpovědět
13.11.2018 14:15
Neaktivní uživatelský účet
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 6 zpráv z 6.