Moje hra - přičítání život - chyba

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zamčeno
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

Moje hra - přičítání život - chyba

Příspěvek od Skelller »

Ahoj.. Zrovna dělám konzolovou hru.. neumím najít chybu.. Když dám všechny body do obrany nepřítele to léči.. nevíte proč?

Kód: Vybrat vše

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Bojovka
{
    class postava
    {
        public string jmeno;
        public int utok = 0;
        public int obrana = 0;
        public int zivoty;
        public int bodyrozdeleni = 35;

        public void VyberAtributy()
        {
            Console.WriteLine("----------------");
            Console.WriteLine(jmeno);
            Console.WriteLine("Útok: " + utok);
            Console.WriteLine("Obrana: " + obrana);
            Console.WriteLine("Životy " + zivoty);
            Console.WriteLine("----------------");
        }
        public void RozdeleniAtributu()
        {
            Console.WriteLine("Zbývá rozdělit " + bodyrozdeleni + " bodů");
            Console.WriteLine("Které dovednosti chcete zlepšit?");
            Console.WriteLine("U pro útok");
            Console.WriteLine("O pro obranu");
        }
        public int VyhodnoceniObrany()
        {
            int konecnyutok = utok - obrana;
            return konecnyutok;
        }

        public void DalsiNepratele(string Jmeno, int Utok, int Obrana, int Zivoty)
        {
            jmeno = Jmeno;
            utok = Utok;
            obrana = Obrana;
            zivoty = Zivoty;
        }
    }
    class Program
    {

        static void Main(string[] args)
        {
            
            //Vytvoření všeho a rozdělení atributů
            postava postavahrace = new postava();
            postava nepritel1 = new postava();
            
            Console.WriteLine("Zadejte prosím svoji přezdívku: ");
            postavahrace.zivoty = 100;
            postavahrace.jmeno = Console.ReadLine();
            Console.WriteLine("Vytvořte postavu rozdělením bodů mezi jednotlivé atributy");
            while (postavahrace.bodyrozdeleni > 0)
            {
                postavahrace.VyberAtributy();
                postavahrace.RozdeleniAtributu();

                    switch (Console.ReadLine())
                    {
                        case "U":
                            postavahrace.bodyrozdeleni -= 5;
                            postavahrace.utok += 5;
                            postavahrace.VyberAtributy();
                            postavahrace.RozdeleniAtributu();
                            break;

                        case "O":
                            postavahrace.bodyrozdeleni -= 5;
                            postavahrace.obrana += 5;
                            postavahrace.VyberAtributy();
                            postavahrace.RozdeleniAtributu();
                            break;

                        default:
                            Console.WriteLine("Neplatný vstup!");
                            break;
                    }
                    if (postavahrace.bodyrozdeleni == 0)
                    {
                        Console.WriteLine();
                    }
                }

                //Bojování proti nepřátelům
                Random nahodnacisla = new Random();
                nepritel1.DalsiNepratele("Kostlivec", 20, 10, 80);
                Console.WriteLine("Potkal jsi kostlivce, který má tyto atributy");
                nepritel1.VyberAtributy();
                Console.WriteLine("Chceš na něho zaútočit? [A/N]");
                if (Console.ReadLine() == "A")
                {
                    Console.WriteLine();
                    Console.WriteLine("Souboj začíná!");
                    Console.WriteLine("----------------");

                    while (postavahrace.zivoty > 0 && nepritel1.zivoty > 0)
                    { 
                        int konecnyutokhrace = postavahrace.utok - nepritel1.obrana;
                        int konecnyutoknepritele = nepritel1.utok - postavahrace.obrana;
                        if (postavahrace.obrana > konecnyutoknepritele)
                        {
                            konecnyutoknepritele = 0;
                        }
                        else if (nepritel1.obrana > konecnyutokhrace)
                        {
                            konecnyutokhrace = 0;
                        }
                        Console.WriteLine("Útok začíná");
                        while (true)
                        {
                            if (postavahrace.zivoty <= 0 || nepritel1.zivoty <= 0)
                            {
                                break;
                            }
                            nepritel1.zivoty -= konecnyutokhrace;
                            postavahrace.zivoty -= konecnyutoknepritele;
                            Console.WriteLine("Po útoku máš " + postavahrace.zivoty + " životů");
                            Console.WriteLine("Kostlivec má " + nepritel1.zivoty + " životů");
                            Console.WriteLine("Pro další útok stiskni libovolnou klávesu");
                            Console.ReadKey();

                        }
   
                    }
                }
                
            


            Console.ReadKey();
        }
    }
}
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

