⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 15-8.c

📁 《linux应用开发技术详解》的配套代码
💻 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 + -