zoukankan      html  css  js  c++  java
  • 使用SDL打造游戏世界之入门篇 3

     下面我们正式开始编程,将E:"tutorial"SDL-1.2.8"lib"SDL.dll拷贝到gp文件夹下,然后给gp工程增加一个C++文件main.cpp。如图9所示。

    使用SDL打造游戏世界之入门篇(图九)
    图9

    将以下代码拷贝到main.cpp并保存。

    #include <stdlib.h>
    #if defined(_MSC_VER)
    #include "SDL.h"
    #else
    #include "SDL/SDL.h"
    #endif

    SDL_Surface *screen;

    void render()
    {
    // 独占资源,将surface 锁定
    if (SDL_MUSTLOCK(screen))
    if (SDL_LockSurface(screen) < 0)
    return;

    // 获取当前时间,以毫秒计时
    int tick = SDL_GetTicks();

    // 声明变量
    int i, j, yofs, ofs;

    // 对窗口进行绘制
    yofs = 0;
    for (i = 0; i < 480; i++)
    {
    for (j = 0, ofs = yofs; j < 640; j++, ofs++)
    {
    ((unsigned int*)screen->pixels)[ofs] = i * i + j * j + tick;
    }
    yofs += screen->pitch / 4;
    }

    // 解除锁定
    if (SDL_MUSTLOCK(screen))
    SDL_UnlockSurface(screen);

    // 使用SDL对窗口进行更新
    SDL_UpdateRect(screen, 0, 0, 640, 480);
    }

    // Entry point
    int main(int argc, char *argv[])
    {
    // 初始化SDL子系统,这里只对视频进行初始化
    if ( SDL_Init(SDL_INIT_VIDEO) < 0 )
    {
    fprintf(stderr, "Unable to init SDL: %s"n", SDL_GetError());
    exit(1);
    }

    // 注册SDL_Quit,当退出时调用,使得退出时程序自动清理
    atexit(SDL_Quit);

    // 使用32位象素创建640x480的窗口
    screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);

    // 若失败,则退出
    if ( screen == NULL )
    {
    fprintf(stderr, "Unable to set 640x480 video: %s"n", SDL_GetError());
    exit(1);
    }

    // 主循环
    while (1)
    {
    // Render stuff
    render();

    // SDL中的事件轮询机制
    SDL_Event event;
    while (SDL_PollEvent(&event))
    {
    //对消息进行处理
    switch (event.type)
    {
    // 如果按下某键的消息响应
    case SDL_KEYDOWN:
    break;
    //如果某键按下后弹起的消息响应
    case SDL_KEYUP:
    //若按下ESC键,则退出
    if (event.key.keysym.sym == SDLK_ESCAPE)
    return 0;
    break;
    //退出消息响应
    case SDL_QUIT:
    return(0);
    }
    }
    }
    return 0;
    }

    对工程gp进行编译,可以看看动态水波纹的效果了:) 如图10所示。

    使用SDL打造游戏世界之入门篇(图十)
    图10

    如果你能够看到图10中的美丽动态窗口,那么恭喜你,你可以开始漫游SDL的精彩世界了。下面我们将正式开始我们的SDL之旅。 更多文章 更多内容请看游戏开发网络游戏攻略Solaris基础知识入门专题,或进入讨论组讨论。
  • 相关阅读:
    mongodb
    python中读取文件的read、readline、readlines方法区别
    uva 129 Krypton Factor
    hdu 4734
    hdu 5182 PM2.5
    hdu 5179 beautiful number
    hdu 5178 pairs
    hdu 5176 The Experience of Love
    hdu 5175 Misaki's Kiss again
    hdu 5174 Ferries Wheel
  • 原文地址:https://www.cnblogs.com/Henrya2/p/1420863.html
Copyright © 2011-2022 走看看