snake_yaro Temat założony przez niniejszego użytkownika |
Zamiana wielu warunków na jeden warunek w pętli for » 2009-12-25 11:39:01 Witam. Przejdę do rzeczy - mam taki oto kod: if( ktory == 1 ) { mvprintw( 0, 1, "" ); mvprintw( 0, 2, "" ); mvprintw( 1, 0, "" ); mvprintw( 1, 1, "" ); mvprintw( 1, 2, "" ); mvprintw( 2, 0, "" ); mvprintw( 2, 1, "" ); mvprintw( 2, 2, "" ); attron( A_REVERSE ); mvprintw( 0, 0, "" ); } if( ktory == 2 ) { mvprintw( 0, 0, "" ); mvprintw( 0, 2, "" ); mvprintw( 1, 0, "" ); mvprintw( 1, 1, "" ); mvprintw( 1, 2, "" ); mvprintw( 2, 0, "" ); mvprintw( 2, 1, "" ); mvprintw( 2, 2, "" ); attron( A_REVERSE ); mvprintw( 0, 1, "" ); } if( ktory == 3 ) { mvprintw( 0, 0, "" ); mvprintw( 0, 1, "" ); mvprintw( 1, 0, "" ); mvprintw( 1, 1, "" ); mvprintw( 1, 2, "" ); mvprintw( 2, 0, "" ); mvprintw( 2, 1, "" ); mvprintw( 2, 2, "" ); attron( A_REVERSE ); mvprintw( 0, 2, "" ); }
if( ktory == 4 ) { mvprintw( 0, 0, "" ); mvprintw( 0, 1, "" ); mvprintw( 0, 2, "" ); mvprintw( 1, 1, "" ); mvprintw( 1, 2, "" ); mvprintw( 2, 0, "" ); mvprintw( 2, 1, "" ); mvprintw( 2, 2, "" ); attron( A_REVERSE ); mvprintw( 1, 0, "" ); }
if( ktory == 5 ) { mvprintw( 0, 0, "" ); mvprintw( 0, 1, "" ); mvprintw( 0, 2, "" ); mvprintw( 1, 0, "" ); mvprintw( 1, 2, "" ); mvprintw( 2, 0, "" ); mvprintw( 2, 1, "" ); mvprintw( 2, 2, "" ); attron( A_REVERSE ); mvprintw( 1, 1, "" ); }
if( ktory == 6 ) { mvprintw( 0, 0, "" ); mvprintw( 0, 1, "" ); mvprintw( 0, 2, "" ); mvprintw( 1, 0, "" ); mvprintw( 1, 1, "" ); mvprintw( 2, 0, "" ); mvprintw( 2, 1, "" ); mvprintw( 2, 2, "" ); attron( A_REVERSE ); mvprintw( 1, 2, "" ); }
if( ktory == 7 ) { mvprintw( 0, 0, "" ); mvprintw( 0, 1, "" ); mvprintw( 0, 2, "" ); mvprintw( 1, 0, "" ); mvprintw( 1, 1, "" ); mvprintw( 1, 2, "" ); mvprintw( 2, 1, "" ); mvprintw( 2, 2, "" ); attron( A_REVERSE ); mvprintw( 2, 0, "" ); }
if( ktory == 8 ) { mvprintw( 0, 0, "" ); mvprintw( 0, 1, "" ); mvprintw( 0, 2, "" ); mvprintw( 1, 0, "" ); mvprintw( 1, 1, "" ); mvprintw( 1, 2, "" ); mvprintw( 2, 0, "" ); mvprintw( 2, 2, "" ); attron( A_REVERSE ); mvprintw( 2, 1, "" ); }
if( ktory == 9 ) { mvprintw( 0, 0, "" ); mvprintw( 0, 1, "" ); mvprintw( 0, 2, "" ); mvprintw( 1, 0, "" ); mvprintw( 1, 1, "" ); mvprintw( 1, 2, "" ); mvprintw( 2, 0, "" ); mvprintw( 2, 1, "" ); attron( A_REVERSE ); mvprintw( 2, 2, "" ); } attroff( A_REVERSE );
Dzięki temu kodowi można biegać kursorem po macierzy 3x3. Rozróżnia dziewięć przypadków, wszystko ładnie śmiga, nie ma problemu. Natomiast trudność polega na tym, że zamierzam zrobić macierz 15x15 i tych warunków musiałoby być 225. Dlatego muszę mieć do tego pętle, aby nie robić tego osobno. Oczywiście próbowałem coś zrobić sam, nie żebym przychodził do Was z niczym, jednakże moje wielogodzinne starania spełzły na niczym. for( int i = 1; i <= 9; i++ ) { if( ktory == i ) { for( int j = 0; j <= 2; j++ ) { for( int k = 0; k <= j; k++ ) { mvprintw( j, k, "" ); } attron( A_REVERSE ); } } attroff( A_REVERSE ); } Przy tym kodzie kursor od razu przechodzi z pozycji 0,0 do 2,2 tak jakby wszystkie przejścia głównej pętli wykonywały się od razu. Nie działa. Może ktoś ma jakiś inny, lepszy pomysł. Dziękuję za jakikolwiek odzew. |