Nwlapcug.com


Tutorial su SDL Side-Scroller

Tutorial su SDL Side-Scroller


Simple DirectMedia Layer consente l'accesso a audio, tastiera, mouse, joystick, hardware 3D OpenGL e framebuffer video 2-D. Utilizzato con software di riproduzione MPEG, emulatori e altri giochi, il programma SDL è comodo per una varietà di cose, come ad esempio l'animazione di un gioco a scorrimento laterale. SDL funziona in modo nativo con C++, ma funziona anche in C, Ada, c#, D, Eiffell, Erlang, euforia, Go, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk e Tcl.

Istruzioni

1

Creare due nuovi file chiamati "CAnimation.h" e "CAnimation.cpp/." Aggiungere il seguente "include" direttiva in "CApp.h": "#include 'CAnimation.h'."

2

Aprire "CAnimation.h" e inserire il codice riportato di seguito:

ifndef _CANIMATIONH

#define _CANIMATIONH

sono < SDL.h >

Class CAnimation {
privato:
int CurrentFrame;

int FrameInc;

privato:
int FrameRate; Millisecondi

lungo OldTime;

pubblico:
int MaxFrames;

pubblico:
CAnimation();

Sub OnAnimate();

pubblico:
void SetFrameRate (int Rate);

void SetCurrentFrame (int Frame);

int GetCurrentFrame();
};

endif 3

Aprire "CAnimation.cpp" e inserire il codice seguente con i tuoi valori per frame rate:

sono "CAnimation.h"

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

FrameRate = 100; Millisecondi
OldTime = 0;

}

Sub CAnimation::OnAnimate() () {
Se (OldTime + FrameRate > {SDL_GetTicks())
ritorno;
}

OldTime = SDL_GetTicks();

CurrentFrame + = FrameInc;

if(FrameInc > 0) () {
Se (CurrentFrame > = MaxFrames - 1) {
FrameInc = - FrameInc;
}
} else {
Se (CurrentFrame < = 0) {
FrameInc = - FrameInc;
}
}
} else {
Se (CurrentFrame > = MaxFrames - 1) {
CurrentFrame = 0;
}
}
}

void CAnimation::SetFrameRate (int tasso) {
FrameRate = tasso;
}

void CAnimation::SetCurrentFrame (int Frame) {
Se (Frame < 0 | | Telaio > = MaxFrames) return;

CurrentFrame = telaio;
}

int CAnimation::GetCurrentFrame() () {
ritorno CurrentFrame;
}

4

Disegnare il "CurrentFrame" del lato scorrimento animazione determinando la parte della superficie che si attingerà alla schermata. Per esempio, se l'animazione è di 64 x 64 pixel, potrai inserire qualcosa di simile a questo:

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

5

Sapere quanti fotogrammi dell'animazione contiene, noto anche come "MaxFrames". Utilizzare questo codice nella funzione "OnAnimate" per scoprire il "MaxFrames":

Se (OldTime + FrameRate > {SDL_GetTicks())
ritorno;
}

6

Controllare la "Old Time" contro il tempo di esecuzione del processo SDL. Se il frame rate desiderato è "1", il FrameRate sarà uguale a 1.000 millisecondi. Quindi, una volta "0 + 1.000" è minore di "SDL_GetTicks", vuol dire un secondo del telaio ha superato. Reimpostare il "OldTime" al tempo corrente.

7

Mettere l'animazione in azione creando un nuovo oggetto "CAnimation" in "CApp.h:"

CAnimation Animate;

8

Impostare il "MaxFrames" aggiungendo il codice seguente al "CApp_OnInit" e la regolazione del numero di "MaxFrames" per la vostra preferenza:

Animate.MaxFrames = 8;

9

Ciclo dell'animazione con il seguente codice aggiungere a "CApp_OnLoop:"

Animate.OnAnimate();

10

Animarlo aggiungendo questo codice per "CApp_OnRender:"

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