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.
Člen
Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.