Strona 1 z 1

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

: 28 maja 2010, o 20:24
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?

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

: 29 maja 2010, o 10:49
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.