Monday 14 December 2009

Shooter 3 Beta 2 Pt 1

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