NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
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í.

Soutěž: Machr na OOP - Prší

Soutěž již skončila

Zadání

Vašim úkolem bude, naprogramovat s využitím principů objektově orientovaného programování počítačovou verzi karetní hry prší. Využijeme pravidla z wikipedie (<a href="https:/­/cs.wikipedia­.org/wiki/Pr%C5%A1%­C3%AD">odkaz</a>) a to pouze klasickou hru, takže si přečtěte odstavce Průběh hry a Speciální karty. Aplikaci dělejte pro více hráčů (ono to ani jinak hrát nejde). Na začátku zadám počet hráčů, pak zadám jméno každého z nich a pak začne hra. Podle pravidel hra vybere náhodného hráče, který začne. V každém tahu každého hráče, vymažete konzoli a vypíšete kolik karet má každý hráč (v reálné hře prostě vidíte, že Franta má už jen jednu kartu a bylo by vhodné mu tam přihodit sedmičku), volitelně vypíšete i 5 následujících, kteří jsou další v pořadí.

Následující: Franta > Josef > Anička > Antonín > Jarka

Pak vypíšete kartu na balíčku. Pokud není přímo číslo karty (po měnění svrškem), tak jen barvu.

Následně vypíšete možnosti tahu. Tzn., že vypíšete všechny možnosti, které očíslujete, a uživatel zadá číslo volby, kterou si přeje provést. Příklad výstupu tahu:

Stav karet ostatních hráčů:
David: 5
Honza: 8
Karel: 2
Franta: 5

Hraje: Franta
Následuje: Michal > David > Honza > Karel > Franta

Přikládáš na: ♥K

Možnosti tahu:
0) líznout si
1) ♦K
   ♦64
2) ♥8
   ♠A
Tvá volba [0-2]: _

Z předchozí ukázka jste asi pochopili, že můžete používat unicode symboly ♠♣♥♦.

Aplikaci můžete vyřešit i s použitím GUI, záleží na Vás. V případě využití GUI je reprezentace hry na Vás a nemusíte se striktně řídit výše uvedenými formáty.

Pro tohoto machra můžete využít pouze jazyka C# a nesmíte využít již hotových řešení. Při odevzdávání odevzdávejte celý projekt, včetně řešení (.sln souboru). Nezapomeňte, že se jedná o machra na OOP. To znamená, že nemusíte vyřešit úplně všechno, ale hlavní je, aby to bylo dobře navrženo. Pro výhru nemusíte splnit všechno, většina bodů bude udělena za dodržení zásad OOP a zásad psaní „čistého kódu“.

Výhra

Vítěz dostane placku Machr, pár samolepek a ocenění do portfolia.

Výhra

Výsledky

Jméno bodů Řešení ( Stáhnout vše )
Bratr 63 Stáhnout řešení
magic44 59 Stáhnout řešení
Patrik Valkovič 53 Stáhnout řešení
Princ57 47 Stáhnout řešení

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

Aktivity
Avatar
Michal Žůrek - misaz:8.7.2015 11:34

V této soutěži si naprogramuje počítačovou variantu karetní hry Prší pro více hráčů.

Soutěž končí 19.7.2015 14:00:00, tak se nezapomeň zapojit! :-)

 
Odpovědět
8.7.2015 11:34
Avatar
Michal Žůrek - misaz:8.7.2015 11:37

máte na to trochu víc času. Jednak je toho celkem hodně, jednak mám v tom termínu dovolenou, takže se asi nedostanu k PC na hodnocení dříve. Čas využijte efektivně, dejte si třeba den jen na návrh a detailně to promyslete.

// pokud ke konci budete znechuceni, že jste na to měli málo času, protože Vám kočka sežrala monitor, porouchala se disketová mechanika a podobné výmluvy, tak je ani nepište. :)

Editováno 8.7.2015 11:38
 
Nahoru Odpovědět
8.7.2015 11:37
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
MadaraCZech:8.7.2015 12:00

Dotaz. Mohu to dělat ve WF, jako v předchozí úloze ? Týden jsem s tím pracoval a zvykl jsem si :D

 
Nahoru Odpovědět
8.7.2015 12:00
Avatar
Neaktivní uživatel:8.7.2015 12:43

Zas to priondené obmedzenie na C#

Nahoru Odpovědět
8.7.2015 12:43
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Žůrek - misaz:8.7.2015 12:44

tak se ho nauč, není těžký a vyzkoušíš si něco nového.

 
Nahoru Odpovědět
8.7.2015 12:44
Avatar
Patrik Valkovič:8.7.2015 13:14

Hmm, tak to je zajímavý, asi se účastním :)
Jinak taky souhlasím že striktní omezení na C# je poněkud zvláštní, zvláště když se jedná o principy OOP.

Nahoru Odpovědět
8.7.2015 13:14
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Michal Žůrek - misaz
Neaktivní uživatel:8.7.2015 13:30

Další na C# to znamená že bych se mohl účastnit i když hry nejsou moje parketa :D Jinak předpokládám že jsou zakázaný externí knihovny, počítá se mezi ně i XNA?

Nahoru Odpovědět
8.7.2015 13:30
Neaktivní uživatelský účet
Avatar
Odpovídá na Michal Žůrek - misaz
Neaktivní uživatel:8.7.2015 13:44

Tu nejde o to, že by som mal problém s C# ako takým, ale s tým, že momentálne nemám prístup k počítaču s Windows a na linuxoch to s C#-pom nie je bohviečo zatiaľ, pevne verím, že v blízkej budúcnosti sa to zmení.

Editováno 8.7.2015 13:45
Nahoru Odpovědět
8.7.2015 13:44
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Štefan Pružinský:8.7.2015 13:48

Naozaj chceš použiť XNA? Myslel si asi MonoGame... :)
Ja sa bohužiaľ nezúčastním pretože do 26. budem preč... A práve vtedy, keď je taký zaujímavý Machr... ;-(

Nahoru Odpovědět
8.7.2015 13:48
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Štefan Pružinský
Neaktivní uživatel:8.7.2015 13:55

MonoGame je už od třetí strany, XNA je od Microsoftu takže pokud budou zakázaný externí knihovny tak je větší šance na uznání s XNA než MonoGame... Jinak bych to taky řešil v MonoGame

Neaktivní uživatel: Pokud vim tak na linuxu se dá dělat v MonoDevelop ne? popř. Visual Studio ve Winu ovšem ten prý hrozně padá.

Nahoru Odpovědět
8.7.2015 13:55
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Štefan Pružinský:8.7.2015 13:57

XNA sa už nevyvíja... Samotný Microsoft odkazuje vývojárov na MonoGame... :)

Nahoru Odpovědět
8.7.2015 13:57
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Michal Žůrek - misaz:8.7.2015 14:00

XNA i Monogame zakázáno. Zaměřte se na OOP, ne na to že je to pěkně animované a podobné věci, to Vám pak bude akorát líto že jste s tím strávili tolik času a nejsou za to body. Když už chcete dělat GUI, tak nějaké jednoduché v WF nebo WPF.

 
Nahoru Odpovědět
8.7.2015 14:00
Avatar
Odpovídá na Štefan Pružinský
Neaktivní uživatel:8.7.2015 14:02

lol, to jsem netušil... evidentě máme stejně smůlu :D

Nahoru Odpovědět
8.7.2015 14:02
Neaktivní uživatelský účet
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
MadaraCZech:8.7.2015 14:07

Takže když budu mít pěkné GUI s animacemi, tak za to nedostanu ani bod ?

 
Nahoru Odpovědět
8.7.2015 14:07
Avatar
Odpovídá na MadaraCZech
Michal Žůrek - misaz:8.7.2015 14:08

