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

[C++] Napewno nie Logo

Ostatnio zmodyfikowano 2015-04-04 11:03
Autor Wiadomość
C-Objective
Temat założony przez niniejszego użytkownika
[C++] Napewno nie Logo
» 2015-04-04 10:50:15
Witam. Napisałem coś do poruszania obiektem:
C/C++
#include <iostream>
#include <windows.h>
#include <conio.h>
void gotoxy( int x, int y );
void gotoxy( int x, int y ) {
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), c );
}
using namespace std;
int main( int argc, char ** argv ) {
    int defval1[ 3 ] = { 29, 30, 30 };
    int defval2[ 3 ] = { 18, 17, 19 };
   
    int a = 3;
    rys:
    gotoxy( 29, 20 );
    cout << "***";
    gotoxy( 30, 19 );
    cout << "*";
    gotoxy( 30, 21 );
    cout << "*";
    //Przechwytywanie zdarzen
    bool koniec = false;
    while( koniec == false )
    {
        unsigned char znak = getch();
        switch( znak )
        {
        case 0:
        case 224:
            znak = getch();
            switch( znak )
            {
            case 72: //UP
                system( "CLS" );
                defval2[ 0 ] --;
                defval2[ 1 ] --;
                defval2[ 2 ] --;
                gotoxy( defval1[ 0 ], defval2[ 0 ] );
                cout << "***";
                gotoxy( defval1[ 1 ], defval2[ 1 ] );
                cout << "*";
                gotoxy( defval1[ 2 ], defval2[ 2 ] );
                cout << "*";
                break;
            case 80: //DOWN
                system( "CLS" );
                defval2[ 0 ] ++;
                defval2[ 1 ] ++;
                defval2[ 2 ] ++;
                gotoxy( defval1[ 0 ], defval2[ 0 ] );
                cout << "***";
                gotoxy( defval1[ 1 ], defval2[ 1 ] );
                cout << "*";
                gotoxy( defval1[ 2 ], defval2[ 2 ] );
                cout << "*";
                break;
            case 75: //LEFT
                system( "CLS" );
                defval1[ 0 ] --;
                defval1[ 1 ] --;
                defval1[ 2 ] --;
                gotoxy( defval1[ 0 ], defval2[ 0 ] );
                cout << "***";
                gotoxy( defval1[ 1 ], defval2[ 1 ] );
                cout << "*";
                gotoxy( defval1[ 2 ], defval2[ 2 ] );
                cout << "*";
                break;
            case 77: //RIGHT
                system( "CLS" );
                defval1[ 0 ] ++;
                defval1[ 1 ] ++;
                defval1[ 2 ] ++;
                gotoxy( defval1[ 0 ], defval2[ 0 ] );
                cout << "***";
                gotoxy( defval1[ 1 ], defval2[ 1 ] );
                cout << "*";
                gotoxy( defval1[ 2 ], defval2[ 2 ] );
                cout << "*";
                break;
            }
            znak = 0;
            break;
        case 13: //ENTER
            system( "CLS" );
            goto rys;
            break;
        case 27: //ESC
            koniec = true;
            break;
        }
    }
    return 0;
}
I chcę, aby za obiektem pozostawał ślad, wyłączanie i włączanie tego śladu to klawisze 'p' i 'o'. Ktoś ma pomysł?

Goto się przydaje :D (czasami)
P-130065
Glazus
» 2015-04-04 11:00:40
Możesz na przykład stworzyć sobie
std::vector
 i w nim przechowywać "ślad". A możliwe, że można i "lepiej/szybciej".

Tym niemniej mnie zastanawia ta konstrukcja:

C/C++
void gotoxy( int x, int y );
void gotoxy( int x, int y ) {
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), c );
}

Gdzie tu logika gdzie tu sens? Reszty kodu nie przeglądałem specjalnie, więc nie wiem czy więcej takich kwiatków jest.
P-130069
C-Objective
Temat założony przez niniejszego użytkownika
» 2015-04-04 11:03:47
Hah, a no fakt :) Ale błędu nie wywala. Tu jest właśnie ciężko bo resetowanie działa no nie do końca tak, jak ja sobie myślałem. Z resztą, uruchom to zobaczysz :)
P-130071
« 1 »
  Strona 1 z 1