3... 2.... 1.... PAM
Isken tänne turvaan täysin toimivan jampanhiirensijaintiin asettavan seehen vivahtavan c++-sorsan:
#include "SDL/SDL.h"
#include "gl/gl.h"
void PiirraKuva(SDL_Surface *kuva, SDL_Surface *naytto, int x, int y); //esitellään hänet
int main(int argc, char *argv[]) {
if( SDL_Init(SDL_INIT_EVERYTHING) < 0 ) // paluuarvon ollessa pienempi kuin 0, tapahtui virhe
{
fprintf(stderr, "SDL:n alustus ei onnistunut: %s\n", SDL_GetError()); // virheestä tiedot tiedostoon
return 0; // lopetetaan ohjelma
}
SDL_Surface * naytto;
SDL_Surface * jamppa;
SDL_Surface * pati;
Uint8* nappi;
naytto = SDL_SetVideoMode(1024, 768, 32, SDL_HWSURFACE|SDL_RESIZABLE);
jamppa = SDL_LoadBMP("Jamppa.bmp");
pati = SDL_LoadBMP("Pati.bmp");
bool pelissa=true;
int rottax, rottay; //hiiren koordinaatit
int ammusx=-10,ammusy=400;
SDL_SetColorKey(jamppa, SDL_SRCCOLORKEY, SDL_MapRGB(jamppa->format,0,0,0));
SDL_SetColorKey(pati, SDL_SRCCOLORKEY, SDL_MapRGB(pati->format,0,0,0));
while(pelissa)
{
SDL_FillRect (naytto, 0, 0);
SDL_GetMouseState(&rottax, &rottay);
SDL_Event tapahtuma; // tapahtumat
SDL_PollEvent(&tapahtuma);
PiirraKuva(jamppa,naytto,rottax,rottay);
PiirraKuva(pati,naytto,ammusx,ammusy);
ammusx++;
if(ammusx>=900) ammusx=-10;
nappi = SDL_GetKeyState(NULL);
if(nappi[SDLK_ESCAPE]) pelissa=false;
SDL_Flip(naytto);
}
SDL_FreeSurface(jamppa);
SDL_FreeSurface(naytto);
SDL_Quit(); // "suljetaan" SDL
return 0;
}
void PiirraKuva(SDL_Surface *kuva, SDL_Surface *naytto, int x, int y) {
if ( kuva == NULL ) {
fprintf(stderr, "Kuvannäyttö ei onnistunu: %s\n", SDL_GetError());
return;
}
// mihin näytöllä
SDL_Rect alue;
alue.x = x;
alue.y = y;
// näytölle
SDL_BlitSurface(kuva, NULL, naytto, &alue); // koska toinen parametri on NULL, piirretään koko kuva
}
No comments:
Post a Comment