1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- # ifndef CAR_HEADER_FILE
- # define CAR_HEADER_FILE
- // Basiques
- # include <iostream>
- # include <cmath>
- # include <vector>
- // Random
- # include <ctime>
- # include <cstdlib>
- // SDL
- # include <SDL/SDL.h>
- # undef main
- # include <SDL/SDL_rotozoom.h>
- # include <SDL/SDL_gfxPrimitives.h>
- // bBox2D
- # include <box2d/box2d.h>
- # define MULTI 100.0f
- enum command { FREE, BREAK, GO, REVERSE };
- class Car
- {
- /// Méthodes
- public:
- Car();
- virtual ~Car();
- void destroy( b2World &world );
- virtual void init( b2World &world, float x, float y, float angle = 0.0f ) = 0;
- void drive( command cmd );
- void jump( float correction = 0.0f );
- void spin( float tq );
- virtual void update();
- b2Vec2 GetPosition();
- b2Vec2 GetVelocity();
- float GetTorque();
- float GetSpeed();
- bool GetIsOnGround();
- protected:
- void createMotorWheel( b2World &world, b2Vec2 rel, float friction = 10.0f, float density = 0.25f );
- void createFreeWheel( b2World &world, b2Vec2 rel, float friction = 10.0f, float density = 0.25f );
- void createCarenage( b2World &world, float x, float y, float friction = 1.0f, float density = 1.0f );
- /// Attributs
- protected:
- SDL_Surface* m_imgCar ;
- SDL_Surface* m_imgWheel ;
- private:
- b2Body* m_bodyCar ;
- std::vector< b2Body* > m_bodyWheel ;
- std::vector< b2RevoluteJoint* > m_motorAxe ;
- std::vector< b2RevoluteJoint* > m_fwdAxe ;
- command m_cmd ;
- float m_currentTorque ;
- float m_currentSpeed ;
- float m_sense ;
- float m_latence ;
- float m_goTorque ;
- float m_minTorque ;
- float m_maxSpeed ;
- };
- # endif // CAR_HEADER_FILE
|