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
|
#include <string>
#include <GL/gl.h>
#include <GL/glu.h>
#include "Personnage.h"
#include "fonction.h"
#include <math.h>
#define pi 3.1416
using namespace std;
//constructeur par defaut
Personnage::Personnage()
{
p_vitesseDeplacement = 0.1;
p_repere = new Repere();
p_arme = new Arme();
}
//méthode d'acces a la position
coord Personnage::get_position()
{
return p_position;
}
//changer la position du personnage
void Personnage::set_position(const SDL_KeyboardEvent & event)
{
if((event.type == SDL_KEYDOWN) && (event.keysym.sym==SDLK_LEFT))
{
p_position.x-=p_vitesseDeplacement;
}
if((event.type == SDL_KEYDOWN) && (event.keysym.sym==SDLK_RIGHT))
{
p_position.x+=p_vitesseDeplacement;
}
if((event.type == SDL_KEYDOWN) && (event.keysym.sym==SDLK_UP))
{
p_position.y+=p_vitesseDeplacement;
}
if((event.type == SDL_KEYDOWN) && (event.keysym.sym==SDLK_DOWN))
{
p_position.y-=p_vitesseDeplacement;
}
}
//ici on determine la position de l'arme du personnage
void Personnage::set_position(const SDL_MouseMotionEvent & event)
{
glPushMatrix();
coord souri,origine,pos1,pos2;
souri.x=event.x;
souri.y=event.y;
origine.x=640/2.0;
origine.y=480/2.0;
double rayon ;
rayon = (sqrt(((souri.x-origine.x)*(souri.x-origine.x))+((souri.y-origine.y)*(souri.y-origine.y))))/25;
double angle1 = pi-atan(2/10)+pi/2; p_arme->set_position(cos(angle(origine,souri))*rayon,-sin(angle(origine,souri))*rayon,0);
glPopMatrix();
}
//dessine une sphere au niveau du personnage
void Personnage::dessiner()
{
glPushMatrix();
glMatrixMode( GL_MODELVIEW );
glTranslated(p_position.x,p_position.y,p_position.z);
p_arme->dessiner();
p_repere->dessiner();
glPopMatrix();
glLineWidth(3);
glBegin(GL_LINES);
glColor3ub(0,255,0); glVertex3d(0,0,0);
glVertex3d(p_position.x,p_position.y,0);
glEnd();
glLineWidth(1);
}
//change la vitesse de deplacement du Personnage
void Personnage::set_vitesseDeplacement(double vitesse)
{
p_vitesseDeplacement = vitesse;
}
//destructeur Personnage
Personnage::~Personnage()
{
delete p_repere;
delete p_arme;
} |
Partager