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

Diskuze – Lekce 8 - C# - Aréna s bojovníky

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
Marek
Člen
Avatar
Marek:24.5.2017 22:25

Ahoj, má metoda Console.Write­Line(); v tvém kódu význam ? Nepozoruji tam žádný rozdíl, protože stejně vždy voláš metodu Console.Clear();

while (b1.Nazivu() && b2.Nazivu())
            {
                b1.Utoc(b2);
                Vykresli();
                VypisZpravu(b1.VratPosledniZpravu()); // zpráva o útoku
                VypisZpravu(b2.VratPosledniZpravu()); // zpráva o obraně
                if (b2.Nazivu())
                {
                    b2.Utoc(b1);
                    Vykresli();
                    VypisZpravu(b2.VratPosledniZpravu()); // zpráva o útoku
                    VypisZpravu(b1.VratPosledniZpravu()); // zpráva o obraně
                }
                Console.WriteLine(); // Nepozoruji rozdíl s/bez tohoto řádku.
            }
 
Odpovědět
24.5.2017 22:25
Avatar
Joe Walker
Tvůrce
Avatar
Joe Walker:10.7.2017 21:48

Převelice děkuji za vše. Skvělé postupy, vysvětlení a vše, co je potřeba k naučení se programovat od začátku. :)

 
Odpovědět
10.7.2017 21:48
Avatar
Moni
Člen
Avatar
Moni:21.3.2018 17:44

Když bych nechtěla vypisovat graficky, přesto musím metodu GrafickyZivot zachovat, byt s naprosto vymyšlenou proměnnou s rovnou jakémukoli stringu. Jinak to nenačte správný počet životů, ale proč? Nikde se na ni neodvolávám. Před Arénou to funguje i bez GrafickehoZivota a v ní už ne.

 
Odpovědět
21.3.2018 17:44
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Moni
Martin Petrovaj:21.3.2018 17:48

Na metódu GrafickyZivot sa totiž v aréne odvoláva jej metóda Vykresli :-)

private void Vykresli()
{
        Console.Clear();
        Console.WriteLine("-------------- Aréna -------------- \n");
        Console.WriteLine("Zdraví bojovníků: \n");
        Console.WriteLine("{0} {1}", bojovnik1, bojovnik1.GrafickyZivot());
        Console.WriteLine("{0} {1}", bojovnik2, bojovnik2.GrafickyZivot());
}
Odpovědět
21.3.2018 17:48
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Moni
Člen
Avatar
Moni:22.3.2018 9:02

Jenže to jsem samozřejmě vynechala informace o snižování hp (jde o opravdový stav nepřevedený na 20) mám ve zprávách.

 
Odpovědět
22.3.2018 9:02
Avatar
Dušan Kovářík:19.6.2018 23:16

Paráda! Dnes to šlo jako po másle. Krásná ukázka toho, že pokud jsou dobře navržené třídy pro objekty, které program používá, pak jeho hlavní řídicí část může být velice přehledná a jednoduchá. Bez znalostí základních principů OOP si něco podobného nedokážu vůbec představit.

 
Odpovědět
19.6.2018 23:16
Avatar
Vykuk
Člen
Avatar
Vykuk:19.12.2018 18:39

Metodu Zapas() jsem si vytunil, že si na začátku Bojovníci hodí kostkou a začne ten, kdo hodil větší číslo :-)

public void Zapas()
        {
            Console.WriteLine( "Vítejte v Aréně! " );
            Console.WriteLine( "Dnes se utkají {0} a {1}!\n", bojovnik1, bojovnik2 );
            Console.WriteLine( "Stiskni libovolnou klávesu pro výběr pořadí..." );
            Console.ReadKey();
            int hod1 = 0;
            int hod2 = 0;
            while (hod1 == hod2)
            {
                hod1 = kostka.Hod();
                VypisZpravu( String.Format( "Bojovník {0} hodil {1}", bojovnik1, hod1 ) );
                hod2 = kostka.Hod();
                VypisZpravu( String.Format( "Bojovník {0} hodil {1}", bojovnik2, hod2 ) );
                if( hod1 == hod2 )
                    Console.WriteLine( "Remíza, další hod..." );
            }
            Bojovnik b1 = bojovnik1;
            Bojovnik b2 = bojovnik2;
            if( hod2 > hod1 )
            {
                b1 = bojovnik2;
                b2 = bojovnik1;
                Console.WriteLine( "{0} hodil větší číslo a začíná!\n", b1 );
            }
            else
                Console.WriteLine( "{0} hodil větší číslo a začíná!\n", b1 );

            Console.WriteLine( "Stiskem libovolné klávesy můžeme začít" );
            Console.ReadKey();

            //cyklus s vlastním bojem
            while ( b1.NaZivu() && b2.NaZivu() )
            {
                b1.Utoc( b2 );
                VykresliArenu();
                VypisZpravu( b1.VypisPosledniZpravu() );
                VypisZpravu( b2.VypisPosledniZpravu() );
                if (b2.NaZivu())
                {
                    b2.Utoc( b1 );
                    VykresliArenu();
                    VypisZpravu( b2.VypisPosledniZpravu() );
                    VypisZpravu( b1.VypisPosledniZpravu() );
                }
            }
        }
 
Odpovědět
19.12.2018 18:39
Avatar
Tomáš Knor
Člen
Avatar
Tomáš Knor:14.1.2019 19:52

Ahoj snažím se vytvořit vylepšení kde si můžeš zvolit zda chceš mága nebo bojovníka ale z nějakého důvodu to nefunguje.

namespace Arena
{
class Program
{
static void Main(string[] args)
{

Kostka kostka = new Kostka(10);
Console.Write­Line("Jak chcete aby se jmenoval váš první bojovník?");
string jmeno1 = Console.ReadLine();
Console.Write­Line("Jaké třídy bude váš bojovník?");
Console.Write­Line("1. Bojovník \n2. Mág");

char volba = Console.ReadKe­y().KeyChar;
switch (volba)
{
case '1':
Bojovnik prvnibojovnik = new Bojovnik(jmeno1, 100, 20, 10, kostka);
break;
case '2':
Bojovnik prvnimag = new Mag(jmeno1, 60, 15, 12, kostka, 30, 45);
break;
}
Console.Write­Line("Jak chcete aby se jmenoval váš druhý bojovník?");
string jmeno2 = Console.ReadLine();
Console.Write­Line("Jaké třídy bude váš bojovník?");
Console.Write­Line("1. Bojovník \n2. Mág");
char vyber = Console.ReadKe­y().KeyChar;
switch (vyber)
{
case '1':
Bojovnik druhybojovnik = new Bojovnik(jmeno1, 100, 20, 10, kostka);
break;
case '2':
Bojovnik druhymag = new Mag(jmeno1, 60, 15, 12, kostka, 30, 45);
break;
}

Console.ReadKey();
}
}
}

 
Odpovědět
14.1.2019 19:52
Avatar
Tomáš Knor
Člen
Avatar
Odpovídá na Tomáš Knor
Tomáš Knor:14.1.2019 20:00

když chci později zadat něco prvnibojovnik tak mito píše že nexistuje. :-(

 
Odpovědět
14.1.2019 20:00
Avatar
Odpovídá na Tomáš Knor
Neaktivní uživatel:14.1.2019 20:35

Já bych teda založil bojovníka ještě před <code>case</code> a neměnil bych název v případě, že je to mág.

Odpovědět
14.1.2019 20:35
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 10 zpráv z 76.