Diskuze: Zděděné třídy jako jedná třída
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 17 zpráv z 17.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Nejjednodušší postup je třeba něco takového:
Postava VytvorPostavu(string typPostavy, string jmeno)
{
if (typPostavy=="lukostrelec")
return new Lukostrelec(jmeno);
else
if (typPostavy=="bojovnik")
return new Bojovnik(jmeno);
}
Děkuji, ale vůbec nevím jak váš kód přidat do toho svého, asi bych to měl přidat jako metodu ale nevím do které třídy. ať se snažím jak chci, program mi to nechce vzít.
Potřebuji aby hráč mohl přijmout třídu Ninja, Nabusenec a Valecnik, momentálně to mám že je to vždy válečník, jen se k tomu vypíše co to doopravdy mělo být.
pro vkládání kódu slouží tlačítko </>
a dej sem celý obsah toho souboru, ať je vidět i to podstatné!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mortal_Kombat
{
class Prostredi
{
private Postava postava;
public Valecnik hrac = new Valecnik("AA",1,1,1,"Kokot");
public void gene()
{
int volba = 0,dzivoty= 0,dhbitost=0,dutok=0;
string jmeno="";
string jmenoTridy="";
Random random = new Random();
Console.WriteLine("Vítej ve hře Mortal Kombat\nZvol si nějaké husté jméno:");
jmeno = Console.ReadLine();
Console.WriteLine("Vyber si postavu\n1. Nabusenec (Tezkopadna, ale silna hora masa)\n2. Ninja (Neni moc silny, ale je velice hbity)\n3. Valecnik (Neni moc hbity ani moc silny, ale ma hafo zivotu)\n");
volba = Console.Read();
switch(volba)
{
case 1:
jmenoTridy = "Nabušenec";
dutok = random.Next(0, 21) + 150;
dzivoty = random.Next(0, 101) + 900;
dhbitost = random.Next(0, 11);
break;
case 2:
jmenoTridy = "Ninja";
dutok = random.Next(0, 21) + 80;
dzivoty = random.Next(0, 101) + 800;
dhbitost = random.Next(0, 6) + 50;
break;
case 3:
jmenoTridy = "Válečník";
dutok = random.Next(0, 21) + 90;
dzivoty = random.Next(0, 101) + 1200;
dhbitost = random.Next(0, 11) + 20;
break;
/*default:
Console.Clear();
gene();
break;*/
}
hrac = new Valecnik(jmeno, dzivoty, dutok, dhbitost, jmenoTridy);
}
public void Hra()
{
gene();
hrac.VypisPostavu();
Console.ReadKey();
}
}
}
Tady to máš, mohl by jsi mi prosím trochu popsat jak bych měl postavu vytvářet správně ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mortal_Kombat
{
class Valecnik : Postava
{
string jmenoTridy;
public Valecnik(string _jmeno, int _zivoty, int _utok, int _hbitost, string jmenoTridy) :
base(_jmeno, _zivoty, _utok, _hbitost) {
this.jmenoTridy = jmenoTridy;
}
public void VypisPostavu()
{
Console.WriteLine("¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤");
Console.WriteLine("Jméno: {0}", jmeno);
Console.WriteLine("Třída: {0}", jmenoTridy);
Console.WriteLine("Životy: {0}",zivoty);
Console.WriteLine("Útok: {0}", utok);
Console.WriteLine("Hbitosty: {0}", hbitost);
Console.WriteLine("¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mortal_Kombat
{
class Postava
{
protected string jmeno;
protected int zivoty;
protected int utok;
protected int hbitost;
public Postava(string _jmeno, int _zivoty, int _utok, int _hbitost)
{
this.jmeno = _jmeno;
this.zivoty = _zivoty;
this.utok = _utok;
this.hbitost = _hbitost;
}
public bool jenazivu()
{
return (zivoty > 0);
}
}
}
teď jsem si všiml chyby.
tu volbu kdybys ji chtěl mít int, tak bys tu hodnotu musel parsovat
Dobře, děkuji a jak tam mám někam zakomponovat tento kód ?
Postava VytvorPostavu(string typPostavy, string jmeno)
{
if (typPostavy=="lukostrelec")
return new Lukostrelec(jmeno);
else
if (typPostavy=="bojovnik")
return new Bojovnik(jmeno);
}
nevím jaké mezi těmi třídami budeš mít vztahy, ale něco jako:
string volba = "";
int dzivoty = 0, dhbitost = 0, dutok = 0;
string jmeno = "";
string jmenoTridy = "";
Console.WriteLine("Vítej ve hře Mortal Kombat\nZvol si nějaké husté jméno:");
jmeno = Console.ReadLine();
Console.WriteLine("Vyber si postavu\n1. Nabusenec (Tezkopadna, ale silna hora masa)\n2. Ninja (Neni moc silny, ale je velice hbity)\n3. Valecnik (Neni moc hbity ani moc silny, ale ma hafo zivotu)\n");
volba = Console.ReadLine();
switch (volba)
{
case "1":
jmenoTridy = "Nabušenec";
dutok = random.Next(0, 21) + 150;
dzivoty = random.Next(0, 101) + 900;
dhbitost = random.Next(0, 11);
postava = new Nabusenec(jmeno, dzivoty, dutok, dhbitost, jmenoTridy);
break;
case "2":
jmenoTridy = "Ninja";
dutok = random.Next(0, 21) + 80;
dzivoty = random.Next(0, 101) + 800;
dhbitost = random.Next(0, 6) + 50;
postava = new Ninja(jmeno, dzivoty, dutok, dhbitost, jmenoTridy);
break;
case "3":
jmenoTridy = "Válečník";
dutok = random.Next(0, 21) + 90;
dzivoty = random.Next(0, 101) + 1200;
dhbitost = random.Next(0, 11) + 20;
postava = new Valecnik(jmeno, dzivoty, dutok, dhbitost, jmenoTridy);
break;
}
ta to budeš možná provádět až v dalším kroku. Ale to je jedno princip bude podobný.
není zač.
Na závěr přidávám odkaz pro vysvětlení použití metody Console.Read()
Co se tyce tvorby postavy, tak bych pouzil vzor Factory (doctes se o nem v navrhovych vzorech dale v tutorialech). To bys mel nejjednodussi asi. Zvolis si co chces za postavu pres parametr treba a v nastavis si hodnoty jednotlivych postav a to ti vrati vytvoreny objekt. Mel bys to pak i hezky rozdelene...
Zobrazeno 17 zpráv z 17.