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); }
Oisit ny laittanu maininki. Ei kai näytön päivittäminen (vaikka SDL_Flip) unohtunut?
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; }
void PiirraKentta(SDL_Surface *naytto, SDL_Surface *palat, int Kentta[32][24])
PiirraKentta(palat, naytto, Kentta)
Huomaanko jotain väärin päin?
Mitenkäs tässä nyt on näin päässy käymään. Kiitti avusta.
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
Oletko nyt aivan varma, että varoitus tulee juuri tuosta kohti? Minusta tuo viittaisi johonkin muuhun, enkä näe tuossa mitään vikaa.
Tuli se siitä mutta, ongelma katos samalla kun rukkailin projekti asetuksia kuntoon.
Aihe on jo aika vanha, joten et voi enää vastata siihen.