Go Fish – Pravidla pro hraní karet. Úkol „Kartní hra „Go fish“ Karetní hra Go fish

od 2 do 6 hráčů, nejlépe od 3 do 6.

Paluba

Standardní balíček pro 52 karet.

cílová

Dokončete většinu sad ze čtyř.

Nastavení

Pokud se účastní tři až šest hráčů, každému hráči se rozdá pět karet. Se dvěma hráči je rozdáno sedm karet.

Všechny zbývající karty jsou umístěny lícem dolů do dobíracího balíčku.

Hratelnost

Náhodně vyberte hráče, který půjde jako první.

Na oplátku požádejte hráče, aby uvedl konkrétní hodnotu karty. Například: "Barb, dej mi prosím svých 9." Musíte mít alespoň jednu kartu požadované hodnoty.

Pokud má hráč, kterého se ptáte, karty požadované úrovně, musí vám poskytnout všechny své karty této úrovně. V tomto příkladu vám měl Bars dát všech svých 9.

Pokud od hráče, kterého žádáte, obdržíte jednu nebo více karet, získáte další kolo. Můžete požádat kteréhokoli hráče o jakoukoli úroveň, kterou již máte, včetně té, o kterou jste právě požádali.

Pokud osoba, které se ptáte, nemá příslušné karty, řeknou: "Jdi na ryby." Poté si líznete vrchní kartu z dobíracího balíčku.

Pokud získáte kartu s žádostí o hodnost, ukažte ji ostatním hráčům a dostanete další kolo. Pokud si však líznete kartu, kterou jste neurčili, stane se dalším hráčem. Zadní kartu si ponecháte bez ohledu na její hodnost.

POZNÁMKA: "Další hráč" je ten, kdo řekl: "Jdi na ryby."

Když nasbíráte sadu čtyř karet stejné hodnoty, okamžitě sadu ukažte ostatním hráčům a položte čtyři karty před sebe lícem dolů.

Vítězství

Go Fish pokračuje, dokud někdo nemá v ruce žádné karty nebo dokud hra neskončí remízou. Vítězem se stává hráč, který má v tu chvíli nejvíce sad ze čtyř.

Možnost jedna: konkrétní karta

Místo toho, abyste požádali o hodnost, měli byste požádat o konkrétní kartu. Musíte již držet alespoň jednu kartu této hodnoty.

Například: "Charlie, dej mi prosím krále klubů." Pokud to Charlie má, dá ti to a půjdeš znovu. Jinak řekne "Jdi na ryby" a vy losujte. Pokud získáte kartu, o kterou jste požádali, získáte další roztočení. Pokud si vylosujete něco jiného, ​​je nyní na řadě další hráč.

Před hraním tímto způsobem se všichni hráči musí dohodnout, zda můžete požádat o kartu, kterou již máte v ruce. (Pokud o takovou kartu požádáte, budete muset lovit a váš tah skončí, ale může být užitečné, když to uděláte, aby si ostatní hráči mysleli, že tuto konkrétní kartu nedržíte.)

Druhá možnost: Pokračujte v hraní

Když remíza skončí, pokračujte ve hře, dokud nejsou všechny karty seskupeny do čtyř. Když se nikdo nevyčerpá, nikdo neřekne "Jdi na ryby." Pokud někoho požádáte o kartu, kterou nemá, bude řada na ní.

Je rybaření součástí vašeho života? Hlavní postava Tento hráč také rád rybaří a téměř každý den loví na jezeře, které se nachází poblíž něj. Dnes ráno se rozhodl jít na ryby, aby získal maximální úlovek. Pokud mu chcete dělat společnost, stiskněte start a připojte se ke hře. Nejprve si musíte vybrat to nejpohodlnější místo, kde se s vaší novou známostí pohodlně usadíte. Podívejte se pozorně na obrazovku a uvidíte, že je rozdělena na dvě části. Nahoře bude váš rybář a dole bude v jezírku plavat ryba. Vaším cílem je ulovit co nejvíce ryb, ale musíte si dát pozor na to, že ve vodě plavou i další předměty, které nechcete udicí na udici. Pokud se dotknete jakéhokoli kusu železa, můžete snadno zlomit vlasec, což je velmi nežádoucí. Nahoďte svůj rybářský prut co nejdále a pokuste se chytit co největší rybu.

