Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Odświeżanie tablicy - warcaby.

Ostatnio zmodyfikowano 2019-01-02 19:46
Autor Wiadomość
kotlin
Temat założony przez niniejszego użytkownika
Odświeżanie tablicy - warcaby.
» 2018-12-30 13:55:55
Witam,

Mam do zrobienia warcaby. Jestem na etapie ruchu pionków. Moim problemem jest to, że nie wiem co zrobić, żeby po wybraniu pionka i wskazaniu mu nowego pola, tablica się odświeżyła i pokazała pionek w nowym miejscu na utworzonej przeze mnie tablicy. Prosiłbym o jak najprostszą pomoc. Można powiedzieć jestem na 2 poziomie kursów na owej stronie i jeżeli nie jest to konieczne to proszę o jak najprostsze wyjaśnienie mi mojego problemu. Z góry dzięki za pomoc.
P-173364
pekfos
» 2018-12-30 14:29:42
Ta "tablica" to wyświetlona w konsoli plansza? Najprościej będzie jak ją po prostu wypiszesz od nowa.

jeżeli nie jest to konieczne to proszę o jak najprostsze wyjaśnienie mi mojego problemu.
To tobie trzeba wyjaśnić, z czym masz problem? I tylko wtedy, kiedy nie jest to konieczne..?
P-173365
kotlin
Temat założony przez niniejszego użytkownika
» 2018-12-30 16:45:24
Tablica robiona jest w konsoli. Czy mógłby mi Pan wyjaśnić jak wypisać tą tablicę "od nowa". Poniżej przedstawiam swój kod. Wydaje mi się, że wszystko w nim jest w porządku, jednak jest w on dosyć długi i umożliwia tylko ruch białego i czarnego pionka, i na tym kończy się program. Potem się zabiorę za jego "ulepszanie", jeżeli będę pewien, że pionki prawidłowo poruszają się w konsoli.

C/C++
bool NastRunda;
char ObecnyPio;
int staryRzad, staraKol, nowyRzad, nowaKol;


do {
    NastRunda = true; // poczatek ruch bialego pionka
   
    cout << "Kolej bialych" << endl;
   
    cout << "Podaj aktualny rzad pionka" << endl;
    cin >> staryRzad;
    cout << "Podaj aktualna kolumne pionka" << endl;
    cin >> staraKol;
   
    ObecnyPio = plansza[ staryRzad ][ staraKol ];
   
    if( ObecnyPio == 0 ) {
        cout << "Podales nieprawidlowe pole (te pole jest puste)" << endl;
        NastRunda = false;
    }
   
    if( ObecnyPio == 1 ) {
        cout << "Wybrales nieprawidlowy pionek" << endl;
        NastRunda = false;
    }
   
    if( !NastRunda ) {
        cin.get();
        cin.get();
        continue;
    }
   
} while( !NastRunda );

do {
    NastRunda = true;
   
    cout << "Podaj nowy rzad pinoka" << endl;
    cin >> nowyRzad;
    cout << "Podaj nowa kolumne pionka" << endl;
    cin >> nowaKol;
   
    if( plansza[ nowyRzad ][ nowaKol ] != 0 ) {
        cout << "Pole to jest zajete!" << endl;
        NastRunda = false;
    }
   
    if( !( abs(( float ) staryRzad - nowyRzad ) == 1 && abs(( float ) staraKol - nowaKol ) == 1 ) ) {
        cout << "Pionek nie moze sie tak ruszac" << endl;
        NastRunda = false;
    }
   
    if( !NastRunda ) {
        cin.get();
        cin.get();
        continue;
    }
} while( !NastRunda );

plansza[ staryRzad ][ staraKol ] = 0;
plansza[ nowyRzad ][ nowaKol ] = ObecnyPio;

do {
    NastRunda = true; // poczatek ruchu czarnego pionka
   
    cout << "Kolej czarnych" << endl;
   
    cout << "Podaj aktualny rzad pionka" << endl;
    cin >> staryRzad;
    cout << "Podaj aktualna kolumne pionka" << endl;
    cin >> staraKol;
   
    ObecnyPio = plansza[ staryRzad ][ staraKol ];
   
    if( ObecnyPio == 0 ) {
        cout << "Podales nieprawidlowe pole (te pole jest puste)" << endl;
        NastRunda = false;
    }
   
    if( ObecnyPio == 2 ) {
        cout << "Wybrales nieprawidlowy pionek" << endl;
        NastRunda = false;
    }
   
    if( !NastRunda ) {
        cin.get();
        cin.get();
        continue;
    }
   
} while( !NastRunda );

