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. |
|
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..? |
|
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. bool NastRunda; char ObecnyPio; int staryRzad, staraKol, nowyRzad, nowaKol;
do { NastRunda = true; 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; 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; |
|
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. |
|
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ę. bool NastRunda; char ObecnyPio; int staryRzad, staraKol, nowyRzad, nowaKol;
do { NastRunda = true; 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 ]; 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; 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 ]; 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;
return 0; } |
|
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ć. |
|
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? |
|
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ć. |
|
« 1 » 2 |