Tworzę program do gry w szachy dla dwóch osób i napotkałem dość wcześnie na problem. Mianowicie, gdy figura wykona jakiś ruch i ma wykonać następny, zachowuje się tak jakby nie wykonała pierwszego. Przykładowo: jadę pionkiem z A2 na A4. Chcę wykonać następny ruch jadąc o jeden do przodu. I jest problem, bo pionek zachowuje się tak jakby dalej stał na A2 i zamiast jechać na A5 jedzie na A3. W kodzie wygląda to tak:
Pionek p1(1,2);
p1.ruch(& p1.x, & p1.y);
p1.pokaz_polozenie();
p1.ruch(& p1.x, & p1.y);
p1.pokaz_polozenie();
,gdzie
void Pionek::ruch(int *wsk_x, int *wsk_y)
{
if(*wsk_y=2)
{
int k;
cout << "O ile pol chcesz jechac " << endl;
cin >> k;
switch(k)
{
case 1:
*wsk_y+=1;
break;
case 2:
*wsk_y+=2;
break;
default:
cout << "Nie mozesz sie ruszyc o tyle pol";
}
}
else
*wsk_y+=1;
}
void Pionek::pokaz_polozenie()
{
cout << "Polozenie pionka to: " << "(" << x << "," << y << ")" << endl;
}
Wyświetla się:
O ile pol chcesz jechac
2
Polozenie pionka to: (1,4)
4
O ile pol chcesz jechac
1
Polozenie pionka to: (1,3)
A moim zdaniem powinno:
O ile pol chcesz jechac
2
Polozenie pionka to: (1,4)
4
O ile pol chcesz jechac
1
Polozenie pionka to: (1,5)
Mógłby ktoś wskazać gdzie robię błąd. Z góry dzięki.