Warcaby - idea promocji pionka

Odpowiedz Nowy wątek
Cpp
2011-07-02 19:23
Cpp
0

Hej,

Mam abstrakcyjną klasę Figure oraz dwie podrzędne: Pawn i Queen (które implementują wirtualną metodę Move).

Mam zagwozdkę jak zrobić promocję pionka... Trzeba by zniszczyć obiekt Pawn i utworzyć Queen w promowane miejsce. Tylko że tego w funkcji Move nie da się tego bezpośrednio w ten sposób zrobić ?
Generalnie pionki trzymam w wektorze <Figure*> w klasie Board, nie chciałbym tego przypadku implementować poza klasą Figure.
Można by zaprzyjaźnić Board dla Figure, i w metodzie Move gdy zajdzie promocja, usunąć swój obiekt, utworzyć Queen i zaktualizować adres w wektorze. Jakieś idee ?

Pozostało 580 znaków

2011-07-02 20:12

Rejestracja: 10 lat temu

Ostatnio: 4 lata temu

0

Coś wywołuje tę metodę Move(). W związku z tym w pewnym momencie, zamiast ją wywołać powinna usunąc istniejacy pionek i na "docelowym" polu postawic wypromowany pionek (nowy).

Pozostało 580 znaków

Cpp
2011-07-02 20:23
Cpp
0

No faktycznie.
Aby utworzyć drzewo gry, czy nawet w sumie zwykłe posunięcie, Figure musi znać pozostałe obiekty Figure.
I teraz nie wiem - czy realizować to w klasie Board, czy zaprzyjaźnić Figure z Boardem, aby miała dostęp do wektora pionków na planszy ?
Ciężko trochę to rozplanować by wszystko ładnie "zagrało", bo najtrudniejszą rzeczą będzie jeszcze stworzenie drzewa gry :>

Pozostało 580 znaków

2011-07-02 20:54

Rejestracja: 13 lat temu

Ostatnio: 1 godzina temu

Lokalizacja: Warszawa

0

Eee przeginacie Bracia.
Najprostsze rozwiązania najlepsze,a w tym wypadku będzie to:

class Figure
{
public:
  enum Type{Pawn,Queen} figureType;

  void promote(void)//chociaż jak figureType jest publiczne,to nie jest to takie potrzebne.W 1 implementacji było prywatne
  {
     figureType=Queen;
  }

  konstruktory
  {
    figureType=Pawn;
  }
};

natomiast owa funkcja move będzie badała Figure::figureType i ruszała figurą odpowiednio do ustawionej flagi.I tyle,nie trzeba robić żadnych cudów z kasowaniem obiektów,tworzeniem od nowa oraz aktualizowaniem wektora


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB, 2011-07-02 20:54

Pozostało 580 znaków

Cpp
2011-07-02 21:01
Cpp
0

Wybacz, ale programuję(uczę się) w C++ :>

W Warcabach tego może aż tak tego nie widać, ale w Szachach zysk przejrzystości i ogólnie będzie znaczny.

Pozostało 580 znaków

2011-07-02 22:29

Rejestracja: 8 lat temu

Ostatnio: 1 godzina temu

0

A jak usuwasz pionki z gry? Nie chcę uprzedzać odpowiedzi, ale myślę że na podobnej zasadzie powinna odbywać się podmiana.

Pozostało 580 znaków

Cpp
2011-07-02 23:01
Cpp
0

Dobra, przemyślę sobie to w kontekście całego programu...
Sama promocja nie jest problemem w sumie, tylko szkielet klas.

Dzięki za chęci

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0