SDL问题
我刚接触linux下编程,所以不懂,麻烦各位帮我看看是什么问题Q5B|/D
Q(^M&oH
程序代码|
K2spKW
"vII,VC|
#include <stdio.h> IuVv2WLpF
#include <stdlib.h>
,c[9_O ^1Jk
vS8KLinux伊甸园论坛#include <SDL.h>
%jtu7A2tj~1VFwww.linuxeden.com#include <SDL_image.h>\ pjW:Wvu
#define DIR_UP 0www.linuxeden.comrt4?
~9W:F)@
#define DIR_LEFT 1v.?,rV9HG
#define DIR_DOWN 2;M1c,xD~{'V
#define DIR_RIGHT 3
R~!N#{4D#@SDL_Surface *screen;C[4P4`{1vM
typedef struct Sprite_t { G"^PEPYa
int width;www.linuxeden.com4?,Ro"w2KT,QnH
int height;
Jz@5g v+jint x;3N8l-zWo a(oTs
int y;(bHU7os
int ox;
z [9M Lvuh ?%Lint oy;ru!['AM^4p
int dir;.kw-q:j:|nw`
int subframe;
:d
qV|BS7owww.linuxeden.comint speed;www.linuxeden.comUx O$S0qQL
int timer;
&SA.n/@_Cint moving; //use to calculate subframe9Q&`3CE?3Y
SDL_Surface *image;
9c"Q%m_4]9K4v"ka}Sprite_t;
(A3v,{{ Ic*gtypedef enum GameState { A+gf _X ^
GAME_RUNNING,
Z/^-EiERGAME_OVER,
}"jz-]2hF}GameState;
Vz5@oBvg-pc2uvoid Init_SDL()
~%w?O0fA-H\Z!C{e
n@'?d
if ( SDL_Init( SDL_INIT_VIDEO) < 0 ) {!k{ s,[0J&C4?[U R%CB
fprintf(stderr,"Can't init SDL: %s\n",SDL_GetError());
i q-^
jI4iX0j8Xwww.linuxeden.comexit(1);:G^Xh5k4Hkl+_
}
ovk2Rb;bl&ggscreen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);Linux伊甸园论坛0g9z.[$~9k/~
W1~
if ( screen == NULL ) {
~Z%j
i2UQ7o!Q)uqwww.linuxeden.comfprintf(stderr, "Error: %s\n",SDL_GetError());
cO:?9JZ.R"e6O
cKWexit(1);
-jjo,FcChLinux伊甸园论坛} ye'R9M1^v;^
atexit(SDL_Quit);$V%]l7EE3{,m E.o|
}www.linuxeden.com E
~{rC:]*^L/`
void DrawSprite(SDL_Surface *surface,Sprite_t *sprite)
tv#Z
?Hs(eP{
+zr dE4d`vs9R~www.linuxeden.comSDL_Rect src_rect,des_rect;-@#lA!psTD
sprite->subframe=sprite->timer/4;
q2o1C@Esrc_rect.w=des_rect.w=sprite->width;Linux伊甸园论坛,\Yt+J9Cr8O
src_rect.h=des_rect.h=sprite->height; v0Z E%~,|;Gs5\eT Oc
src_rect.x=sprite->subframe*sprite->width;
|;U#P)vPE6rbHsrc_rect.y=sprite->dir*sprite->height;
'@~ HS:}5S0~U8edes_rect.x=sprite->x;
7k2i"Z
cV|%hXLinux伊甸园论坛des_rect.y=sprite->y;
|