您的位置:首页 > 编程语言

SDL入门教程(五):7、鼠标事件演示,代码重用

2012-09-10 10:15 573 查看
作者:龙飞

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;

}

此篇文章来自【/article/10941192.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: