Warcaby - idea promocji pionka

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 ?

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).

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 :>

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

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.

0

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

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

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