Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
KingKoRn
Člen
Avatar
KingKoRn:11.11.2012 13:43

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 Hartinger
Vlastník
Avatar
Odpovídá na KingKoRn
David Hartinger:11.11.2012 18:26

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
You are the greatest project you will ever work on.
Avatar
KingKoRn
Člen
Avatar
Odpovídá na David Hartinger
KingKoRn:16.11.2012 16:16

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 Hartinger
Vlastník
Avatar
Odpovídá na KingKoRn
David Hartinger:16.11.2012 16:23

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
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na KingKoRn
matesax:16.11.2012 16:29
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 Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:16.11.2012 16:43

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
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:16.11.2012 16:44

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 Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:16.11.2012 16:58

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
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na KingKoRn
Kit:16.11.2012 17:51

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

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

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
Tvůrce
Avatar
Odpovídá na Kit
matesax:17.11.2012 6:53

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
Tvůrce
Avatar
Odpovídá na matesax
Kit:17.11.2012 7:57

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
Tvůrce
Avatar
Odpovídá na Mediel
Kit:17.11.2012 10:39

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:17.11.2012 10:55

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
17.11.2012 10:55
You are the greatest project you will ever work on.
Avatar
KingKoRn
Člen
Avatar
Odpovídá na matesax
KingKoRn:14.12.2012 19:24

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
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.