Diskuze: Seznam vyzkoušených párů
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 32 zpráv z 32.
//= 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.
Asi bych potřeboval více informací, konkrétně co je ten pár zač, jestli máš pole párů nebo chceš párovat 2 pole s hodnotami a tak.
Mám seznam číslic a seznam vektorů - čísla jsou dvě řady 1..8 Tedy v tomto seznamu je každé číslo 2x... Proto potřebuji ten druhý údaj - Vector2. Takže potřebuji dostat bool - zda jsem tuto kombinaci - číslo + Vector2 již nezkoušel - a to jak Vector2 + číslo, tak číslo + Vector2...
A teď prosím česky, ať tomu máme šanci porozumět. K čemu to vlastně potřebuješ? Takže máš tři seznamy?
"Tedy v tomto seznamu je každé číslo 2x"
= 2 seznamy...
A vybírám vždy jeden prvek z každého => jeden pár. A chci vědět, že jsem tento pár ještě nezkoušel...
Pořád to úplně nechápu, beru že máš prostě 2 nějaké seznamy a jejich hodnoty páruješ. Jestli ti nějak moc nezáleží na rychlosti, tak nejjednodušší je si udělat třetí seznam, kde budeš mít dvouprvková pole vždy 2 hodnot, co jsou spolu spojené. Pro vyzkoušení, zda pár již není asociovaný, budeš muset celý list proiterovat.
Ono by bylo lepší říci co děláš, než co si myslíš, že potřebuješ. Třeba to děláš dobře, ale třeba taky ne.
Nešlo by to udělat tak, že by se každému prvku přiřadilo číslo(1,2,...), při každém výběru by se ta čísla sečetla a uložila. Potom by se jen po každém výběru provedla kontrola, jestli ten součet už neexistuje.
S programováním moc společného nemám, takže popřípadě neberte tenhle komentář moc vážně...
Dělám PC mód do karetní hry. (pexeso) No a chci jej udělat inteligentní - takže ze seznamu karet, které jsou ještě na stole, chci vypíchnout právě ty nepoužité kombinace - a až z nich vybírat náhodným číslem. (Ne naopak - prvně vybírat a pak se ptát - vyhnu se tak cyklu.) To si žádá, aby druhý pár byl známý - aby se ale dala vytáhnout i karta neznámého páru, chci to udělat tak, že když bude objevena druhá karta ze známého páru, pokud hráč tuto dvojici nevybere, tak v dalším kole si PC vybere tento pár. Jinak načne nový - neznámý pár...
Pokud vím, tak pexeso funguje jinak, počítač by měl mít uložené dvourozměrné pole a pamatovat si, kde je která karta (jakmile ji otočí, tka ji tam zapíšeš). Pak se jen díváš, jestli tam již nemáš 2 stejné, odkryté. Můžeš tam dát nějaký random, aby to neblyo tak chytré.
Ano karty mám dané - znám jejich vektor a párové číslo. Podle vektoru vykresluji. A podle párového čísla kontroluji shodu... (To jsou ty 2 řady 1..8) Mám to na mysli dosti podobně. Chci to udělat tak, že se podívám, zda k otočené kartě není pár, jinak zvolím náhodě - v rozsahu karet, u kterých to má smysl. Ale tady narážím na problém - jak otočené a hotové páry (avšak ještě neodstraněné) zapisovat - to tu nyní řeším... Děkuji.
A proč máš tolik seznamů, snad stačí jeden seznam instancí Karta, ne? Počítači udělej ten samý s vektory, ale bez pořadových čísel a ty postupně doplňuj.
Nemám 2 seznamy - mám jden slovník - převádím pozici myši do 70x70 políčkové soustavy a koukám do slovíku, popř. při kliknutí kartu otočím...
A hráče od PC nerozděluji - mám seznam hráčů - a když je aktuální hráč PC - zahraje utomatickou hru. Tím beru otočené karty i od hráčů - protože to tak funguje - ostatní hráči také vidí tahy ostatních...
A jak - mám jen 5 proměnných - to je celá hra (+ 1 struktura - hráč). Celý herní kód má 22 řádků...
Minimálně karta je objekt. Že je něco krátké neznamená, že je to správně. Kdyby ses to rozhodl někdy rozšířit, tak by to s těmi všemi slovníky nebylo úplně hezké.
No ale píši tu jen o jednom slovíku... + 2 listy, int[] a 2 textury...
Každá karta na stole je objekt, který dokáže reagovat na události od uživatele (kliknutí). Bude to fungovat i kdyby se karty překrývaly, což je ve tvé metodě obtížně dosažitelné.
No jo, jenomže já to neberu z pohledu karty - ta žádnou funkci nemá - nač bych se dělal s nějakým složitým modelem? Prostě otestuji upravenou pozici myši - nač dělat program dělším - nemyslím si, že je OOP nutné za každou cenu... Jinak jej normálně využívám.
Takové věci jako stavy ( prohlédnuto/neprohlédnuto ) lze dobře
nacpat do párového čísla, protože párů bývá obvykle méně než je
rozsah použité proměnné. Např. záporná hodnota páru řekne, že byl
otočen - čili při otočení změníš hodnotu na -(hodnotu).
Nezávisle na tom, jde-li o objekty nebo ne.
Takhle se ale neprogramuje, nejsme na kalkulačce s omezenou paměti, jsme na počítači.
... aneb šetřit se má, ať to stojí, co to stojí
Pokud chceš šetřit pamětí a výkonem procesoru, programuj v Assembleru, Fortranu, C nebo jiném výkonném programovacím jazyku. Tvé programy budou úsporné, rychlé a efektivní. Tedy pokud to umíš.
Pokud chceš šetřit svůj čas vývojáře, použij moderní programovací jazyky, které za tebe udělají hromadu práce vývojáře, ale jako daň si vezmou o něco menší efektivitu výsledné aplikace. Pokud s tím umíš, rozdíl ve výkonu nebude příliš velký, ale vývoj programu bude rychlejší a bude mít lepší udržovatelnost.
Plýtvání je definováno jako něco zbytečného, psát kód tak, aby mu člověk rozuměl, není plýtvání. Ale debata o čistotě kódu s GM programátorem nemá smysl, již jsem se několikrát vyjadřoval k tomu, že nikoho nezajímá, jestli je ten kód dobře, hlavně když panáček dělá to, co chtějí.
Navrhuješ vkládat dva údaje do jedné proměnné. Bylo by to porušení 1NF a to není dobré ani v databázích, ani v aplikacích.
Myslel jsem, že u aplikace by to takový hřích nebyl.
Ale asi je to pak skutečně méně čitelné.
No ale děláš v něm Proměnná (přesněji atribut) má vypovídat o jedné vlastnosti objektu. Pokud jich má ten objekt více, dám mu více atributů. Jak říkal Kit, pokud chceš šetřit, tak k tomu jsou jiné nástroje.
Dělám leccos, dělal jsem leccos a budu dělat leccos.
Pokud to nedělám profesionálně, nikam mě to neřadí a neznamená to,
že by mě nic jiného nezajímalo. Prostě mi přišlo to řešení
vhodné.
Když to tak není, rád se dozvím důvod. A teď už ho vím.
Ok, omlouvám se. Vidím, že tebe tam řadit nemám, dá se s tebou docela normálně mluvit Jen zvyk, hodně těch lidí, co v tom dělá, si nedá poradit.
JJ. Už jsem si skoro vyčítal,že jsem v tobě probudil
zase nějaký ten flame event.
Já moc neflamuji, spotřebovává to čas a energii Pokud člověka nepřesvědčím v pár odpovědích o správném názoru, nechám toho.
Zobrazeno 32 zpráv z 32.