Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 8. diel - C# - Aréna s bojovníkmi

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
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.
            }
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. :)

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.

Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovedá 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());
}
Odpovedať
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.

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.

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() );
                }
            }
        }
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();
}
}
}

Avatar
Tomáš Knor
Člen
Avatar
Odpovedá na Tomáš Knor
Tomáš Knor:14.1.2019 20:00

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

Avatar
Odpovedá 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.

Odpovedať
Neaktivní uživatelský účet
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 76.