• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c++ Gra w warcaby, bicie pionków.

Object Storage Arubacloud
0 głosów
1,393 wizyt
pytanie zadane 8 stycznia 2019 w C i C++ przez Łukasz_P Nowicjusz (120 p.)

Witam wszystkich serdecznie, 

Od dość niedawna zacząłem uczyć się programowania, swoją przygodę zacząłem z językiem c++, uczę się z książki "c++ przewodnik dla początkujących". W rozdziale z funkcjami miałem do napisania prostą grę w warcaby. Problem którego nie potrafię rozwiązać znajduję się w funkcji bicie. 

void bicie(char plansza[][8],char wybor,int a, int b)
{
    int ruch;
    if(plansza[a-1][b-1]!=wybor ||plansza[a-1][b+1]!=wybor ||
       plansza[a+1][b-1]!=wybor ||plansza[a+1][b+1]!=wybor )
    {
        if(plansza[a-2][b-2]==' ' ||plansza[a-2][b+2]==' ' ||
           plansza[a+2][b-2]==' ' ||plansza[a+2][b+2]==' ' )
        {
            char tymczas_a,tymczas_b,tymczas_c,tymczas_d;
            tymczas_a = plansza[a-2][b-2];
            tymczas_b = plansza[a-2][b+2];
            tymczas_c = plansza[a+2][b-2];
            tymczas_d = plansza[a+2][b+2];

            if(b>0 && b<7 && plansza[a-2][b-2]==' ' && plansza[a-1][b-1]!=wybor && plansza[a-1][b-1]!=' ')
            {
                plansza[a-2][b-2]='a';
            }
            if(b>0 && b<7 && plansza[a-2][b+2]==' ' && plansza[a-1][b+1]!=wybor && plansza[a-1][b+1]!=' ')
            {
                plansza[a-2][b+2]='b';
            }
            if(b>0 && b<7 && plansza[a+2][b-2]==' ' && plansza[a+1][b-1]!=wybor          && plansza[a+1][b-1]!=' ')
            {
                plansza[a+2][b-2]='c';
            }
            if(b>0 && b<7 && plansza[a+2][b+2]==' ' && plansza[a+1][b+1]!=wybor && plansza[a+1][b+1]!=' ')
            {
                plansza[a+2][b+2]='d';
            }
            rysuj_plansze(plansza,wybor);
            cout << "gdzie bicie? "<< endl;
            //// oddaje tymczasowe ////////////////////
          //  plansza[a-2][b-2] = tymczas_a;
          //  plansza[a-2][b+2] = tymczas_b;
          //  plansza[a+2][b-2] = tymczas_c;
          //  plansza[a+2][b+2] = tymczas_d;
            /////////////////////////////////////////////
        }
    }

   W momencie gdy czerwony pionek ma możliwość zbicia białego jest wszystko w porządku, pojawia się wybór w które miejsca mogę przesunąć pionek, natomiast gdy tylko nadarzy się możliwość kiedy to biały pionek powinien mieć możliwość zbić pionek czerwony opcje wyboru nie pojawiają się na ekranie. Wydaje się to tak jakby biały pionek nie spełniał warunku który zaznacza na planszy możliwość wyboru, ale nie rozumiem dlaczego.
 

Oto link do całości https://pastebin.com/NReMAF8e. Z góry dziękuję za pomoc.

komentarz 8 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)
Przydalby sie komentarze, co robisz przy danym ifie itd
komentarz 11 stycznia 2019 przez Łukasz_P Nowicjusz (120 p.)
Jasne, dodałem komentarze do swojego kodu https://pastebin.com/xHmEVJLp

1 odpowiedź

0 głosów
odpowiedź 8 stycznia 2019 przez amited Początkujący (470 p.)
jeżeli nie wiesz który if może mieć problem to opcja jest prosta, w każdym daj cout w którym piszesz sobie co się dzieje, skoro dla czerwonego działa git a dla białego nie to w taki sposób ogarniesz jaki if mu przeszkadza, odpaliłem twój kod ale nie potrafię ogarnać co tam się dzieje ;d
komentarz 11 stycznia 2019 przez Łukasz_P Nowicjusz (120 p.)
Właśnie wiem w którym if'ie jest problem natomiast nie rozumiem dlaczego. Postawiłem 3 pionki w kodzie żeby sprawdzić bicie. Aby ruszyć się pionkiem musisz podać 2 liczby najlepiej oddzielone spacją. Pierwsza z nich odpowiada za długość na planszy a druga za szerokość.
komentarz 12 stycznia 2019 przez amited Początkujący (470 p.)
skoro wiesz to napisz co to za if ktory dziala dla czerwonego ale dla bialego juz nie
komentarz 12 stycznia 2019 przez Łukasz_P Nowicjusz (120 p.)
            if(b>0 && b<7 && plansza[a-2][b-2]==' ' && plansza[a-1][b-1]!=wybor && plansza[a-1][b-1]!=' ')
            {
                plansza[a-2][b-2]='a';
            }
            if(b>0 && b<7 && plansza[a-2][b+2]==' ' && plansza[a-1][b+1]!=wybor && plansza[a-1][b+1]!=' ')
            {
                plansza[a-2][b+2]='b';

Te dwa ify zaznaczają poprawnie miejsca do którego może ruszyć się pionek czerwony

 

            if(b>0 && b<7 && plansza[a+2][b-2]==' ' && plansza[a+1][b-1]!=wybor          && plansza[a+1][b-1]!=' ')
            {
                plansza[a+2][b-2]='c';
            }
            if(b>0 && b<7 && plansza[a+2][b+2]==' ' && plansza[a+1][b+1]!=wybor && plansza[a+1][b+1]!=' ')
            {
                plansza[a+2][b+2]='d';
            }


Natomiast te dwa ify są ignorowane przez kompilator. A sprawdzają one czy pionek nie znajduje się przy krawędzi planszy czy  pole za pionkiem do zbicia jest puste oraz czy pionek który należy zbić na pewno jest pionkiem przeciwnika. Więc wszystko powinno grać, niestety kompilator je pomija.  
 

Podobne pytania

0 głosów
1 odpowiedź 1,059 wizyt
pytanie zadane 8 grudnia 2017 w C i C++ przez alskard Nowicjusz (120 p.)
+1 głos
1 odpowiedź 2,840 wizyt
pytanie zadane 9 sierpnia 2018 w C i C++ przez Bondrusiek Maniak (61,370 p.)
–3 głosów
0 odpowiedzi 99 wizyt

92,552 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...