GO játék kőcsoportosítás

Címkék
GO játék kőcsoportosítás
2016-04-15T07:55:26+02:00
2016-04-15T21:35:41+02:00
2022-08-10T02:45:29+02:00
csabi93
Sziasztok!

A miniGO játékot kell megvalósítanom. Addig eljutottam hogy csináltam egy síma Kő típusű tömböt ,amiben tárolom a köveket(objektumokat). Addig eljutottam ,hogy a kő a tábláról akkor tűnjön el, ha körbe veszi őt minden lehetséges oldalról ellenséges kő. Már csak azt kéne megvalósítanom hogy Alakzatokat (csoportokat) hozzak létre. Itt teljesen megakadtam :S Milyen logika alapján folytassam?

Nagyon kellene egy kis segítség.
Mutasd a teljes hozzászólást!

  • Ha csak azt kell nézned, hogy élő-e az alakzat, akkor viszonylag egyszerű a kérdés. Az utolsó lerakott kő szomszédait kell vizsgálnod (mivel alakzat csak közvetlenül akkor eshet foglyul, amikor mellé tesznek, spontán nem).
    A lerakott kővel szomszédos ellenfél kövekre kell figyelned, én valami ilyesmivel csinálnám:

    shape = [] function isAlive(stone): if stone in shape: return false // ha a követ már vizsgáltuk, térjünk vissza hamissal shape.push(stone) // ha a követ még nem vizsgáltuk, tegyük el egy listába bool alive = false; // egyelőre még úgy tudjuk, hogy nem él a kő for neighborCell in stone.getNeighborCells(): // nézzük a szomszédos cellákat if neighborCell is empty: return true // üres szomszédos cella: van élete az alakzatnak if stoneOn(neighborCell).color == stone.color: // ha a szomszédos cellában ua. kő van, akkor alakzatot alkot alive = alive || isAlive(stoneOn(neighborCell)) // hozzá OR-oljuk a bool változónkhoz a szomszéd kő életét is return alive; // a kövünk szomszédainak élete
    Mutasd a teljes hozzászólást!
  • Szia!
    Ha átküldöd az eddigi kódodat szívesen ránézek.
    Két dolgot had írjak az eddigiek alapján:
     - nem biztos, hogy teljesen jól értem, de én nem biztos, hogy létrehoznék egy tömböt a köveknek. Ha tudom, hogy hanyadik lépésnél járunk, akkor azt is tudom hány kő ment le eddig és még mennyi felhasználható van. (mellesleg olyan játék nem nagyon van, ahol az összes rendelkezésre álló követ felhasználják)
     - nem biztos, hogy szükség van az Alakzat osztályra. Úgy gondolom az alakzatok menedzselésére több energiát kell fordítani, hiszen az alakzatok a kövek lerakásával változnak. Elképzelhető pl. hogy két alakzatot egy kő lerakása kapcsán össze kell vonnod. Szerintem e helyett egy Tábla kell neked. Elképzelhető, hogy van előnye az Alakzat osztály létrehozásának, de egyelőre nem látom.
    Mutasd a teljes hozzászólást!
  • én nem biztos, hogy létrehoznék egy tömböt a köveknek

    Java, OOP, valamiféle kollekció kelleni fog az objektumok menedzselésére.

    Ha tudom, hogy hanyadik lépésnél járunk, akkor azt is tudom hány kő ment le eddig

    Jó, hogy tudod, na de kit érdekel? (Mármint miért releváns az infó?)

    még mennyi felhasználható van

    Nincs limitje a felhasználható köveknek. Egy új kő lerakásakor létre hozol egy új Kő-t és kész.

    olyan játék nem nagyon van, ahol az összes rendelkezésre álló követ felhasználják

    Mivel nincs limitje a felhasználható köveknek, egyáltalán nincs ilyen játék.

    nem biztos, hogy szükség van az Alakzat osztályra.

    Ezzel a résszel egyetértek, de túl sok a _kell_ a nyitó hsz-ben, valószínűleg nem szórakozásból csinálja csabi93 a programot, hanem valami beadandó lehet. Ott meg úgy kell táncolni, ahogy fütyülnek.
    Mutasd a teljes hozzászólást!
  • én nem biztos, hogy létrehoznék egy tömböt a köveknek
    Java, OOP, valamiféle kollekció kelleni fog az objektumok menedzselésére.

    Igen, igen, de ha kell is tárolni a köveket mint objektumokat, akkor sem tömbben tenném! És most a "ha kell is tárolni"-ról. A Kő mint osztály...ezt sem biztos, hogy létrehoznám. Miért? Pontosan mit is tudna, milyen property-jei lennének? Az egyik kő ugyanolyan mint a másik (a színt leszámítva). Arra akarok kilyukadni, hogy a követ sztem felesleges ilyen szinten "modellezni" - hacsak nem kötelező.
    Csak annyit akarok mondani, hogy ha nem kötelező, akkor erősen elgondolkodnék, hogy létrehozzam-e. Most, ennyi alapján nem látok okot.

    Ha tudom, hogy hanyadik lépésnél járunk, akkor azt is tudom hány kő ment le eddig
    Jó, hogy tudod, na de kit érdekel? (Mármint miért releváns az infó?)

    Éppen ez az. Szerintem max. az releváns, hogy hányadik lépésnél járunk (a játékmenetnél ez fontos), de hogy mennyi kő fogyott el irreleváns - épp ezért nem látom a hozzáadott értékét annak, hogy a köveket tömbben tároljuk.

    még mennyi felhasználható van
    Nincs limitje a felhasználható köveknek. Egy új kő lerakásakor létre hozol egy új Kő-t és kész.

    De van. A Go-ban 181 fekete és 180 fehér kő van hivatalosan.

    olyan játék nem nagyon van, ahol az összes rendelkezésre álló követ felhasználják
    Mivel nincs limitje a felhasználható köveknek, egyáltalán nincs ilyen játék.

    Lásd fentebb.

    nem biztos, hogy szükség van az Alakzat osztályra.
    Ezzel a résszel egyetértek, de túl sok a _kell_ a nyitó hsz-ben, valószínűleg nem szórakozásból csinálja csabi93 a programot, hanem valami beadandó lehet. Ott meg úgy kell táncolni, ahogy fütyülnek.

    Jó lenne látni a beadandó kiírását ez esetben, tervezni csak a pontos specifikáció alapján lehet.
    Mutasd a teljes hozzászólást!
  • Lehet előnyös is, hátrányos is Kő-ket példányosítani. Ezt a tervező döntheti el. Ha viszont úgy dönt, hogy igenis létrehoz Kő-ket, akkor kell nekik valami tároló, hogy ez egy heterogén kollekció, vagy a Tábla tárolja, vagy mi, az részletkérdés.
    (Amúgy a fent adott algoritmusom általánosítható nem OOP esetre is az élet eldöntésére.)

    A Go-ban 181 fekete és 180 fehér kő van hivatalosan.

    Azért, mert kellett valami szabályt hozni, hogy mekkora csomag követ adjanak a gyártók. Elméletileg nincs határ, ha kifogynál a kövekből, akkor fogolycserével lehet folytatni a játékot. Vannak az Ingnek érdekes szabályai, de a kövek számára ő sem tér ki, szerintem végtelennek kellene tekinteni. Ezen mindenesetre nem fogunk összeveszni, de elméletileg egy játék (passzokat nem számítva) 4110473354993164457447863592014545992782310277120 lépésből is állhat. Én is játszottam már olyat (~10k voltam akkor), hogy kifogytak a kövek. Nem tudom, profi szinten történt-e már ilyen, de gyanítom, hogy nem. 


    Mindenesetre a kérdésre majd térjünk vissza, ha OP reagált.
    Mutasd a teljes hozzászólást!
  • akkor van vége a játéknak amikor mind2 játékos passzol
    Mutasd a teljes hozzászólást!
  • Mi van???

    Elolvastál bármit is abból, amit eddig írtunk?
    Mutasd a teljes hozzászólást!
  • Öntevékeny topic

    majd térjünk vissza, ha OP reagált.

    Reagált ... visszatérhettek rá 
    Mutasd a teljes hozzászólást!
  • biztos nem fogunk összeveszni, felôlem lehet végtelen is. Mindenesetre egy játék 200-250 lépésig szokott tartani.

    Viszont, mi a helyzet az eredeti problémával? Mi a feladat pontosan?
    Mutasd a teljes hozzászólást!
Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd