使用SDL打造游戏世界之入门篇 - 图文 联系客服

发布时间 : 星期五 文章使用SDL打造游戏世界之入门篇 - 图文更新完毕开始阅读

仍然是Link属性页,选择Category中的Input,在'Additional library path'文本框中填写..\\SDL-1.2.8\\lib\\,如图8所示。

图8

这样我们就完成了编程前的设置工作,不过这是针对Debug版本的,如果要设置Release版本,需要选择Build->Set Active Configuration,选择Release,然后再次如上配置一次。

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

图9

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

#include #if defined(_MSC_VER) #include \#else #include \#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, \exit(1); } // 注册SDL_Quit,当退出时调用,使得退出时程序自动清理 atexit(SDL_Quit); // 使用32位象素创建640x480的窗口 screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE); // 若失败,则退出 if ( screen == NULL ) { fprintf(stderr, \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所示。