Úkol

Refaktorujte kód C, který implementuje dětskou karetní hru Go Fish.

Zdroj

  • fish.c – programový kód v jednom ze starých dialektů C, ale přesto byl s minimálními úpravami zkompilován moderními překladači.

Popis

Vzhledem k tomu, že hra není v Rusku příliš rozšířená, uvádíme Stručný popis pravidla

  • Hra zahrnuje 2 až 10 hráčů (v tomto programu jsou implementováni 2 hráči).
  • Hra se hraje se standardním balíčkem 52 karet.
  • Cílem hry je nasbírat co nejvíce hromádek s kartami stejné hodnoty (všechny dvojky, všechna esa, všechny desítky atd.)
  • Na začátku hry je hráčům náhodně rozdáno 7 karet (nebo 5 karet, pokud je hráčů 5 nebo více).
  • Zbývající karty se umístí na společnou hromádku lícem dolů. Tento zásobník se nazývá „ocean“ nebo „pool“, tzn. "oceán" nebo "bazén", tzn. místo, kde můžete chytat ryby.
  • Hráči se střídají.
  • Hráč, kterému tah prošel, položí soupeři otázku o kartách určité hodnoty, například: „Máš sedmičky?
    • Hráč musí mít alespoň jednu kartu v hodnotě, kterou požaduje od svého soupeře.
    • Pokud soupeř požadované karty nemá, odpoví „Go fish“ – „go catch“ a hráč si vytáhne 1 kartu z „oceanu“ – společného balíčku.
    • Pokud má soupeř karty požadované hodnoty, dá je tazateli.
    • Pokud hráč vezme požadované karty od soupeře, pak tah zůstává na něm a může požádat o další kartu jakékoli hodnoty.
    • Pokud hráč vyjme kartu požadované hodnoty ze společného balíčku - „oceán“, získá právo vzít si další kartu ze společného balíčku. Je tedy možná situace, kdy si hráč lízne až 4 karty za sebou ze společného balíčku.
  • Poté, co hráč „vyloví“ ze společného balíčku kartu jiné hodnoty, než požadoval, přechází tah na dalšího hráče.
  • Jakmile má hráč 4 karty stejné hodnoty, položí je vedle sebe na samostatnou hromádku lícem nahoru. Tyto karty „vyhrává“ hráč a v další hru neúčastnit se.
  • Hra končí poté, co hráči „vyhrají“ všechny karty. Vyhrává ten, kdo „vyhraje“ více karet.

Během procesu refaktorizace musíte:

  • Přepište kód do C++ (proměnné deklarujte nikoli na začátku bloku, ale tam, kde se skutečně používají, odstraňte anachronismy jazyka C atd.)
  • Zbavte se definic (deklarace konstant) a globálních proměnných.
  • Zbavte se goto .
  • Textový vstup/výstup se provádí přes std::cout atd. Oddělte vstup/výstup textu do samostatné třídy/modulu.
  • Zpracování chyb by mělo být přeneseno do mechanismu výjimek a std::exception .
  • Pokud je to možné, nahraďte primitivní datové struktury, jako jsou pole, std::array nebo std::vector , std::stack , std::queue nebo jinými.
  • Vyberte třídu hráče, která se zabývá vstupem/výstupem a přenosem uživatelských instrukcí.
  • Vyberte třídu počítačových hráčů, která implementuje nějakou AI.
  • Implementujte herní třídu, která bude implementovat pravidla hry, volat hráčům a poskytovat hráčům dostupné informace.
  • Může být použito
Různé hry