do {
    NastRunda = true;
   
    cout << "Podaj nowy rzad pinoka" << endl;
    cin >> nowyRzad;
    cout << "Podaj nowa kolumne pionka" << endl;
    cin >> nowaKol;
   
    if( plansza[ nowyRzad ][ nowaKol ] != 0 ) {
        cout << "Pole to jest zajete!" << endl;
        NastRunda = false;
    }
   
    if( !( abs(( float ) staryRzad - nowyRzad ) == 1 && abs(( float ) staraKol - nowaKol ) == 1 ) ) {
        cout << "Pionek nie moze sie tak ruszac" << endl;
        NastRunda = false;
    }
   
    if( !NastRunda ) {
        cin.get();
        cin.get();
        continue;
    }
} while( !NastRunda );

plansza[ staryRzad ][ staraKol ] = 0;
plansza[ nowyRzad ][ nowaKol ] = ObecnyPio;


P-173368
pekfos
» 2018-12-30 17:47:20
Czy mógłby mi Pan wyjaśnić jak wypisać tą tablicę "od nowa".
Tak jak za pierwszym razem, tylko drugi raz.
P-173370
kotlin
Temat założony przez niniejszego użytkownika
» 2018-12-30 19:27:57
Ruch białego pionka prawidłowo pokazywany jest na planszy w nowo wygenerowanej tablicy. Jednak gdy wpisuje położenie gdzie ruszyć ma się wybrany przeze mnie drugi pionek to tworzy się nowa tablica z zmienionym położeniem czarnego pionka, ale już cofniętym położeniem białego pionka. Nie wiem może w złe miejsce wstawiłem tą tablicę. Proszę o naprowadzenie na dobrą ścieżkę.

C/C++
bool NastRunda;
char ObecnyPio;
int staryRzad, staraKol, nowyRzad, nowaKol;


do {
    NastRunda = true; //POCZATEK RUCHU PIERWSZEGO GRACZA
   
    cout << "Kolej bialych" << endl;
   
    cout << "Podaj aktualny rzad pionka" << endl;
    cin >> staryRzad;
    cout << "Podaj aktualna kolumne pionka" << endl;
    cin >> staraKol;
   
    ObecnyPio = plansza[ staryRzad ][ staraKol ];
   
    if( ObecnyPio == 0 ) {
        cout << "Podales nieprawidlowe pole (te pole jest puste)" << endl;
        NastRunda = false;
    }
   
    if( ObecnyPio == 1 ) {
        cout << "Wybrales nieprawidlowy pionek" << endl;
        NastRunda = false;
    }
   
    if( !NastRunda ) {
        cin.get();
        cin.get();
        continue;
    }
   
} while( !NastRunda );

do {
    NastRunda = true;
   
    cout << "Podaj nowy rzad pinoka" << endl;
    cin >> nowyRzad;
    cout << "Podaj nowa kolumne pionka" << endl;
    cin >> nowaKol;
   
    if( plansza[ nowyRzad ][ nowaKol ] != 0 ) {
        cout << "Pole to jest zajete!" << endl;
        NastRunda = false;
    }
   
    if( !( abs(( float ) staryRzad - nowyRzad ) == 1 && abs(( float ) staraKol - nowaKol ) == 1 ) ) {
        cout << "Pionek nie moze sie tak ruszac" << endl;
        NastRunda = false;
    }
   
    if( !NastRunda ) {
        cin.get();
        cin.get();
        continue;
    }
} while( !NastRunda );

plansza[ 8 ][ 8 ]; //moja tablica
for( int i = 0; i < 8; i++ ) {
    for( int j = 0; j < 8; j++ ) {
        plansza[ i ][ j ] = 0;
       
        if( i < 3 && i % 2 == 0 && j % 2 == 1 ) {
            plansza[ i ][ j ] = 1;
        } else if( i < 3 && i % 2 == 1 && j % 2 == 0 ) {
            plansza[ i ][ j ] = 1;
        } else if( 4 < i && i % 2 == 0 && j % 2 == 1 ) {
            plansza[ i ][ j ] = 2;
        } else if( 4 < i && i % 2 == 1 && j % 2 == 0 ) {
            plansza[ i ][ j ] = 2;
        }
    }
}

