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

Rysowanie w konsoli ;)

Ostatnio zmodyfikowano 2010-04-03 09:10
Autor Wiadomość
SeaMonster131
Temat założony przez niniejszego użytkownika
Rysowanie w konsoli ;)
» 2010-04-02 19:12:38
Mam taki tam mały problem. Otóż chcę zrobić taką gierkę w konsoli, w której poruszamy się '*' po ekranie, i tutaj pojawia się problem. Tutaj kawałek mojego kodu:
C/C++
//NOWA GRA
nowagra:
{
    char z = '*';
    cls();
    wherex();
    wherey();
    we:
    {
        cout << z;
        ruch = _getch();
        if( ruch == 'w' )
        {
            wherex() + 1;
            cout << z;
            goto we;
        }
        else if( ruch == 's' )
        {
            wherex() - 1;
            cout << z;
            goto we;
        }
        else if( ruch == 'a' )
        {
            wherey() - 1;
            cout << z;
            goto we;
        }
        else if( ruch == 'd' )
        {
            wherey() + 1;
            cout << z;
            goto we;
        }
        else if( ruch == 'q' ) { goto menu; }
    }
    //koniec NOWA GRA
I jeśli coś takiego jest, to owszem '*' sie pokazuje, ale obojętnie czy nacisne w, a, s, d, to rysują sie 2 '*' w prawo. Mógłby mi ktoś pomóc? Może tutaj jakąś pętle trzeba by zastosować?
P.S. Gdyby ktoś umiał ( a wy umiecie na pewno ;) ) to jak zrobić, żeby np gdy '*' sie znajdzie w jakimś miejscu (przypuśćmy we współrzędnych 10,15) to żeby pojawiała się następna "plansza"? Bardzo was proszę o pomoc! Wręcz błagam!
I jeszcze życzę wszystkim Wesołych Świąt i Smacznego Jajka ;)
P-15713
Bartaz
...
» 2010-04-02 19:23:01
Co do pierwszego pytania to nie patrzałem ,a co drugiego to np
C/C++
if(( x = 5 ) &&( y = 7 ) )
{
    system( "cls" );
    wyswietlaj_nowa_plansze();
}
P-15714
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2010-04-02 19:33:44
Dzięki. Jeszcze bym tylko prosił, gdyby ktoś mi powiedział jak rozwiązać problem nr 1 ;)
Bede bardzo wdzięczny.
P-15715
pekfos
» 2010-04-02 20:41:10
wherey() + 1;
a co to?

//edit:
wiesz, co to pętla?
nie używaj goto.
przy pomocy pętli zrobiłbyś to łatwiej, lepiej, a kod byłby czytelniejszy.

//edit2:

a skoro masz ddt::console to nie używaj system() tylko clrscr()

//edit3:

rób na wzór tego:
C/C++
const char z = '*';
int px = 5, py = 3;
char r;
bool n = true;

while( 1 ) {
    if( n ) { //jeżeli n == true to czyść
        clrscr();
        gotoxy( px, py );
        cout << z;
    }
    n = true; //później ustawia się na true
    r = getch();
    switch( r ) {
    case 'w': py--; break;
    case 's': py++; break;
    case 'a': px--; break;
    case 'd': px++; break;
    default: n = false; break; //jeżeli nic nie robisz to na false
    }
}

ogólnie chodzi ci o to. Co do problemu z podwójnym '*' to odpowiedź jest
prosta: nie czyścisz ekranu.
P-15717
SeaMonster131
Temat założony przez niniejszego użytkownika
Dzięki
» 2010-04-03 09:10:24
Dzięki, będę musiał poduczyć się w pętlach ;)
Dzięki jeszcze raz ;)
P-15748
« 1 »
  Strona 1 z 1