pár bodů dostaneš, ale výhru/prohru to nezvrátí.

 
Nahoru Odpovědět
8.7.2015 14:08
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
MadaraCZech:8.7.2015 14:11

To nedává smysl. Pokud by měl někdo za kód 50 bodů a já 49, tak bych body dostat nemohl, jelikož by to výhru / prohru zvrátilo. :D :D

 
Nahoru Odpovědět
8.7.2015 14:11
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
MadaraCZech:8.7.2015 14:17

Budu to chápat jako "když budeš mít čas navíc, můžeš to udělat"

 
Nahoru Odpovědět
8.7.2015 14:17
Avatar
Odpovídá na MadaraCZech
Michal Žůrek - misaz:8.7.2015 14:18

jistě, ale jak moc je to pravděpodobné?

 
Nahoru Odpovědět
8.7.2015 14:18
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Adam Ježek:8.7.2015 16:33

I na linuxu se dá, třeba monodevelop. A pokud máš dost výkonu, tak by šel Windows ve Virtualboxu

Nahoru Odpovědět
8.7.2015 16:33
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
David Novák
Tvůrce
Avatar
David Novák:9.7.2015 10:17

Taky se připojuji k protestu proti C# :D

Je to sice fajn jazyk, ale proč by si to každý nemohl udělat v objektovém jazyku, který mu vyhovuje? Delphi, Java, C++?

Myslím, že rožšíření možných jazyků by zdejším Machrům prospělo ;)

Nahoru Odpovědět
9.7.2015 10:17
Chyba je mezi klávesnicí a židlí.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:9.7.2015 10:40

Nevím jaký má smysl stěžovat si tady na zadání soutěže (konkrétně omezení na C#). Soutěže dělá komunita ve svém volném čase, pokud tě nezaujme, tak si na ni nestěžuj a nech to být, neznečišťuj její vlákno, nekaž náladu lidem, co do toho vkládají svojí energii a čas. Machři jsou omezení na konkrétní jazyky vzhledem k faktu, že soutěže probíhají v diskuzním fóru, které je takto rozdělené a tím jednotlivá fóra jazyků podporují. C# tu je absolutně nejpopulárnější, jestli se ti z nějakého důvodu nelíbí, počkej si na soutěž s jiným jazykem, bude jich tu ještě spoustu. Simple as that.

Nahoru Odpovědět
9.7.2015 10:40
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:9.7.2015 18:21

Hej všimol som si, že tu je akékoľvek prejavenie nespokojnosti s niečím "ťažký hriech" ale myslím, že môj názor, že "Machr na OOP" by nemal byť viazaný na konkrétny jazyk, je správny. Samozrejme nemusíš s tým súhlasiť, je to len môj názor, kľudne to môžeš zmazať ak sa ti zdá, že to kazí náladu. Nikoho prácu neznehodnocujem, ale keď sa mi niečo nepozdáva tak to napíšem.

Nahoru Odpovědět
9.7.2015 18:21
Neaktivní uživatelský účet
Avatar
hanpari
Člen
Avatar
Odpovídá na Neaktivní uživatel
hanpari:9.7.2015 18:40

Hm, na devbooku vím jen o jednom člověku, který by dokázal jakžtakž spravedlivě vyhodnotit kód ve dvaceti různých jazycích. Jinak je pochopitelné, že zadavatel soutěže bude raději hodnotit jazyk, který zná nejlépe.

 
Nahoru Odpovědět
9.7.2015 18:40
Avatar
Odpovídá na hanpari
Neaktivní uživatel:9.7.2015 18:46

Pri OOP nejde o implementáciu v konkrétnom jazyku, tam ide práve o ten návrh. To či to dotyčný spraví v C# alebo v C++ by malo byť jedno, ale opakujem je to len môj názor, jazyk je len nástroj.

Nahoru Odpovědět
9.7.2015 18:46
Neaktivní uživatelský účet
Avatar
František Boháček:10.7.2015 12:45

Prší se hraje s maryášovými kartami, kde nejsou hodnoty 2, 3, 4, 5, 6, proč máš v ukázce 4? Je to chyba, nebo to je schválně a jestli je to schválně, co to má značit?

 
Nahoru Odpovědět
10.7.2015 12:45
Avatar
Odpovídá na František Boháček
Michal Žůrek - misaz:10.7.2015 12:47

To záleží. Já jsem to vždycky hrál s kartami kde byli zařazeny i 2,3,4,5,6, ale můžeš je klidně vyřadit. Naprogramuj to s balíčkem, jakým uznáš za vhodné.

 
Nahoru Odpovědět
10.7.2015 12:47
Avatar
Patrik Valkovič:10.7.2015 12:48

Btw pokud to bude správně podle OOP tak by neměl být problém další karty tam kdykoliv přidat ;-)

