Diskuze: c# konzole

C# .NET .NET (C# a Visual Basic) c# konzole American English version English version

Avatar
tools4polda602:

Zdravím, snažím se pochopit jak funguje programováni v konzoli a dostal jsem se k takovému problému, zkouším dělat takovou primitivní hackerskou hru, ale hned ze začátku jsem se zasekl, totiž nevím proč konzole, jak to říct přeskakuje některé scripty, lepší když sem dám script a vysvětlím to s tím.

static void Main(string[] args)
        {
            string database;
            string ipaddr;
            string ipaddr2;
            ipaddr = "164.265.106.423";
            ipaddr2 = "233.201.156.461";
            bool showDatabase;
            showDatabase = false;

            Console.WriteLine("Your ip " + ipaddr);
            database = Console.ReadLine();
            if (database == "database")
            {
                do {

                Console.WriteLine("IP " + ipaddr2);
                showDatabase = false;
                }while (showDatabase == true) ;
            }

            Console.ReadLine();
        }

prostě když napíšu ze začátku database tak to naskočí, ale pokud to napíšu znova tak se to vypne kvůli Console.Readline() to chápu prostě nevím jestli to jde nějak aby kdykoli napíšu database aby vyjela ta ip adresa. Děkuji za pomoc. :)

Editováno 22.8.2015 15:30
 
Odpovědět 22.8.2015 15:29
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na tools4polda602
Jan Vargovský:

Obal si to ještě jednou do cyklu. Vždyť přečteš jen řádek od uživatele, pak jestli je to ekvivalentní k "database", tak to skočí do foru, jedenkrát se to zopakuje (ten cyklus je tam úplně zbytečný :D), vyskočí ven, počká na enter a skončí.

 
Nahoru Odpovědět 22.8.2015 15:35
Avatar
Odpovídá na Jan Vargovský
tools4polda602:

Díky za odpověď, ale mě to pořád nějak nejde, nevím proč, teď jsem to obalil teda ještě jednou ale pro změnu to teď nepřestane vyskakovat

if (database == "database")
            {
                do
                {
                    do
                    {

                        Console.WriteLine("IP " + ipaddr2);
                        showDatabase = false;
                    } while (showDatabase == true);
                } while (database == "database");
            }
 
Nahoru Odpovědět 22.8.2015 15:49
Avatar
tools4polda602:

Ale stejně je problém hned ze začátku který nechápu a to že vůbec jakto, že prostě když napíšu hned ze začátku nějakou blbost, automaticky to ten script přeskočí, proč ? Jinak c# znám nejsem žádny expert nebo tak ale v unity3D si dělám hry, ale asi ho neznám tak dobře no....

Editováno 22.8.2015 15:55
 
Nahoru Odpovědět 22.8.2015 15:55
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na tools4polda602
Jan Vargovský:

Zkus si nad tím 10 minut zapřemýšlet, napiš si někde na papír jak program bude postupovat při:

  1. vstup je "database"
  2. vstup není "database"

Pak napiš jestli jsi k něčemu došel nebo ne, podle toho tě nasměruji dál :)

Btw, hry možná děláš, ale tady není chyba v syntaxi, ale v logice programu.

 
Nahoru Odpovědět 22.8.2015 16:16
Avatar
tools4polda602:

Už jsem na to přišel :)

Console.WriteLine("Your ip " + ipaddr);
            database = Console.ReadLine();
            if (database == "database")
            {
                do
                {
                    Console.WriteLine("IP " + ipaddr);

                    database = Console.ReadLine();

                        showDatabase = true;

                } while (showDatabase == true && database == "database");
            }

jsem rád že tohle už mám, ale ještě by mě zajímalo proč, když třeba ze začatku místo databse napíšu ahoj tak to prostě celé přeskoči až na konec.

 
Nahoru Odpovědět 22.8.2015 16:34
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na tools4polda602
Jan Vargovský:

Protože ti to neprojde skrz tu podmínku.

 
Nahoru Odpovědět 22.8.2015 16:40
Avatar
tools4polda602:

jo no to mi teď taky došlo, tak jsem tam přidal

else if (database != "database")
            {
                Console.WriteLine("Bad syntax");

            }

Ale stejně pokud pak něco napíšu, tak se mi to vypne.

 
Nahoru Odpovědět 22.8.2015 16:43
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na tools4polda602
Jan Vargovský:

Moc nechápu co ten program má dělat, tak ti neporadím. Momentálně tam máš redundantní kód. To opravdu chceš, abych zadal 2x "database"?

 
Nahoru Odpovědět 22.8.2015 16:46
Avatar
tools4polda602:

Ne to pak přídám dalši ty věci ja jen chci pochopit jak to má fungovat no co chci je, že budeš mít několik přikazu ktere budeš zadavat a podle toho to bude něco dělat ale když napišeš nějaky nesmysl tak to nepujde a vrati tě to na ten předchozi krok.

 
Nahoru Odpovědět 22.8.2015 16:49
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na tools4polda602
Jan Vargovský:
// do not enter until user enters "kappa123"
string input;
do
{
    input = Console.ReadLine();

} while (input != "kappa123");
Console.WriteLine("cg,u r in!");

Jestli to chceš i s nějakou hláškou, že to zadal blbě, tak:

// do not enter until user enters "kappa123"
string input = null;
do
{
    if (input != null)
        Console.WriteLine("Wrong input. Try it again!");
    input = Console.ReadLine();

} while (input != "kappa123");
Console.WriteLine("cg,u r in!");

Jestli to chceš omezit na poksy, tak:

// do not enter until user enters "kappa123"
int attemptsLeft = 3;
string input = null;
Console.WriteLine("Enter secret password:");
do
{
    if (attemptsLeft <= 0)
    {
        Console.WriteLine("Access denied.");
        return;
    }
    if (input != null)
        Console.WriteLine($"Wrong input. You have {attemptsLeft--} attempts left. Try it again!");
    input = Console.ReadLine();

} while (input != "kappa123");
Console.WriteLine("cg,u r in!");

Dál už mě to nebaví :D každopádně snad je tam to co chceš.

 
Nahoru Odpovědět 22.8.2015 17:15
Avatar
tools4polda602:

Jo díky, teď ještě musím přijít na to jak to zakomponovat do toho mého scriptu ale díky :)

 
Nahoru Odpovědět 22.8.2015 17:51
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 13 zpráv z 13.