作者:龙飞
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 ;
}