Nahoru Odpovědět
10.7.2015 12:48
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Michal Žůrek - misaz:10.7.2015 12:49

Nemusels to prozrazovat. :)

 
Nahoru Odpovědět
10.7.2015 12:49
Avatar
Michal Žůrek - misaz:10.7.2015 12:55

Pár bonusových bodů bude za volitelný výběr zdali chcete do balíčku karet zařadit i 2,3,4,5,6.

 
Nahoru Odpovědět
10.7.2015 12:55
Avatar
Odpovídá na Michal Žůrek - misaz
František Boháček:10.7.2015 12:58

Já jen, že jsi psal, že to máme udělat podle wiki, kde jsou napsané ty karty mariášové a když si najdeš hrací karty:

mariášové karty - sada obsahuje 32 karet německého typu, s hodnotami 7, 8, 9, 10, spodek, svršek, král, eso. Vznikne z whistové sady, z níž jsou odebrány karty nízkých hodnot.

Zjistíš, že tam ty malé nejsou.. Zmátlo mě to, takže díky za vysvětlení

Jinak, je pravda, že by to neměl být problém, ale tak říkal podle wiki, lepší je se zeptat, zvlášť, když o těch malých na wiki nic není

 
Nahoru Odpovědět
10.7.2015 12:58
Avatar
Odpovídá na Michal Žůrek - misaz
František Boháček:10.7.2015 13:00

A jak by to pak bylo s balíčkem? To by bylo místo 32 karet 52?

 
Nahoru Odpovědět
10.7.2015 13:00
Avatar
Insane Qurd
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Insane Qurd:10.7.2015 15:42

Ahoj, jak mám znázornit svrška? (pokud to dělám bez GUI)

Editováno 10.7.2015 15:43
Nahoru Odpovědět
10.7.2015 15:42
It's impossible to say it's impossible.
Avatar
Insane Qurd
Tvůrce
Avatar
Insane Qurd:10.7.2015 17:03

Už to mám

Nahoru Odpovědět
10.7.2015 17:03
It's impossible to say it's impossible.
Avatar
magic44
Tvůrce
Avatar
magic44:10.7.2015 17:05

Chtěl jsem se zeptat: na wiki v "Průběh hry" se zmiňují pravidla pro hru s přebíjením i bez něho. Já už to mám udělané s přebíjením, ale chtěl jsem se ujistit, jestli to tak opravdu je :D.

Ještě jeden dotaz na kritickou situaci: v balíčku už nejsou žádné karty a v odkládacím balíčku je pouze jedna karta (ta poslední zahraná). Co udělat, když si chce hráč v této situaci líznout? :) Zahlásit, že nejsou karty a nechat ho stát?

Nahoru Odpovědět
10.7.2015 17:05
Moudrý člověk nechce být lepší než ostatní, ale lepší, než byl sám včera.
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na magic44
Ondřej Štorc:10.7.2015 17:22

No asi by jsi mu ani neměl dovolit lízat....

Nahoru Odpovědět
10.7.2015 17:22
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
magic44
Tvůrce
Avatar
Odpovídá na Ondřej Štorc
magic44:10.7.2015 17:47

