Rysowanie w konsoli ;)
Ostatnio zmodyfikowano 2010-04-03 09:10
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: 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; } }
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 ;) |
|
Bartaz |
... » 2010-04-02 19:23:01 Co do pierwszego pytania to nie patrzałem ,a co drugiego to np if(( x = 5 ) &&( y = 7 ) ) { system( "cls" ); wyswietlaj_nowa_plansze(); } |
|
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. |
|
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: const char z = '*'; int px = 5, py = 3; char r; bool n = true;
while( 1 ) { if( n ) { clrscr(); gotoxy( px, py ); cout << z; } n = 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; } } ogólnie chodzi ci o to. Co do problemu z podwójnym '*' to odpowiedź jest prosta: nie czyścisz ekranu. |
|
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 ;) |
|
« 1 » |