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

przesuwanie figury przy pomocy funkcji switch lub if else

Ostatnio zmodyfikowano 2015-11-04 22:22
Autor Wiadomość
Baca3322
Temat założony przez niniejszego użytkownika
przesuwanie figury przy pomocy funkcji switch lub if else
» 2015-11-03 20:09:28
Cześć,
Piszę program, w którym użytkownik podaje rozmiar, znak itd. figury, która następnie zostaje narysowana(to już mam).
Mam problem z przesuwaniem/ zmniejszaniem/ powiększaniem figury. Próbowałem to zrobić za pomocą instrukcji switch i if else i nie do końca mi to wychodzi. Nie mogę też przypisać zmiennej "klawisz", która odpowiada funkcji _getch();(kiedy daję normalnie _getch(); to działa).

w mainie mam wywołane po kolei moje funkcje(najpierw rysujaca, potem przesuwajaca) i zdefiniowane zmienne użyte w funkcjach, nad mainem są deklaracje wszystkich funkcji.

Moja funkcja wygląda teraz tak:

void przesuwaj(char znak, int rozmiar, int x, int x1, int y, int y1, char &klawisz)
{
klawisz = _getch();
if (_getch() == '+') -------tak jak mówiłem, na klaiwsz nie działa, ale na _getch(); już tak
{
rozmiar = rozmiar + 4;
system("cls");
rysuj_figure(znak, rozmiar, x, x1, y, y1); ------jak to zrobić, żebym po każdym warunku nie musiał wypisywać funkcji rysującej figurę?
} while (_getch() != Esq);
}

Dodatkowo muszę 2x naciskać + żeby funkcja zaskoczyła.

Jeśli zbyt zawile to napisałem, to postaram się napisać jeszcze raz dokładniej.
Z góry dziękuję za pomoc(z c++ "współpracuję" od niecałego tygodnia, więc przepraszam jak coś sknociłem)
P-139587
pekfos
» 2015-11-03 20:45:39
jak to zrobić, żebym po każdym warunku nie musiał wypisywać funkcji rysującej figurę?
Lepiej skonstruować kod.

na klaiwsz nie działa, ale na _getch(); już tak
Przerób na klawisz, każde _getch() to zatrzymanie programu.

Podaj więcej i właściwego kodu (wersja bez nie wiadomo ilu wywołań _getch()). Z tego, co podałeś, niewiele da się wywnioskować.

przepraszam jak coś sknociłem
Sknociłeś formatowanie postu. Popraw się.
P-139593
Baca3322
Temat założony przez niniejszego użytkownika
» 2015-11-03 21:23:52
Funkcja main:
C/C++
int main()
{
    char znak; int rozmiar;
    int x; int x1; int y; int y1;
    char klawisz;
   
    ekran_startowy();
    czytaj_dane( znak, rozmiar );
    rysuj_figure( znak, rozmiar, x, x1, y, y1 );
    przesuwaj( znak, rozmiar, x, x1, y, y1, klawisz );
   
    return 0;
}

Funkcja przesuwaj:
C/C++
void przesuwaj( char znak, int rozmiar, int x, int x1, int y, int y1, char & klawisz )
{
    klawisz = _getch();
   
    switch( klawisz )
    {
    case '+': { rozmiar = rozmiar + 4; } break;
    case '-': { rozmiar = rozmiar - 4; } break;
    case Esq: { break; }
    }
    while( klawisz != Esq );
   
}

Funkcja przesuwaj nie działa, nic się nie dzieje po jakimkolwiek przycisku. Przycisk Esq, który jest przypisany tak:
const int Esq = 27;
 nad mainem również nie kończy programu. Zauważyłem, że jeśli zrobię tak:
case '+': { rozmiar = rozmiar + 4; system( "cls" ); rysuj_figure( znak, rozmiar, x, x1, y, y1 ); } break;
 to figura zmieni swój kształt ale tylko raz.
P-139597
pekfos
» 2015-11-03 21:49:04
C/C++
while( klawisz != Esq );

Ta pętla albo nic nie robi, albo jest nieskończona (i też nic nie robi).
P-139601
Baca3322
Temat założony przez niniejszego użytkownika
» 2015-11-03 21:52:21
Ok, wywaliłem to, teraz po jakimkolwiek klawiszu, program wyłącza się. A co robię źle, że moja figura się nie rysuje?
P-139602
pekfos
» 2015-11-03 21:54:58
wywaliłem to, teraz po jakimkolwiek klawiszu, program wyłącza się.
Bo teraz nie masz żadnej pętli?

A co robię źle, że moja figura się nie rysuje?
Hmm..
C/C++
przesuwaj( znak, rozmiar, x, x1, y, y1, klawisz );
return 0;
Zapewne się nie rysuje, bo nie jest rysowana.. Zamiast tego, program się kończy.
P-139603
Baca3322
Temat założony przez niniejszego użytkownika
» 2015-11-03 22:00:38
No dobrze, mogę moją pętlę switch umieścić w do ... while... i wtedy wstawić warunek klawisz != Esq. Ale nadal nie wiem czemu figura się nie przesuwa. W poprzedniej wypowiedzi miało być: nie wiem, czemu się nie przesuwa, bo figura się oczywiście rysuje tak jak powinna.
P-139604
pekfos
» 2015-11-03 22:55:51
Bez kodu ciężko zgadnąć, co tym razem jest źle.
P-139611
« 1 » 2 3
  Strona 1 z 3 Następna strona