kevindurant95 Temat założony przez niniejszego użytkownika |
[C++] stworzenie planszy za pomocą tablicy » 2014-11-22 13:30:26 Witam, mam do zrobienia planszę 6x6, która wygląda tak: http://oi62.tinypic.com/2edvyw5.jpg . Jak zrobić ją za pomocą tablic, tak aby potem po wpisaniu pola przykładowo A5, tylko to konkretne pole wypełniało się jakimś symbolem? |
|
NopeDotAvi |
» 2014-11-22 13:49:04 No offence, ale gdybyś wczoraj o tej 21 (wtedy odpisałeś w poprzednim temacie) zaczął się uczyć o tablicach jedno i wieluwymiarowych był byś w stanie to zrobić. Pokaż kod i powiedz z czym masz problem, kod wstaw w odpowiednie znaczniki. |
|
kevindurant95 Temat założony przez niniejszego użytkownika |
» 2014-11-22 14:08:10 #include <cstdlib> #include <iostream> #include <iomanip>
using namespace std;
void rysuj_plansze() { for( int i = 0; i < 6; i++ ) { cout << " +-----+-----+-----+-----+-----+-----+" << endl; cout << " |" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << endl; cout << i + 1 << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << endl; } cout << " +-----+-----+-----+-----+-----+-----+" << endl; for( int i = 0; i < 6; i++ ) cout << setw( 6 ) << i + 1; cout << endl << endl; }
void wybierz_pole() { char znak; int numer_wiersza; int numer_kolumny; cout << "podaj wiersz: "; cin >> numer_wiersza; cout << "podaj kolumne: "; cin >> numer_kolumny; if( numer_kolumny = 1 ) { znak = 'A'; } if( numer_kolumny = 2 ) { znak = 'B'; } if( numer_kolumny = 3 ) { znak = 'C'; } if( numer_kolumny = 4 ) { znak = 'D'; } if( numer_kolumny = 5 ) { znak = 'E'; } if( numer_kolumny = 6 ) { znak = 'F'; } if( numer_wiersza >= 1 and numer_wiersza <= 6 and numer_kolumny >= 1 and numer_kolumny <= 6 ) cout << "wybrane pole to: " << znak << numer_wiersza << endl; else cout << "takie pole nie istnieje" << endl; }
int main() { rysuj_plansze(); wybierz_pole(); system( "pause" ); return 0; }
|
|
kevindurant95 Temat założony przez niniejszego użytkownika |
» 2014-11-22 14:46:43 Po pierwsze jak wpisuje np. pole 14, to wyświetla mi się za każdym razem pole F1. tzn., niezależnie co wpiszę jako numer kolumny, po konwersji na znak wyświetla mi 'F'. Drugi mój problem jest tego typu, że nie wiem jak połączyć ze sobą tablicę narysowaną z wpisaniem do niej symbolu. |
|
NopeDotAvi |
» 2014-11-22 15:36:13 operator = to operator przypisania. Tym właśnie operatorem sprawdzasz warunki, a operator sprawdzania to: == (dwa razy =), musisz zmienić jeden znak równości na 2 w każdym z tych ifów. Co do wpisywania znaku to najlepiej gdybyś miał tablicę dwuwymiarową. char plansza[ 6 ][ 6 ]; Tak się ja tworzy, tylko przy tablicach trzeba pamiętać, że są numerowane od 0. Czyli gdy masz taką tablicę jak podałem wyżej to jej zbiorem liczb całkowitych nie jest < 1, 6 > tylko < 0, 5 > Odwołuje się w sposób: . Najlepiej poczytaj o tablicach i spróbuj zmienić swój kod na taki z tablicami, wtedy przyjdź to Ci powiem co dalej powinieneś zrobić by po wpisaniu pola pojawiał się tam znaczek. Wtf, cos sie chyba popsulo na forum. |
|
kevindurant95 Temat założony przez niniejszego użytkownika |
» 2014-11-22 23:02:22 Mam teraz coś takiego: #include <cstdlib> #include <iostream> #include <iomanip>
using namespace std; const int MAX_WIERSZ = 6; const int MAX_KOLUMNA = 6; char board[ MAX_WIERSZ ][ MAX_KOLUMNA ]; int numer_wiersza; int numer_kolumny;
void inicjuj_plansze() { for( int i = 0; i < MAX_WIERSZ; i++ ) { for( int j = 0; j < MAX_KOLUMNA; j++ ) board[ i ][ j ] = ' '; } } void rysuj_plansze() { for( int i = 0; i < MAX_WIERSZ; i++ ) { cout << " +-----+-----+-----+-----+-----+-----+" << endl; cout << " |"; for( int j = 0; j < MAX_KOLUMNA; j++ ) cout << " " << board[ i ][ j ] << " |"; cout << endl; cout << i + 1 << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << setw( 6 ) << "|" << endl; } cout << " +-----+-----+-----+-----+-----+-----+" << endl; cout << " A B C D E F " << endl; cout << endl << endl; }
void wybierz_pole() { char znak; cout << "podaj wiersz: "; cin >> numer_wiersza; cout << "podaj kolumne (A=1, B=2, C=3, D=4, E=5, F=6): "; cin >> numer_kolumny; if( numer_kolumny == 1 ) { znak = 'A'; } if( numer_kolumny == 2 ) { znak = 'B'; } if( numer_kolumny == 3 ) { znak = 'C'; } if( numer_kolumny == 4 ) { znak = 'D'; } if( numer_kolumny == 5 ) { znak = 'E'; } if( numer_kolumny == 6 ) { znak = 'F'; } if( numer_wiersza >= 1 and numer_wiersza <= 6 and numer_kolumny >= 1 and numer_kolumny <= 6 ) cout << "wybrane pole to: " << znak << numer_wiersza << endl; else cout << "takie pole nie istnieje" << endl; }
void rysuj_kamien() { board[ numer_wiersza - 1 ][ numer_kolumny - 1 ] = '#'; cout << board[ MAX_WIERSZ ][ MAX_KOLUMNA ]; }
int main() { inicjuj_plansze(); rysuj_plansze(); wybierz_pole(); rysuj_kamien(); system( "pause" ); return 0; }
Plansza jest wypisywana poprawnie, tablica jest stworzona, nadal natomiast nie wiem, jak umieścić w niej '#'. Jakieś sugestie? |
|
Tomek_z_W11 |
» 2014-11-24 14:34:39 W funkcji rysuj_kamien piszesz cout << board[ max ][ max ] , czyli board[6][6], a takie pole nie istnieje, jeżeli masz na myśli pole "ostatnie" zarówno w pionie i poziomie, to napisz board[ 5 ][ 5 ] , co do wpisywania wartości, napisz na przykład board[ 2 ][ 3 ] = 'A' , pamiętaj, żeby ta linijka znajdowała się za funkcją inicjuj_plansze, bo z tego co widze, to w tej funkcji pod każdą komórkę tablicy przypisujesz spację. Na przykład: int main() { inicjuj_plansze(); board[ 0 ][ 0 ] = 'Z'; board[ 0 ][ 1 ] = 'A'; rysuj_plansze(); wybierz_pole(); rysuj_kamien(); system( "pause" ); return 0; }
|
|
« 1 » |