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) |
|
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ę. |
|
Baca3322 Temat założony przez niniejszego użytkownika |
» 2015-11-03 21:23:52 Funkcja main: 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: 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. |
|
pekfos |
» 2015-11-03 21:49:04 Ta pętla albo nic nie robi, albo jest nieskończona (i też nic nie robi). |
|
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? |
|
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.. przesuwaj( znak, rozmiar, x, x1, y, y1, klawisz ); return 0;
|
Zapewne się nie rysuje, bo nie jest rysowana.. Zamiast tego, program się kończy. |
|
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. |
|
pekfos |
» 2015-11-03 22:55:51 Bez kodu ciężko zgadnąć, co tym razem jest źle. |
|
« 1 » 2 3 |