No takze, když nebude mit ani co zahrát, tak ho proste preskocit?

Nahoru Odpovědět
10.7.2015 17:47
Moudrý člověk nechce být lepší než ostatní, ale lepší, než byl sám včera.
Avatar
Odpovídá na magic44
Michal Žůrek - misaz:10.7.2015 19:23

no tak co jiného zbývá.

 
Nahoru Odpovědět
10.7.2015 19:23
Avatar
Odpovídá na magic44
Lukáš Křehula:10.7.2015 19:27

Kam si myslíš, že se ztrácí karty, jakmile je zahraješ? Pokud zahraješ kartu, tak tu minulou vrchní kartu dej zpátky do balíčku. Ve hře bude stále 52 karet (nebo 32, pokud používáš mariášové)

Editováno 10.7.2015 19:27
 
Nahoru Odpovědět
10.7.2015 19:27
Avatar
Odpovídá na Lukáš Křehula
Michal Žůrek - misaz:10.7.2015 19:36

Teoreticky mohou mít hráči všech 52 (32) karet v rukou a velmi teoreticky u jednoho hráče existuje možnost že nebude mít co líznout ani co zahrát, ale je to velmi nepravděpodobné.

 
Nahoru Odpovědět
10.7.2015 19:36
Avatar
coells
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
coells:12.7.2015 12:26

Je pouze velmi nepravděpodobné se do toho stavu ve hře dostat.
Pravděpodobnost, že s balíčkem o 32 kartách při držení 8 karet nemáš co zahrát, je 0.6%.
To není závratně malá pravděpodobnost.

 
Nahoru Odpovědět
12.7.2015 12:26
Avatar
Odpovídá na coells
Michal Žůrek - misaz:12.7.2015 14:41

oni můžou hrát stylem, že hráč A má 31 karet a hráč B má 1 kartu.

 
Nahoru Odpovědět
12.7.2015 14:41
Avatar
Patrik Valkovič:12.7.2015 16:36

Pomalu se blížím do konce a zatím využívám celkem 70 tříd....zdá se mi to až masochistické :D

Editováno 12.7.2015 16:37
Nahoru Odpovědět
12.7.2015 16:36
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
qwertyW
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
qwertyW:12.7.2015 18:17

jo, zase to může být i naopak, takže ta pravděpodobnost bude +- podobná...

Nahoru Odpovědět
12.7.2015 18:17
Programuji, tedy jsem.
Avatar
D0ll0k
Člen
Avatar
Odpovídá na Patrik Valkovič
D0ll0k:12.7.2015 20:06

70? :-O ja mam 5 trid a hodlam jeste udelat tak dve. Asi si rikam jestli delam spravne OOP...

Nahoru Odpovědět
12.7.2015 20:06
Veni, vidi, programmato
Avatar
Michal Žůrek - misaz:12.7.2015 20:19

7 nebo 70, vyhrát se dá s obojím.

 
Nahoru Odpovědět
12.7.2015 20:19
Avatar
MrPabloz
Člen
Avatar
Odpovídá na D0ll0k
MrPabloz:12.7.2015 20:27

Podle mě, maximum tříd na tohle je 10, takže je zbytečné mít jich 70. U OOP neplatí pravidlo, čím víc tříd tím lepší OOP :) Má se do dělat s rozumem a má to mít nějaký smysl, ne tam naflákat vše, co koho napadne :)

Nahoru Odpovědět
12.7.2015 20:27
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Odpovídá na D0ll0k
Patrik Valkovič:12.7.2015 20:28

Psal jsem že využívám. Nahlásil mi to tak Code Metrics - tedy započítávají se tam i Link<> a StringBuilder a tak :)
Sám jsem jich samozřejmě vytvářel mnohem míň ;-)

Nahoru Odpovědět
12.7.2015 20:28
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
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 50 zpráv z 73.