SDL Game Development-第1章-笔记
2014-02-18 10:11
513 查看
【简介】学习在Code::Blocks 13.12中,使用SDL2.0库的方法。基于g++的C++11选项
原书下载地址:http://it-ebooks.info/book/2960/
SDL2.0官方地址:http://www.libsdl.org/
第一章:程序的基本架构
main.cpp的内容
运行结果:
最后:关于全屏
//修改Game.h中的init()函数原型
bool init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen);
//修改Game.cpp中的init()函数实现
if(g_game->init("Chapter 1", 100, 100, 640, 480, true));
//true传入,指示全屏创建窗口
原书下载地址:http://it-ebooks.info/book/2960/
SDL2.0官方地址:http://www.libsdl.org/
第一章:程序的基本架构
main.cpp的内容
#include "Game.h" Game* g_game = 0; //全局实例 //这里演示了基本框架结构 int main(int argc, char* argv[]) { g_game = new Game(); //Game类对象实例 g_game->init("Charpter 1", 100, 100, 640, 480, 0); //初始化 //标题:Charpter 1, //x,y位置:100, 100 //窗口宽高:640, 480 //窗口标志:0 //标志建议使用:SDL_WINDOW_SHOWN | SDL_WINDOW_ALLOW_HIGHDPI | SDL_WINDOW_OPENGL while(g_game->running()) //开始主循环 { g_game->handleEvents(); //处理输入 g_game->update(); //计算时间和碰撞 g_game->render(); //渲染到屏幕 } g_game->clean(); //清理资源,退出 return 0; }Game.h的内容
#ifndef __Game__ #define __Game__ #include <SDL.h> class Game { public: Game(); ~Game(); bool init(const char* title, int xpos, int ypos, int width, int height, int flags); //初始化 void render(); void update(); void handleEvents(); void clean(); bool running() { return m_bRunning; } //返回运行状态 private: SDL_Window* m_pWindow; //窗口资源指针 SDL_Renderer* m_pRenderer; //渲染器资源指针 bool m_bRunning; }; #endif // __Game__Game.cpp的内容
#include <iostream> //注:对于在VS 2012 EXPRESS的IDE中使用std::cout, //需要包含Windows.h, //然后调用AllocConsole(); 和freopen("CON", "w", stdout); //将上述内容添加到main.cpp中 #include "Game.h" Game::Game() { } Game::~Game() { } bool Game::init(const char* title, int xpos, int ypos, int width, int height, int flags) { if(SDL_Init(SDL_INIT_EVERYTHING) == 0) //SDL_Init成功。参数也可写为SDL_INIT_VIDEO | SDL_INIT_TIMER { std::cout << "SDL init success\n"; //调用SDL的创建窗口函数,返回窗口资源指针 m_pWindow = SDL_CreateWindow(title, xpos, ypos, width, height, flags); if(m_pWindow !=0) //窗口创建成功 { std::cout << "window creation success\n"; //创建渲染器资源 m_pRenderer = SDL_CreateRenderer(m_pWindow, -1, 0); if(m_pRenderer != 0) //渲染器创建成功 { std::cout << "renderer creation success\n"; //设置当前渲染色,rgba,红绿蓝透明四通道 SDL_SetRenderDrawColor(m_pRenderer, 0xFF, 0xFF, 0xFF, 0xFF); }else { std::cout << "renderer init fail\n"; return false; //渲染器失败 } }else { std::cout << "window init fail\n"; return false; //窗口创建失败 } }else{ std::cout << "SDL init fail\n"; return false; //SDL库初始失败 } std::cout << "init success\n"; m_bRunning = true; //所有初始都成功,可以开始主循环了 return true; } void Game::render() { SDL_RenderClear(m_pRenderer); //清屏 //绘制对象 SDL_RenderPresent(m_pRenderer); //双缓冲翻转,新内容显示到屏幕上 } void Game::update() { } void Game::handleEvents() { SDL_Event event; //这个变量放这里合适否?每次循环都会生成这个局部变量 if(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: m_bRunning = false; //结束循环 break; default: break; } } //事件处理在第4章详细介绍 } void Game::clean() { std::cout << "cleaning game\n"; SDL_DestroyWindow(m_pWindow); //销毁资源,可以加上判断 //if(m_pWindow) { SDL_DestroyWindow(m_pWindow); } SDL_DestroyRenderer(m_pRenderer); SDL_Quit(); }
运行结果:
最后:关于全屏
//修改Game.h中的init()函数原型
bool init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen);
//修改Game.cpp中的init()函数实现
bool Game::init(const char* title, int xpos, int ypos, int width, int height, bool fullscreen) { flags = 0; if(fullscreen) flags = SDL_WINDOW_FULLSCREEN; //上述代码放在SDL_CreateWindow()之前 ...//main.cpp中的调用代码,改为
if(g_game->init("Chapter 1", 100, 100, 640, 480, true));
//true传入,指示全屏创建窗口
相关文章推荐
- SDL Game Development-第3章-1.实现游戏对象管理器(1)Working with Game Objects
- SDL Game Development-第2章-5.实现纹理管理器Texture Manager
- SDL Game Development-第2章-2.剪裁式显示BMP
- SDL Game Development-第2章-3.利用角色表产生动画
- 笔记:《Agile software Development》第1章 敏捷实践
- SDL Game Development-第2章-4.使用SDL_image库操作更多格式的图片
- 【笔记】Core GameObjects, components, and concepts relating to Unity UI development include
- SDL Game Development-第2章-1.BMP的原样显示
- SDL Game Development-第四章(2)-输入处理2-处理鼠标移动
- SDL Game Development-第四章(1)-移动
- SDL Game Development-第四章(2)-输入处理-创建处理类
- 心理学导论笔记 第1章 心理学是什么?
- 工作学习笔记——《Game Engine Architecture》
- 【PMP】PMBOK 笔记 第1章 引论
- Android原生(Native)C开发之四:SDL移植笔记
- 3D Math Primer for Graphics and Game Development Second Edition
- Agile Web Development with Rails第七章笔记——任务B:验证
- SDL2.0学习笔记1---开发环境搭建
- 13.1-全栈Java笔记:打飞机游戏实战项目|AWT|MyGameFrame
- Sun公司开源游戏服务器Project Darkstar Server——(Sun game server , 简称 sgs)学习笔记(二):多人游戏