C++ i SDL; wciskanie dowolnego klawisza i dziwna kompilacja

Awatar użytkownika
taka_jedna
Użytkownik
Użytkownik
Posty: 170
Rejestracja: 23 sie 2006, o 14:20
Płeć: Kobieta
Lokalizacja: Aj em from Poland
Podziękował: 16 razy
Pomógł: 23 razy

C++ i SDL; wciskanie dowolnego klawisza i dziwna kompilacja

Post autor: taka_jedna »

1.Pytanie brzmi: Co wstawić w miejsce ^^^^^, by to co się wyświetla po wciśnięciu klawisza p ("SDL_BlitSurface(pomoc,NULL,ekran,NULL)"), zniknęło po naciśnięciu dowolnego klawisza i by powrócić do "SDL_BlitSurface(start,NULL,ekran,NULL)". Oto fragment kodu:

Kod: Zaznacz cały

do
	{
		SDL_BlitSurface(start,NULL,ekran,NULL);
		SDL_Flip(ekran);
		while(SDL_PollEvent(&zdarzenie))
		{
			if(zdarzenie.type == SDL_QUIT)
			{
				wyjscie = true;
			}
			if (zdarzenie.type == SDL_KEYDOWN)
			{
				if (zdarzenie.key.keysym.sym == SDLK_p) 
				{
					SDL_BlitSurface(pomoc,NULL,ekran,NULL);
					SDL_Flip(ekran);
                                        ^^^^^}
Moje próby podstawiania zamiast ^^^^^:
-SDL_Delay() powoduje, że po określonym czasie wyświetla się start
-getchar() sprawia że ekran po wciśnięciu p "mryga"
2. Program zawsze kompiluje mi się dopiero za drugim razem. Za pierwszym zawsze jest ten sam błąd: "Error 5 Error result 31 returned from 'D:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe'. Project" (używam MicrosoftVS_2008 express edition). O co w tym chodzi?
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

C++ i SDL; wciskanie dowolnego klawisza i dziwna kompilacja

Post autor: soku11 »

Zrób zmienną typu bool isPKeyPressed. W każdym przebiegu pętli ustawiaj ją na false (na początku pętli). Gdy wciśnięty jest przycisk p ustawiaj jej wartość na true. I teraz dopiero zajmuj się wyświetlaniem. Jeśli isPKeyPressed==true to wyświetlaj SDL_BlitSurface(pomoc,NULL,ekran,NULL). W przeciwnym wypadku SDL_BlitSurface(start,NULL,ekran,NULL). No i jeden Flip na koniec. Ogólnie radzę najpierw nauczyć się dokładnie SDL, bo dwukrotne wywołanie SDL_Flip na pewno nie jest tym czego potrzebujesz...

Pozdrawiam.
ODPOWIEDZ