Seite 2 von 2

Re: expected semikolon bei Default Parametern

Verfasst: Di Mai 21, 2013 2:34 pm
von hardcoding
Ich habe bezüglich das Programm weiter überarbeitet. so weit so gut

Das Problem was ich nun habe,ist die Animation zu stoppen ohne das Programm abzubrechen.
Wie ihr im Screenhot sieht ist der Junge ganz links unten in der Ecke. Er ist von der Rutsche bis zum unteren Eck des Bildes gerutscht.

Nun weiss ich nicht wie ich das Stoppen kann.

Code: Alles auswählen

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"

const int frames_per_second= 20;

SDL_Surface* Hintergrund = NULL;
SDL_Surface* garten  = NULL;
SDL_Surface* kind = NULL;

SDL_Event Event;

int startmember = 0,pausemember = 0;
bool pausmember = false,starmember = false;


int x = 88,y = 170;
int xVel = 0, yVel = 0;

void start()
{
    starmember=true;
    pausmember=false;
    startmember=SDL_GetTicks();
}

int get_ticks()
{
    if( starmember == true )
    {
        return SDL_GetTicks() - startmember;
    }
    return 0;
}

void autobewegung()
{
    int z=5,w=5;
    xVel+=z;
    yVel+=w;

}




void move()
{
    x += xVel;
    //Move the dot up or down
    y += yVel;

}

void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip = NULL )
{
    //Holds offsets

    SDL_Rect offset;
    //Get offsets
    offset.x = x;
    offset.y = y;

    //Blit
    SDL_BlitSurface(source, clip, destination, &offset );
}

void show()
{
    apply_surface(x,y,kind,Hintergrund);
}


int main(int argc,char* argv[])
{
    bool quit=false;
    SDL_Init(SDL_INIT_EVERYTHING);
    Hintergrund = SDL_SetVideoMode(640,480,0,SDL_ANYFORMAT);
    garten = IMG_Load("Garten.jpg");
    kind   = IMG_Load("Kind.jpg");

    SDL_SetColorKey(kind,SDL_SRCCOLORKEY,SDL_MapRGB(kind->format,255,255,255));


    while( quit == false )
    {
        start();

        while(SDL_PollEvent(&Event))
        {
            autobewegung();
        }

        SDL_BlitSurface(garten,0,Hintergrund,0);
        show();
        move();
        SDL_Flip(Hintergrund);
        if( get_ticks() < 1000 / frames_per_second )
        {
            SDL_Delay( ( 1000 / frames_per_second ) - get_ticks() );
        }

    }
    SDL_Quit();
    return(0);

}




Re: expected semikolon bei Default Parametern

Verfasst: Di Mai 21, 2013 3:09 pm
von Xin
hardcoding hat geschrieben:Wie ihr im Screenhot sieht ist der Junge ganz links unten in der Ecke. Er ist von der Rutsche bis zum unteren Eck des Bildes gerutscht.
Ich habe lange gesucht bis ich den Jungen (also das Auge) gefunden habe...
Rinks und Lechts kann man schnell velwechern, oder? ;-)
hardcoding hat geschrieben:Nun weiss ich nicht wie ich das Stoppen kann.
Wenn der Junge weit genug rechts... also links ist, hörst Du mit dem addieren auf?

Re: expected semikolon bei Default Parametern

Verfasst: Di Mai 21, 2013 3:33 pm
von hardcoding
Wenn der Junge weit genug rechts... also links ist, hörst Du mit dem addieren auf?
Dann sag mir mal wie. :)

Re: expected semikolon bei Default Parametern

Verfasst: Di Mai 21, 2013 3:40 pm
von Xin
hardcoding hat geschrieben:
Wenn der Junge weit genug rechts... also links ist, hörst Du mit dem addieren auf?
Dann sag mir mal wie. :)
Ich weiß nicht, ob xVel die Koordinaten des Jungens sind, aber im Falle dass:

Code: Alles auswählen

void autobewegung()
{
    int z=5,w=5;

    if( xVel < 500 )
    {
      xVel+=z;
      yVel+=w;
    }
}

Re: expected semikolon bei Default Parametern

Verfasst: Di Mai 21, 2013 5:59 pm
von hardcoding
Xin hat geschrieben:
hardcoding hat geschrieben:
Wenn der Junge weit genug rechts... also links ist, hörst Du mit dem addieren auf?
Dann sag mir mal wie. :)
Ich weiß nicht, ob xVel die Koordinaten des Jungens sind, aber im Falle dass:

Code: Alles auswählen

void autobewegung()
{
    int z=5,w=5;

    if( xVel < 500 )
    {
      xVel+=z;
      yVel+=w;
    }
}
Wie soll das gehen ?!
Ich muss doch nicht überprüfen ob xVel kleiner als 500 ist um die Addition zu stoppen ?!

Re: expected semikolon bei Default Parametern

Verfasst: Di Mai 21, 2013 6:11 pm
von hardcoding
Hat sich erledigt.

So sieht es jetzt in der Move funktion aus:

Code: Alles auswählen

void move()
{
    x += xVel;
    if(x>=220)
    {
        x-=xVel;
    }
    y += yVel;
    if(y>=300)
    {
        y-=yVel;
    }
}