This is a part from my own little game in C++ using SDL.
Code:
class Player
{
private:
//animations
int frame;
int dir;
//X and Y offset of player
int x, y;
//Velocity
int xVel, yVel;
//Animation status
int status;
public:
//Initiliaze
Player();
//STATS
int statSpeed;
int statHP;
//Key presses
void handle_input();
//Move player
void move(Tile *tiles[]);
//Jump
void jump();
//Show player
void show();
//scrolling map
void set_camera();
};
And all the initializing for every void etc.
Code:
//PLAYER VARIABLES//
Player::Player()
{
//Initilaze offsets
x = SCREEN_WIDTH / 2; //CENTER
y = GROUNDY; //ON GROUND
//Initialize velocity
xVel = 0;
yVel = 0;
//Animation status
frame = 0;
status = PLR_LEFT;
//STATS
statSpeed = 32;
statHP = 100;
}
void Player::handle_input()
{
//If key was pressed
if (event.type == SDL_KEYDOWN)
{
//adjust velocity
switch (event.key.keysym.sym)
{
case SDLK_UP: yVel -= statSpeed; break; //PLR_HEIGHT / 2; break;
case SDLK_DOWN: yVel += statSpeed; break; //PLR_HEIGHT / 2; break;
case SDLK_LEFT:
xVel -= statSpeed; break;
//dir = PLR_LEFT; break; //PLR_WIDTH / 2; break;
case SDLK_RIGHT:
xVel += statSpeed; break;
//dir = PLR_RIGHT; break;//PLR_WIDTH / 2; break;
}
}
//If key released
else if (event.type == SDL_KEYUP)
{
//adjust velocity
switch (event.key.keysym.sym)
{
case SDLK_UP: yVel += statSpeed; break;//PLR_HEIGHT / 2; break;
case SDLK_DOWN: yVel -= statSpeed; break;//PLR_HEIGHT / 2; break;
case SDLK_LEFT: xVel += statSpeed; break;
//dir = PLR_LEFT; break;//PLR_WIDTH / 2; break;
case SDLK_RIGHT: xVel -= statSpeed; break;
//dir = PLR_RIGHT; break;//PLR_WIDTH / 2; break;
}
}
}
void Player::move()
{
//move left or right
x += xVel;
//If dot is too far to the left or right
if ( (x < 0) || (x + PLR_WIDTH > SCREEN_WIDTH) )
{
//move back
x -= xVel;
}
//Move up or down
y += yVel;
//if player is too far up or down
if ( (y < 0) || (y + PLR_HEIGHT > SCREEN_HEIGHT) )
{
//move back
y -= yVel;
}
/*if (y < GROUNDY)
{
yVel += 1;
jumping = true;
}
else
{
yVel = 0;
y = GROUNDY;
jumping = false;
jumpCount = 2;
}
y += yVel;*/
//if player is too far up or down
if ( (y < 0) || (y + PLR_HEIGHT >= SCREEN_HEIGHT) )
{
//move back
y -= yVel;
}
}
void Player::show()
{
//Moving left
if (xVel < 0)
{
status = PLR_LEFT;
frame++;
}
else if (xVel > 0) //Moving right
{
status = PLR_RIGHT;
frame++;
}
else if (yVel < 0) //moving up
{
status = PLR_UP;
frame++;
}
else if (yVel > 0) //moving down
{
status = PLR_DOWN;
frame++;
}
//ANIMATION
if (frame >= 3)
{
frame = 0;
}
if (status == PLR_RIGHT)
{
apply_surface(x, y, playerSprite, screen, &clipsRight[frame]);
}
else if (status == PLR_LEFT)
{
apply_surface(x, y, playerSprite, screen, &clipsLeft[frame]);
}
else if (status == PLR_UP)
{
apply_surface(x, y, playerSprite, screen, &clipsUp[frame]);
}
else if (status == PLR_DOWN)
{
apply_surface(x, y, playerSprite, screen, &clipsDown[frame]);
}
}