Diskuze: Generování postav

C# .NET .NET (C# a Visual Basic) Generování postav American English version English version

Avatar
KingKoRn
Člen
Avatar
KingKoRn:

Zdravím. Jsem začátečník v c# a pracuji na jednoduché manažerské hře. Potřeboval bych poradit, jak vygenerovat kupříkladu 50 postav a uložit je do souboru, ze kterého by je program načítal a pracoval s nimi. Postavy by dědily vlastnosti z třídy (Zapasnik.cs) a jejich jména a příjmení by byla náhodně přiřazovaná ze seznamu jmen. Vím že toho chci moc, ale vůbec si nevím rady s tím ukládáním postav do souboru a pracování s nimi. Předem děkuji za jakoukoliv radu.

 
Odpovědět 11.11.2012 13:43
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na KingKoRn
David Čápka:

Ahoj, projeď si sekci Práce se soubory: http://www.itnetwork.cz/csharp/soubory je tam vše popsáno od začátku po ukládání instancí objektů.

Doporučuji formát XML.

Editováno 11.11.2012 18:26
Nahoru Odpovědět 11.11.2012 18:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
KingKoRn
Člen
Avatar
Odpovídá na David Čápka
KingKoRn:

Děkuju, pročetl jsem si teda hlavně ty formáty xml, ale pořád nevím jak vytvořit ten seznam jmen a příjmení a náhodně je přiřazovat. Myslíte že by bylo vhodné ten seznam udělat přes pole?

 
Nahoru Odpovědět 16.11.2012 16:16
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na KingKoRn
David Čápka:

Na poli zde nevidím nic špatného. Stačí ti 2 pole, z těch vždy vybereš náhodný prvek a sestavíš jméno postavy.

Nahoru Odpovědět 16.11.2012 16:23
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na KingKoRn
matesax:
Random r = new Random();
string[]
     names = new string[] { "Karel", "Jan", "Pavel", "Antonín" };
     lastNames = new string[] { "Novotný", "Skočdopole", "Vyskočilzokna", "Nanozešimrá" };

int randomIndex = r.Next(names.Length - 1);
string randomFullName = names[randomIndex] + " " + lastNames[randomIndex];
Editováno 16.11.2012 16:30
 
Nahoru Odpovědět 16.11.2012 16:29
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Určitě by si měl udělat 2 indexy, může mít jiný počet jmen a příjmení. Ten random mi připadá blbě, má tam být

r.Next(names.Length);
Nahoru Odpovědět 16.11.2012 16:43
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Máš-li v poli deset věcí, rozsah indexů bude 0..9 - takže tam musí být - 1...

Editováno 16.11.2012 16:44
 
Nahoru Odpovědět 16.11.2012 16:44
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Místo hádání se si nastuduj metodu Next() na třídě Random a vlastnost Length na poli.

Nahoru Odpovědět 16.11.2012 16:58
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na KingKoRn
Kit:

Jestliže chceš seznam jmen a příjmení, možná by se hodilo použití seznamu, tedy třídy List.

Nahoru Odpovědět  +1 16.11.2012 17:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mediel
Redaktor
Avatar
Mediel:

Přikláním se k řešení s Listem. Osobně ho používám raději, než pole.

Nahoru Odpovědět 17.11.2012 2:20
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Ale pokud má předem vytyčený počet lidí, tak to je přeci pole - navíc, když nebude chtít nic dynamického. Ovšem pokud bude chtít mazat zápasníka, co prohrál, pak bych možná šel také do listu...

 
Nahoru Odpovědět 17.11.2012 6:53
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Pokud záleží na pozici jmen, tak je to pole. Například Karel bydlí v bytě č. 5. Budu ho chtít v poli na 5. pozici. Když se odstěhuje, byt zůstane prázdný do doby, než se tam nastěhuje někdo jiný. Mezitím se však nikdo v sousedních bytech stěhovat nebude.

Nahoru Odpovědět 17.11.2012 7:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mediel
Kit:

Nejde o to, jestli používáme raději pole, seznam, slovník či množinu. Pro každý problém je nutné vybrat tu správnou datovou strukturu, která vystihuje podstatu.

Dříve bylo obvyklé, že se na všechno používalo pole, protože jiná možnost nebyla. Vlastně byla. Ještě pointery. Proto se nad nimi budovaly nadstavby. Vyšší jazyky tyto nadstavby mají již v sobě zahrnuty ve formě předdefinovaných tříd a vypilovány tak, aby byly co nejefektivnější. Nám zbývá tyto struktury využívat. Pole stále má své uplatnění, ale už jen jako pole. Pointery nám vývojáři pro jistotu zakázali.

Nahoru Odpovědět 17.11.2012 10:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Javovské pole je dost hloupé, ale to v .NETu umí úplně to samé jako seznam, jen má konstantní velikost. Pokud nechce jména dynamicky přidávat a např. jen jednorázově odněkud načíst, nevidím v tom problém a pole mi přijde jako vhodná kolekce.

Nahoru Odpovědět  +1 17.11.2012 10:55
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
KingKoRn
Člen
Avatar
Odpovídá na matesax
KingKoRn:

Vím že už je to trošku starší téma, ale trvalo mi než jsem se k tomu opět dokopal něco dělat. Díky za kód, ale ještě jsem ho trošku vylepšil. Myslím že o tom mluvil sdraco, protože jména a přijmení dostali vždy stejný index, takže celé jména byla pokaždé stejná.

Random r = new Random();
string[]
     jmena = new string[] { "George", "John", "Peter", "Michael", "Chuck" };
string[]
     prijmeni = new string[] { "Santos", "Washington", "Freeman", "Jackson", "Newman", "Silva" };

int randomIndexj = r.Next(jmena.Length);
int randomIndexp = r.Next(prijmeni.Length);
string randomFullName = jmena[randomIndexj] + " " + prijmeni[randomIndexp];

Ještě teda musím prostudovat to celkové generování postav, aby každá měla náhodné ability atd.

 
Nahoru Odpovědět  +2 14.12.2012 19:24
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 15 zpráv z 15.