Curses.h i nawigacja gry kółko i krzyżyk
Ostatnio zmodyfikowano 2012-11-25 18:55
rafonet Temat założony przez niniejszego użytkownika |
Curses.h i nawigacja gry kółko i krzyżyk » 2012-11-25 11:19:04 Witam Piszę grę kółko i krzyżyk i do nawigacji po planszy postanowiłem wykorzystać bibliotekę curses.h. oto kod programu #include <curses.h> #include <iostream> #include <stdio.h> using namespace std; void rysuj_plansze() { for( int i = 1; i <= 9; i++ ) { printw( " " " " ); if( i % 3 ) printw( "|" ); else if( i != 9 ) printw( "\n--+--+--\n" ); else printw( "\n" ); } } int main() { int t[ 9 ]; int b, x = 0, y = 0; initscr(); cbreak(); noecho(); intrflush( stdscr, FALSE ); keypad( stdscr, TRUE ); int ch, ha; rysuj_plansze(); do { move( 0, 0 ); ch = getch(); switch( ch ) { case KEY_LEFT: if( y >= 3 ) { move( x, y - 3 ); ha = getch(); if( ha = KEY_ENTER ) printw( "X" ); } case KEY_RIGHT: move( x, y + 3 ); ha = getch(); if( ha = KEY_ENTER ) printw( "X" ); case KEY_UP: if( x >= 2 ) { move( x - 2, y ); ha = getch(); if( ha = KEY_ENTER ) printw( "X" ); } case KEY_DOWN: move( x + 2, y ); ha = getch(); if( ha = KEY_ENTER ) printw( "X" ); } } while( 2 ); endwin(); } Program nie działa poprawnie, począwszy od tego, że kursor nie wyświetla się na żądanej pozycji a skończywszy, na tym , że po powtórnym wciśnięciu strzałki wstawia znak mimo iż nie powinien tego robić. |
|
DejaVu |
» 2012-11-25 13:07:12 Nigdzie nie modyfikujesz zmiennych x oraz y więc nie ma opcji, aby kod działał poprawnie. |
|
rafonet Temat założony przez niniejszego użytkownika |
» 2012-11-25 18:55:28 znak = getch(); znak2 =( char * ) keyname( znak ); switch( znak ) { case KEY_UP: if( wiersz > 0 ) { wiersz--; } break; case KEY_DOWN: if( wiersz < 2 ) { wiersz++; } break; case KEY_LEFT: if( kolumna > 0 ) { kolumna--; kolumna--; } break; case KEY_RIGHT: if( kolumna < 4 ) { kolumna++; kolumna++; } break; case ' ': { for( int n = 0; n < 3; n++ ) { for( int m = 0; m < 3; m++ ) { if( plansza[ n ][ m ] == ' ' ) { if( kolumna == 0 && wiersz == 0 ) plansza[ 0 ][ 0 ] = 'o'; if( kolumna == 0 && wiersz == 2 ) plansza[ 0 ][ 1 ] = 'o'; if( kolumna == 0 && wiersz == 4 ) plansza[ 0 ][ 2 ] = 'o'; if( kolumna == 1 && wiersz == 2 ) plansza[ 1 ][ 0 ] = 'o'; if( kolumna == 1 && wiersz == 2 ) plansza[ 1 ][ 1 ] = 'o'; if( kolumna == 1 && wiersz == 4 ) plansza[ 1 ][ 2 ] = 'o'; if( kolumna == 2 && wiersz == 0 ) plansza[ 2 ][ 0 ] = 'o'; if( kolumna == 2 && wiersz == 2 ) plansza[ 2 ][ 1 ] = 'o'; if( kolumna == 2 && wiersz == 4 ) plansza[ 2 ][ 2 ] = 'o'; } } } } break; }
Przebudowałem trochę menu wyboru, ale teraz po wstawieniu znaku i naciśnięciu strzałki zachowuje się tak jakbym nacisnął spacje a nie tylko zmienił współrzędne |
|
« 1 » |