Diskuze: Generování postav
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 15 zpráv z 15.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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?
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.
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];
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);
Máš-li v poli deset věcí, rozsah indexů bude 0..9 - takže tam musí být - 1...
Místo hádání se si nastuduj metodu Next() na třídě Random a vlastnost Length na poli.
Jestliže chceš seznam jmen a příjmení, možná by se hodilo použití seznamu, tedy třídy List.
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...
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.
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.
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.
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.
Zobrazeno 15 zpráv z 15.