Java [1242]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • ojopojo

    Dlubie sobie w Javie i zastanawiam sie nad podejsciem do problemu

    Mam 2 rodzaje kart: postaci i akcji. (
    Z nich chcialbym sobie ulozyc 2 stosy na stole.

    Zatem stworzylem sobie uniwersjalna klase Deck ktora mi obsluguje klase bazowa Card.


    I pytanie czy
    1. stworzyc 2 klasy do odpowiednio StosKartPostaci i StosKartAkcji ktore zwracaja odpowiedni typ karty ( a nie ogolny )

    2. przyjmowac klase bazowa a pozniej jak nam jest potrzebna odpowiednia klasa, to sprawdzamy jej klase szczegolowa.
    ( obrazowanie --start
    jest klasa Gracz, posiada ona liste List<Card> hand
    pisze sobie methode sluzaca dodaniu karty akcji do reki gracza
    addActionCard.
    i czy uzyc addActionCard(Card card) bo moja uniwersalna klasa Deck zwraca obiekty klasy Card
    i w ciele metody sprawdzic czy to jest ActionCard

    czy np addActionCard(ActionCard card)
    i wtedy stworzyc nowa klase stostu ktora mi wyplywa karty akcji

    --koniec obrazowania)
  • Ja nie istnieje (FURBY)

    dlatego jest obiektowosc zeby nie bylo problemu 2 stosow gdy chcemy miec jeden :O
  • ojopojo

    nakresle inaczej :)

    abstract class Card { }

    class abstract extends Card {
    void doAction();
    }

    class NobleCard extends Card {
    duperele parametry;
    }

    class Deck {
    List<Card> deck;
    }

    class Player {
    List<> hand;
    List<> collected;

    void addActionCard(<> card)
    }

    no i kwestia jest taka ze do hand moga wlatywac tylko ActionCard
    a do collected tylko NobleCards

    Zatem pytanie czy pozostac tylko przy jednej klasie Deck czy zrobic jemu dwojke dzieciakow ktore trzymaja tylko karty o odpowiedniej klasie i wtedy nie bedziemy sie musieli bac o niezgodnosc typow ?
  • Ja nie istnieje (FURBY)

    mozna
  • Ja nie istnieje (FURBY)

    nie wiem czy wogóle dobrze podchodzisz do tematu :O
  • ojopojo

    o jakze wielki blysk swiatla mi dzis podarowales o.o
  • Ja nie istnieje (FURBY)

    a nie lepiej wyjsc do

    abstrac class Card
    {
    void PerformAction(){}
    }

    no i teraz gosc ma lape skladajaca sie z tablicy tych kart.. i jak bierzesz karte to performuejsz akcje na niej :O i to co ma zrobic karta z akcja robi a to co ma zrobic karta bez akcji robi :O czy jakos w ten desen :)

    Pusta klasa bazowa to nie jest jakis turbo super omen bo wychodzi na to ze jest zbędna... szczegołnie w twoim rozumowaniu :)
    Mozesz do srodka wstawic enuma z typem karty :O

  • ojopojo

    to bylo tylko takie naszkicowanie

    klasa bazowa zawiera na razie string name, i boolean discarded ( ale nie wiem czy bede to uzywal)
    pozniej moze tam dorzuce obiekty potrzebne do rysowania.

    chodzi o to ze w grze sa 2 rodzaje kart akcji: te ktora gracz zagrywa i trzyma w lapce, i karty ludkow ktora sa na stole, i pozniej one moga byc zbierane.


    jest kilka kart typu NobleCard ktore by mialy jakas akcje np. ciagnij nastepna karte noble i doloz na stole, ale wiekszosc ma tylko nazwe punkty i jakies tam parametry.

    Mozna by wszystko wrzucic jako jeden rodzaj kart, gdzie czesc ma pusta metode PerformAction a pozostale costam maja powypelnianie, ale nie wiem czy tak jest dobrze obiektowo. :-) ale do tego trzeba sie przyzwyczaic.

    dzieki za odpowiedz.