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

Curses.h i nawigacja gry kółko i krzyżyk

Ostatnio zmodyfikowano 2012-11-25 18:55
Autor Wiadomość
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
C/C++
#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ć.
P-69837
DejaVu
» 2012-11-25 13:07:12
Nigdzie nie modyfikujesz zmiennych x oraz y więc nie ma opcji, aby kod działał poprawnie.
P-69842
rafonet
Temat założony przez niniejszego użytkownika
» 2012-11-25 18:55:28
C/C++
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
P-69872
« 1 »
  Strona 1 z 1