📄 15-8.c
字号:
#include <SDL.h>
#include <SDL_image.h>
void Init_SDL();
SDL_Surface *screen;
int main()
{
SDL_Surface *ball;
SDL_Rect dest_rect;
int i;
/* XPM */
static char * ball_xpm[] = { /* 小球的图片 */
"9 9 15 1",
" c None",
". c #FF00FF",
"+ c #CBCBCB",
"@ c #BABABA",
"# c #DBDBDB",
"$ c #EBEBEB",
"% c #A6A6A6",
"& c #969696",
"* c #FFFFFF",
"= c #757575",
"- c #868686",
"; c #515151",
"> c #616161",
"...++@...",
".+#$++%&.",
".+$*$+%&.",
"%++$#+%&=",
"&@+++@%-=",
"-%%@%%-=;",
".-&&&-=>.",
".==-==;;.",
"...;>;..."};
Init_SDL();
ball=IMG_ReadXPMFromArray(ball_xpm); /* 读取内嵌的xpm图片 */
SDL_SetColorKey(ball,SDL_SRCCOLORKEY,SDL_MapRGB(ball->format,255,0,255)); /* 设置透明色 */
dest_rect.x=0;
dest_rect.y=200;
dest_rect.w=ball->w;
dest_rect.h=ball->h;
for(i=1;i<210;i++){
SDL_BlitSurface(ball,NULL,screen,&dest_rect); /* 画出小球 */
SDL_UpdateRect(screen,0,0,0,0); /* 更新屏幕 */
SDL_Delay(10); /* 延迟 */
SDL_FillRect(screen,&dest_rect,SDL_MapRGB(screen->format,0,0,0)); /* 消去小球 */
dest_rect.x+=3; /* 改变小球的坐标 */
}
SDL_FreeSurface(ball);
SDL_Delay(2000);
}
void Init_SDL()
{
if ( SDL_Init( SDL_INIT_VIDEO) < 0 ) {
fprintf(stderr,"Can't init SDL: %s\n",SDL_GetError());
exit(1);
}
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
if ( screen == NULL ) {
fprintf(stderr, "Error: %s\n",SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -