Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: SDL: piirtämisongelma

Sivun loppuun

Lahha [21.09.2006 21:17:54]

#

Mikäs tässä on vikana kun naytto pinta pysyy mustana vaikka kentän arvot ovat oikeat ja palat pintakin on oikea kun se kokonaan piirtää suoraan mainistä(jota en tähän laittanut) ja toi osan palat pinnasta piirtäminenkin onnistuu kun sen tekee suoraan mainista.

void PiirraKentta(SDL_Surface *naytto, SDL_Surface *palat, int Kentta[32][24])
{

	int x=0, y=0;

	while(x < 32)
	{
		while(y < 24)
		{
			if(Kentta[x][y] != -1)
			{
				PiirraKuvaAlue(palat, naytto, Kentta[x][y]*32, 0, 32, 32, x*32, y*32);
			}

			y++;
		}

		y=0;
		x++;
	}

}

void PiirraKuvaAlue(SDL_Surface *kuva, SDL_Surface *naytto, int kuvax, int kuvay, int leveys, int korkeus, int nayttox, int nayttoy)
{
    SDL_Rect kuvaalue; // alue, mikä kuvasta piirretään
    kuvaalue.x = kuvax;
    kuvaalue.y = kuvay;
    kuvaalue.h = korkeus;
    kuvaalue.w = leveys;

    SDL_Rect nayttoalue; // alue näytöllä, jolle kuva piirretään
    nayttoalue.x = nayttox;
    nayttoalue.y = nayttoy;

    SDL_BlitSurface(kuva, &kuvaalue, naytto, &nayttoalue);
}

sooda [21.09.2006 21:19:07]

#

Oisit ny laittanu maininki. Ei kai näytön päivittäminen (vaikka SDL_Flip) unohtunut?

Lahha [21.09.2006 21:21:13]

#

ei unohtunu. no täs ois maini

int main(int argc, char *argv[])
{

	SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO);

    SDL_WM_SetCaption("TasoGame", NULL);


	int Kentta[32][24]={-1};

	int UkkoX=0;
	int UkkoY=0;

	int luku=0;

    Uint8* nappi;				// näppäimet
    SDL_Event tapahtuma;		// tapahtumat
    int hiiri,x,y;				// hiiren tila
	Uint32 aika=0;

	SDL_Surface * naytto;
	SDL_Surface * palat;

	naytto = SDL_SetVideoMode(1024, 768, 32, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF);

	palat = SDL_LoadBMP("Art\\THmaat.bmp");
	if(palat == NULL){fprintf(stderr, "palat on NULL: %s\n", SDL_GetError());}

	//#########################################
	//#########################################

	while(1)
	{

		LataaKentta(1, Kentta);
		PiirraKentta(palat, naytto, Kentta);

		SDL_Flip(naytto);

		SDL_Delay(3000);

		break;
	}



	SDL_FillRect(naytto, 0, 0);
	SDL_Flip(naytto);

    SDL_FreeSurface(palat);

	SDL_Quit();

	return 0;

}

sooda [21.09.2006 21:44:27]

#

void PiirraKentta(SDL_Surface *naytto, SDL_Surface *palat, int Kentta[32][24])
PiirraKentta(palat, naytto, Kentta)

Huomaanko jotain väärin päin?

Lahha [21.09.2006 22:07:17]

#

Mitenkäs tässä nyt on näin päässy käymään. Kiitti avusta.

Lahha [22.09.2006 00:10:25]

#

Entäs miks
tää toimii:

    if( Kentta[UkkoX][UkkoY+1]==0)

mut tää ei:

   if (nappi[SDLK_RIGHT] && Kentta[UkkoX+1][UkkoY]==0)

Kääntäjä vaa valittaa:

    ..\Tasohyppy.cpp(81) : warning C4552: '+' : operator has no effect; expected operator with side-effect

Metabolix [22.09.2006 01:05:11]

#

Oletko nyt aivan varma, että varoitus tulee juuri tuosta kohti? Minusta tuo viittaisi johonkin muuhun, enkä näe tuossa mitään vikaa.

Lahha [22.09.2006 14:22:24]

#

Tuli se siitä mutta, ongelma katos samalla kun rukkailin projekti asetuksia kuntoon.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta