1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| #include <iostream>
#include <string>
#include <SDL\SDL.h>
#include <SDL\SDL_image.h>
#include <SDL\SDL_ttf.h>
#include "point.h"
//Les attributs de l'écran (640 * 480)
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;
//Les dimensions du point (l'image qu'on va deplacer)
const int POINT_WIDTH = 20;
const int POINT_HEIGHT = 20;
Point::Point()
{
//Initialisation des coordonnees
x = 0;
y = 0;
//Initialisation de la vitesse
xVel = 0;
yVel = 0;
}
void Point::handle_input(SDL_Event event, SDL_Surface* affichePoint,SDL_Surface* screen)
{
if( event.type == SDL_KEYDOWN )
{
//ajustement de la vitesse
switch( event.key.keysym.sym )
{
case SDLK_UP: yVel -= POINT_HEIGHT / 2; break;
case SDLK_DOWN: yVel += POINT_HEIGHT / 2; break;
case SDLK_LEFT: xVel -= POINT_WIDTH / 2; break;
case SDLK_RIGHT: xVel += POINT_WIDTH / 2; break;
default: break;
}
}
//Si une touche a ete relachee
else if( event.type == SDL_KEYUP )
{
//ajustement de la vitesse
switch( event.key.keysym.sym )
{
case SDLK_UP: yVel += POINT_HEIGHT / 2; break;
case SDLK_DOWN: yVel -= POINT_HEIGHT / 2; break;
case SDLK_LEFT: xVel += POINT_WIDTH / 2; break;
case SDLK_RIGHT: xVel -= POINT_WIDTH / 2; break;
default: break;
}
}
show(affichePoint, screen);
}
void Point::show(SDL_Surface* source, SDL_Surface* destination)
{
SDL_Rect offset;
//Bouge le point à gauche ou à droite
x += xVel;
//Si le point se rapproche trop des limites(gauche ou droite) de l'ecran
if( ( x < 0 ) || ( x + POINT_WIDTH > SCREEN_WIDTH ) )
{
//On revient
x -= xVel;
}
//Bouge le point en haut ou en bas
y += yVel;
//Si le point se rapproche trop des limites(haute ou basse) de l'ecran
if( ( y < 0 ) || ( y + POINT_HEIGHT > SCREEN_HEIGHT ) )
{
//On revient
y -= yVel;
}
offset.x = x;
offset.y = y;
//On blitte la surface
SDL_BlitSurface( source, NULL, destination, &offset );
SDL_Flip(destination);
}
/*void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination)
{
SDL_Rect offset;
offset.x = x;
offset.y = y;
//On blitte la surface
SDL_BlitSurface( source, NULL, destination, &offset );
}*/ |
Partager