Re: Moje hra - přičítání život - chyba

Příspěvek od Skelller »

Fakt nikdo neví? Můžu nějak pomoct v orientaci kodu?
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Moje hra - přičítání život - chyba

Příspěvek od CZechBoY »

Nechce se mi to číst jak je to dlouhý :D
Se koukni kolik odebíráš a jak se k tý hodnotě přistupuje...
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
omilis
Level 1.5
Level 1.5
Příspěvky: 118
Registrován: 22 črc 2009 23:09

Re: Moje hra - přičítání život - chyba

Příspěvek od omilis »

Nevím jestli si už na to přišel, ale problém bude nejspíše v této podmínce

Kód: Vybrat vše

                    
if (postavahrace.obrana > konecnyutoknepritele)
{
     konecnyutoknepritele = 0;
}
else if (nepritel1.obrana > konecnyutokhrace)
{
     konecnyutokhrace = 0;
}
Problém je, že ta druhá podmínka se vůbec nevyhodnocuje, pokud platí ta první. Nemělo by tam být to else.
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

Re: Moje hra - přičítání život - chyba

Příspěvek od Skelller »

Díky omilis.. Vyřešil jsem to tak, že tu podmínku else if jsem hodil jako vnořenou do té první ;)
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
omilis
Level 1.5
Level 1.5
Příspěvky: 118
Registrován: 22 črc 2009 23:09

Re: Moje hra - přičítání život - chyba

Příspěvek od omilis »

Když to dáš jako vnořenou, tak to taky nebude správně. Udělej to jako dvě nezávislé podmínky.

Kód: Vybrat vše

                  
if (postavahrace.obrana > konecnyutoknepritele)
{
     konecnyutoknepritele = 0;
}


if (nepritel1.obrana > konecnyutokhrace)
{
     konecnyutokhrace = 0;
}
kulisak6
nováček
Příspěvky: 10
Registrován: 10 črc 2014 15:57

Re: Moje hra - přičítání život - chyba

Příspěvek od kulisak6 »

nic vice nez souhlasit
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

Re: Moje hra - přičítání život - chyba

Příspěvek od Skelller »

A co by se mohlo stát kdyby to bylo v té vnořené?
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7411
Registrován: 23 pro 2010 09:23

Re: Moje hra - přičítání život - chyba

Příspěvek od faraon »

Co by se mohlo stát? Třeba to že se ta druhá podmínka nikdy neprovede ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Chyba CPU na desce
    od petan320 » » v Problémy s hardwarem
    16 Odpovědi
    11227 Zobrazení
    Poslední příspěvek od petr22
  • Chyba příkazový řádek
    od zik9 » » v Windows 11, 10, 8...
    4 Odpovědi
    4081 Zobrazení
    Poslední příspěvek od zik9
  • Sqlite - systémová chyba
    od cindy the skull » » v Vše ostatní (sw)
    6 Odpovědi
    12850 Zobrazení
    Poslední příspěvek od atari
  • prohližeč událostí id 1796 chyba
    od walderan » » v Problémy s hardwarem
    9 Odpovědi
    6899 Zobrazení
    Poslední příspěvek od walderan
  • Windows Update nelze stáhnout, chyba 0x80070246
    od Rewqa » » v Windows 11, 10, 8...
    11 Odpovědi
    9465 Zobrazení
    Poslední příspěvek od Rewqa

Zpět na „Programování a tvorba webu“