SDL入门教程(五):7、鼠标事件演示,代码重用
来源:互联网 发布:linux查找文件夹命令 编辑:程序博客网 时间:2024/05/16 07:36
作者:龙飞
7.1:演示程序源代码
今天因为一个网上的朋友的请求,做个一个关于鼠标事件的演示程序。实际上,可以完全用到前面我们构造的类和类方法,这里送上主程序,供大家参考。其他两个文件和图片文件均不需要任何改变。
7.1:演示程序源代码
今天因为一个网上的朋友的请求,做个一个关于鼠标事件的演示程序。实际上,可以完全用到前面我们构造的类和类方法,这里送上主程序,供大家参考。其他两个文件和图片文件均不需要任何改变。
#include "SurfaceClass.h"
int game(int argc, char* argv[]);
int main(int argc ,char* argv[])
{
int mainRtn = 0;
try {
mainRtn = game(argc, argv);
}
catch ( const ErrorInfo& info ) {
info.show();
return -1;
}
return mainRtn;
}
int game(int argc ,char* argv[])
{
//Create a SDL screen.
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
ScreenSurface screen(SCREEN_WIDTH, SCREEN_HEIGHT);
//Create 2 SDL surface for the screen that just created.
DisplaySurface backGround("bg.bmp", screen);
DisplaySurface frontImage("image.bmp", screen);
//Blit backGround surface to screen and flip the screen.
backGround.blit();
screen.flip();
//moving image's coordinate.
int xpos = 0;
int ypos = 0;
//mouse's coordinate.
int px = 0;
int py = 0;
//moving image's size.
const int IMG_WIDTH = 128;
const int IMG_HEIGHT = 128;
//main loop.
bool gameOver = false;
while( gameOver == false ){
//press ESC or click X to quit.
SDL_Event gameEvent;
while ( SDL_PollEvent(&gameEvent) != 0 ){
if ( gameEvent.type == SDL_QUIT ){
gameOver = true;
}
if ( gameEvent.type == SDL_KEYUP ){
if ( gameEvent.key.keysym.sym == SDLK_ESCAPE ){
gameOver = true;
}
}
//mouse event
if ( gameEvent.type == SDL_MOUSEMOTION ) {
px = gameEvent.motion.x;
py = gameEvent.motion.y;
}
}
if ( xpos < px )
xpos++;
if ( xpos > px )
xpos--;
if ( ypos < py )
ypos++;
if ( ypos > py )
ypos--;
backGround.blit(xpos, ypos, xpos, ypos, IMG_WIDTH, IMG_HEIGHT);
frontImage.blit(xpos, ypos);
screen.flip();
}
return 0;
}
int game(int argc, char* argv[]);
int main(int argc ,char* argv[])
{
int mainRtn = 0;
try {
mainRtn = game(argc, argv);
}
catch ( const ErrorInfo& info ) {
info.show();
return -1;
}
return mainRtn;
}
int game(int argc ,char* argv[])
{
//Create a SDL screen.
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
ScreenSurface screen(SCREEN_WIDTH, SCREEN_HEIGHT);
//Create 2 SDL surface for the screen that just created.
DisplaySurface backGround("bg.bmp", screen);
DisplaySurface frontImage("image.bmp", screen);
//Blit backGround surface to screen and flip the screen.
backGround.blit();
screen.flip();
//moving image's coordinate.
int xpos = 0;
int ypos = 0;
//mouse's coordinate.
int px = 0;
int py = 0;
//moving image's size.
const int IMG_WIDTH = 128;
const int IMG_HEIGHT = 128;
//main loop.
bool gameOver = false;
while( gameOver == false ){
//press ESC or click X to quit.
SDL_Event gameEvent;
while ( SDL_PollEvent(&gameEvent) != 0 ){
if ( gameEvent.type == SDL_QUIT ){
gameOver = true;
}
if ( gameEvent.type == SDL_KEYUP ){
if ( gameEvent.key.keysym.sym == SDLK_ESCAPE ){
gameOver = true;
}
}
//mouse event
if ( gameEvent.type == SDL_MOUSEMOTION ) {
px = gameEvent.motion.x;
py = gameEvent.motion.y;
}
}
if ( xpos < px )
xpos++;
if ( xpos > px )
xpos--;
if ( ypos < py )
ypos++;
if ( ypos > py )
ypos--;
backGround.blit(xpos, ypos, xpos, ypos, IMG_WIDTH, IMG_HEIGHT);
frontImage.blit(xpos, ypos);
screen.flip();
}
return 0;
}
此篇文章来自【http://blog.csdn.net/lf426/article/details/2141377】
- SDL入门教程(五):7、鼠标事件演示,代码重用
- SDL入门教程(五):7、鼠标事件演示,代码重用
- SDL入门教程(五):1、构建SDL screen surface类
- SDL入门教程(五):2、构建SDL surface类
- SDL入门教程(五):1、构建SDL screen surface类
- SDL入门教程(五):2、构建SDL surface类
- SDL入门教程(五):6、对C++异常机制的思考,代码重写
- SDL入门教程(五):6、对C++异常机制的思考,代码重写
- SDL入门教程(五):3、对SDL_BlitSurface()的进一步讨论
- SDL入门教程(五):4、让图片动起来!
- SDL入门教程(五):5、本章范例的完整源代码
- SDL入门教程(五):3、对SDL_BlitSurface()的进一步讨论
- SDL入门教程(五):4、让图片动起来!
- SDL入门教程(五):5、本章范例的完整源代码
- SDL入门教程(九):2、显示文本的完整代码
- SDL入门教程(九):2、显示文本的完整代码
- SDL入门教程(九):5、文本反馈鼠标位置坐标信息
- SDL入门教程(九):5、文本反馈鼠标位置坐标信息
- Dialog的使用
- 我把自己拥有的一切盛满在长裙里
- QTableWidget
- 关于在windows下安装postgresql-8.4.4-1-windows-binaries所出现的问题和解决
- 什么是肿瘤区、靶区、治疗区和照射区?
- SDL入门教程(五):7、鼠标事件演示,代码重用
- penfire开发环境搭建
- 程序员修炼+笔试面试:如何从一个学生到合格的雇员
- 什么是放射治疗计划系统?放疗计划设计步骤是什么?
- 将sql sever 2008的数据库转化成sql server 2005数据库
- “在验证发生前无法调用 Page.IsValid”问题的由来
- 点击回车键登录
- 久久的萦绕在脑海
- MySQL5 总结(2)——优化篇