for( int i = 0; i < 8; i++ ) {
    cout << "+---+---+---+---+---+---+---+---+" << endl;
    for( int j = 0; j < 8; j++ ) {
        if( plansza[ i ][ j ] == 1 ) {
            cout << "| C ";
        }
        if( plansza[ i ][ j ] == 2 ) {
            cout << "| B ";
        }
        if( plansza[ i ][ j ] == 0 ) {
            cout << "|   ";
        }
    }
    cout << "|";
    cout << endl;
   
    plansza[ staryRzad ][ staraKol ] = 0;
    plansza[ nowyRzad ][ nowaKol ] = ObecnyPio;
}
cout << "+---+---+---+---+---+---+---+---+" << endl;


do {
    NastRunda = true; // POCZATEK RUCHU DRUGIEGO GRACZA
   
    cout << "Kolej czarnych" << endl;
   
    cout << "Podaj aktualny rzad pionka" << endl;
    cin >> staryRzad;
    cout << "Podaj aktualna kolumne pionka" << endl;
    cin >> staraKol;
   
    ObecnyPio = plansza[ staryRzad ][ staraKol ];
   
    if( ObecnyPio == 0 ) {
        cout << "Podales nieprawidlowe pole (te pole jest puste)" << endl;
        NastRunda = false;
    }
   
    if( ObecnyPio == 2 ) {
        cout << "Wybrales nieprawidlowy pionek" << endl;
        NastRunda = false;
    }
   
    if( !NastRunda ) {
        cin.get();
        cin.get();
        continue;
    }
   
} while( !NastRunda );

do {
    NastRunda = true;
   
    cout << "Podaj nowy rzad pinoka" << endl;
    cin >> nowyRzad;
    cout << "Podaj nowa kolumne pionka" << endl;
    cin >> nowaKol;
   
    if( plansza[ nowyRzad ][ nowaKol ] != 0 ) {
        cout << "Pole to jest zajete!" << endl;
        NastRunda = false;
    }
   
    if( !( abs(( float ) staryRzad - nowyRzad ) == 1 && abs(( float ) staraKol - nowaKol ) == 1 ) ) {
        cout << "Pionek nie moze sie tak ruszac" << endl;
        NastRunda = false;
    }
   
    if( !NastRunda ) {
        cin.get();
        cin.get();
        continue;
    }
   
   
} while( !NastRunda );

plansza[ 8 ][ 8 ]; //moja tablica
for( int i = 0; i < 8; i++ ) { //tu zaczyna sie moja tablica w petli
    for( int j = 0; j < 8; j++ ) {
        plansza[ i ][ j ] = 0;
       
        if( i < 3 && i % 2 == 0 && j % 2 == 1 ) {
            plansza[ i ][ j ] = 1;
        } else if( i < 3 && i % 2 == 1 && j % 2 == 0 ) {
            plansza[ i ][ j ] = 1;
        } else if( 4 < i && i % 2 == 0 && j % 2 == 1 ) {
            plansza[ i ][ j ] = 2;
        } else if( 4 < i && i % 2 == 1 && j % 2 == 0 ) {
            plansza[ i ][ j ] = 2;
        }
    }
}

for( int i = 0; i < 8; i++ ) {
    cout << "+---+---+---+---+---+---+---+---+" << endl;
    for( int j = 0; j < 8; j++ ) {
        if( plansza[ i ][ j ] == 1 ) {
            cout << "| C ";
        }
        if( plansza[ i ][ j ] == 2 ) {
            cout << "| B ";
        }
        if( plansza[ i ][ j ] == 0 ) {
            cout << "|   ";
        }
    }
    cout << "|";
    cout << endl;
    plansza[ staryRzad ][ staraKol ] = 0;
    plansza[ nowyRzad ][ nowaKol ] = ObecnyPio;
}
cout << "+---+---+---+---+---+---+---+---+" << endl;


return 0;
}
 
P-173372
pekfos
» 2018-12-30 20:01:26
To chyba powinno być oczywiste, ale nie resetuj stanu gry w trakcie trwania gry. Ważniejsza rzecz: nie kopiuj kodu. Powinieneś już znać funkcje, zacznij ich używać.
P-173373
kotlin
Temat założony przez niniejszego użytkownika
» 2018-12-30 21:03:02
Na lekcjach nie było jeszcze omawianych funkcji. Aby się dokształcić w tym temacie wystarczą mi dwa tematy z poziomu 2, a konkretnie temat 17 i 19, czy jeszcze jakieś inne?
P-173374
pekfos
» 2018-12-30 21:13:11
Tablic i pętli for też nie było, jeśli robiłeś lekcje po kolei, a w kodzie masz. Lekcje 17, 19 i 20 co najmniej. 23 i 24 też się tu może przydać.
P-173375
« 1 » 2
  Strona 1 z 2 Następna strona