Tecnología

Inicio

Tutorial sobre SDL de desplazamiento lateral

Tutorial sobre SDL de desplazamiento lateral


Simple DirectMedia capa permite el acceso al audio, teclado, ratón, joystick, OpenGL 3-D de hardware y 2-D framebuffers vídeo. Se utiliza con el software de reproducción de MPEG, emuladores y otros juegos, el programa SDL es útil para una variedad de cosas, tales como la animación de un juego desplazador lateral. SDL funciona de forma nativa con C ++, pero también trabaja en C, Ada, C #, D, Eiffell, Erlang, Euphoria, Go, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant , Python, Ruby, Tcl y Smalltalk.

Instrucciones

1 Crear dos nuevos archivos llamados "CAnimation.h" y "CAnimation.cpp /." Añada la siguiente directiva "incluir" en "CApp.h": "# include 'CAnimation.h'."

2 Abrir "CAnimation.h" e introduzca el siguiente código:

ifndef _CANIMATION

H #define _CANIMATION

H

incluir <SDL.h>

CAnimation clase {
privado:
int currentFrame;

int FrameInc;

privado:
int FrameRate; // milisegundos

Oldtime larga;

público:
int MaxFrames;

público:
CAnimation ();

OnAnimate anular ();

público:
SetFrameRate void (int Rate);

SetCurrentFrame void (int Frame);

int GetCurrentFrame ();
};

endif 3 Abrir "CAnimation.cpp" e introduzca el siguiente código con sus valores de velocidad de cuadro: incluir "CAnimation.h"

CAnimation :: CAnimation () {
CurrentFrame = 0;
MaxFrames = 0;
FrameInc = 1;

FrameRate = 100; // milisegundos
Oldtime = 0;

}

CAnimation vacío :: OnAnimate () {
Si (+ Oldtime FrameRate> SDL_GetTicks ()) {
regreso;
}

Oldtime = SDL_GetTicks ();

CurrentFrame + = FrameInc;

si (FrameInc> 0) {
si (currentFrame> = MaxFrames - 1) {
FrameInc = -FrameInc;
}
}más{
si (currentFrame <= 0) {
FrameInc = -FrameInc;
}
}
}más{
si (currentFrame> = MaxFrames - 1) {
CurrentFrame = 0;
}
}
}

CAnimation vacío :: SetFrameRate (int Rate) {
FrameRate = Tasa;
}

anulará CAnimation :: SetCurrentFrame (int Frame) {
si (Frame <0 || Frame> = MaxFrames) return;

CurrentFrame = Frame;
}

int CAnimation :: GetCurrentFrame () {
volver currentFrame;
}

4 Dibujar el "currentFrame" de la animación de desplazamiento lateral mediante la determinación de la parte de la superficie que se basará en la pantalla. Por ejemplo, si la animación es de 64 por 64 píxeles, se introducirá algo similar a esto:

CSurface :: OnDraw (Surf_Display, Surf_Image, 0, 0, 0, Animate.GetCurrentFrame () * 64, 64, 64);

5 Sabe cuántos fotogramas de la animación contiene, también conocido como "MaxFrames." Utilizar el código de la función "OnAnimate" para averiguar los "MaxFrames":

Si (+ Oldtime FrameRate> SDL_GetTicks ()) {
regreso;
}

6 Compruebe el "Old Time" en contra del tiempo de funcionamiento del SDL. Si el tipo de marco es "1", la tasa de fotogramas será igual a 1.000 milisegundos. Por lo tanto, una vez que "0 + 1000" es menor que "SDL_GetTicks", que significa un segundo de trama ha pasado. Restablecer el "Oldtime" a la hora actual.

7 Ponga su animación en acción mediante la creación de un nuevo objeto "CAnimation" en "CApp.h:"

CAnimation Animación;

8 Establecer las "MaxFrames" agregando el siguiente código para "CApp_OnInit" y ajustando el número "MaxFrames" según sus preferencias:

Animate.MaxFrames = 8;

9 Bucle de la animación con el siguiente código de la adición a "CApp_OnLoop:"

Animate.OnAnimate ();

10 Animar al añadir este código para "CApp_OnRender:"

CSurface :: OnDraw (Surf_Display, Surf_Test, 290, 220, 0, Animate.GetCurrentFrame () * 64, 64, 64);