Player Move - Inf512-MotorolaScienceCup/gra-PANG GitHub Wiki
Ruch następuje po sprawdzeniu naciskanych przez gracza przycisków. Są tu również wykorzystywane dwie zmienne pomocnicze climbing (określa czy znajdujemy się na drabinie czy nie) oraz onIce (określa czy znajdujemy się na lodzie czy nie). Po sprawdzeniu ustawiana jest odpowiednia prędkość, odgrywany jest dźwięk, a także po wciśnięciu Spacji uruchamiane jest strzelanie. Na końcu przesuwana jest pozycja gracza o wcześniej ustaloną prędkość.
void Player::Move() {
if (state == State::FINISHED) return;
if (!climbing)
speed.y++;
else {
speed.y = 0;
speed.x = 0;
}
if (climbing) {
if (IsKeyDown(KEY_UP)) {
direction = Direction::UP;
speed.y = -5;
} else if (IsKeyDown(KEY_DOWN)) {
direction = Direction::DOWN;
speed.y = 5;
} else {
direction = Direction::NONE;
}
} else {
if (!onIce) {
if (IsKeyDown(KEY_LEFT)) {
direction = Direction::LEFT;
if (speed.x > -6.0f * game->speedBoost)
speed.x -= 1;
else
speed.x = -6.0f * game->speedBoost;
if (!IsSoundPlaying(game->audio[WALK]))
PlaySound(game->audio[WALK]);
} else if (IsKeyDown(KEY_RIGHT)) {
direction = Direction::RIGHT;
if (speed.x < 6.0f * game->speedBoost)
speed.x += 1;
else
speed.x = 6.0f * game->speedBoost;
if (!IsSoundPlaying(game->audio[WALK]))
PlaySound(game->audio[WALK]);
} else {
direction = Direction::NONE;
speed.x = 0;
if (IsSoundPlaying(game->audio[WALK]))
StopSound(game->audio[WALK]);
}
} else {
if (IsKeyDown(KEY_LEFT)) {
direction = Direction::LEFT;
speed.x -= 0.25f * game->speedBoost;
if (!IsSoundPlaying(game->audio[WALK]))
PlaySound(game->audio[WALK]);
} else if (IsKeyDown(KEY_RIGHT)) {
direction = Direction::RIGHT;
speed.x += 0.25f * game->speedBoost;
if (!IsSoundPlaying(game->audio[WALK]))
PlaySound(game->audio[WALK]);
} else {
direction = Direction::NONE;
if (speed.x > 0.2)
speed.x -= 0.2f;
else if (speed.x < -0.2)
speed.x += 0.2f;
else {
speed.x = 0;
if (IsSoundPlaying(game->audio[WALK]))
StopSound(game->audio[WALK]);
}
}
}
}
if (!climbing && IsKeyPressed(KEY_SPACE)) {
Shooting();
}
position.rectangle.x += speed.x;
position.rectangle.y += speed.y;
onIce = false;
}