我刚接触linux下编程,所以不懂,麻烦各位帮我看看是什么问题
MQW+NCv#FBLinux伊甸园论坛程序代码
Be)L^G{@A
)P1c9mrS'~]@$cLinux伊甸园论坛#include <stdio.h>
za!VX2N
J
&N+zn
#include <stdlib.h>
0?gbm&h5c#include <SDL.h>
&Hhq!iD@7z
#include <SDL_image.h>
M:b8lVs&H#define DIR_UP 0
B0PP/o7S8C Sy%T|Iwww.linuxeden.com#define DIR_LEFT 1
www.linuxeden.com,N9["L)_.A4i?
#define DIR_DOWN 2
n#s+p3YzV,jwww.linuxeden.com#define DIR_RIGHT 3
(l-z/mLp|g
SDL_Surface *screen;
Z? |yy I |{1u
typedef struct Sprite_t {
0Kp&x
mxuX8kint width;
i2Dd)G#C
v&n.aetint height;
|/v)y6SfN
R*Y t~Vint x;
+B*a5G-Zz6IK"|4ITint y;
yZ5\'}.F
int ox;
9j
{ Zk!vuw5| _m|www.linuxeden.comint oy;
Of0R D:B7G0fint dir;
@m6J'SInZTwww.linuxeden.comint subframe;
3m9?*z;]L3c|~
int speed;
www.linuxeden.com8n J!MMg ec#C
int timer;
-^xm.o#S
^mD
int moving; //use to calculate subframe
8l2z
MdV$r#`F
SDL_Surface *image;
;b
,lnyD4`M8LyG8}}Sprite_t;
z_)g
Z9p3O.Etypedef enum GameState {
|
y6K;h}c{j9sGAME_RUNNING,
hH2Y.x@LslYGAME_OVER,
www.linuxeden.com$_?_jv*O
}GameState;
{'E
b
q3R9}k8Yvoid Init_SDL()
)W'W+T:YG9wE
{
0p`qQu7gK0F)~r
if ( SDL_Init( SDL_INIT_VIDEO) < 0 ) {
Linux伊甸园论坛?l6y o/O0n;}
fprintf(stderr,"Can't init SDL: %s\n",SDL_GetError());
+J%D2_lf@1k2{Mexit(1);
R(@5x5R&@T$n}
9i.}#TG*Bt
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
Linux伊甸园论坛Yy+}D6uK
if ( screen == NULL ) {
i `K!kI7^
K3efprintf(stderr, "Error: %s\n",SDL_GetError());
www.linuxeden.com/HYEbTp|
V:W0G8l
exit(1);
}uZ{3B)irSK%Rwww.linuxeden.com}
8h&U,b'S:j)_:i ]Oatexit(SDL_Quit);
Fk_cZ4E.FkLinux伊甸园论坛}
m3epJB/P b)R
void DrawSprite(SDL_Surface *surface,Sprite_t *sprite)
Linux伊甸园论坛:e
X*x kx%G
{
,\
S3cQ*Sse&X:t
SDL_Rect src_rect,des_rect;
5u9h3Q }T{N
sprite->subframe=sprite->timer/4;
9F E3z a*J,Q F7isrc_rect.w=des_rect.w=sprite->width;
www.linuxeden.com)T UF$pW
src_rect.h=des_rect.h=sprite->height;
Ix Di'CFOsrc_rect.x=sprite->subframe*sprite->width;
V _Ged
src_rect.y=sprite->dir*sprite->height;
9N?Y
hfuc@
e
des_rect.x=sprite->x;
`^?p.qFdes_rect.y=sprite->y;
Linux伊甸园论坛F#ZQ;cC1JU5V&E
//Draw sprite to new position
OuBp FW
P$|
SDL_BlitSurface(sprite->image,&src_rect,surface,&des_rect);
;Q
hx p$P"h)z4S_
}
v#d0p8n!C,P#@void ClearSprite(SDL_Surface *surface,Sprite_t *sprite)
Linux伊甸园论坛N2P9wR$| {3]
{
Linux伊甸园论坛b"t"Iz"c [
SDL_Rect mask;
Linux伊甸园论坛o%p([GP)R#x
mask.w=sprite->width;
sHdYN\I
mask.h=sprite->height;
!L6`IFlU|Z!d+amask.x=sprite->ox;
J{2s&[:r%r6g;Zmask.y=sprite->oy;
:F9d[g/k9n:]]
//Clear sprite from the old position
}#y W!`EphLinux伊甸园论坛SDL_FillRect(surface,&mask,SDL_MapRGB(surface->format,0,0,0));
,LK
a#z H!N;C_Linux伊甸园论坛}
3^2N%AC|%T_#c
Uint32 TimeLeft()