Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací
Avatar
Tomáš Roj
Člen
Avatar
Tomáš Roj:12. listopadu 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. listopadu 20:40
„Lidé často nevědí, co chtějí, dokud jim to neukážete.“ - Steve Jobs
Avatar
Vít Kološ
Člen
Avatar
Vít Kološ:12. listopadu 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  +1 12. listopadu 21:00
Neopravuj, co není rozbité.
Avatar
zitekv
Člen
Avatar
zitekv:12. listopadu 21:20

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

 
Nahoru Odpovědět  +4 12. listopadu 21:20
Avatar
Andy Scheuchzer:12. listopadu 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. listopadu 21:29
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13. listopadu 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. listopadu 7:30
Avatar
Tomáš Roj
Člen
Avatar
Odpovídá na Vít Kološ
Tomáš Roj:13. listopadu 14:15

Díky moc, hodně to pomohlo.

Nahoru Odpovědět  +1 13. listopadu 14:15
„Lidé často nevědí, co chtějí, dokud jim to neukážete.“ - Steve Jobs
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.