You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
1.6 KiB
C++

#include "game.h"
Game::Game()
{
// Place the player with 10 initial charges onto x: 1, y: 1
hero = std::make_unique<Hero>(1, 1, 10);
// Generate level
level = std::make_unique<Level>();
sf::Window window(sf::VideoMode(640, 480), "SFML-Test Application", sf::Style::Default);
window.setActive();
}
int Game::run()
{
clock = std::make_unique<sf::Clock>();
// On the game loop
while (main_window.isOpen())
{
sf::Event event;
while (main_window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
main_window.close();
// Handling keyboard activity
if (event.type == sf::Event::KeyPressed)
{
// Move
onMoving(event.key.code);
}
}
}
return EXIT_SUCCESS;
}
Direction Game::getDirection(sf::Keyboard::Key &key) const
{
switch (key)
{
case sf::Keyboard::A:
case sf::Keyboard::Left:
return Direction::LEFT;
case sf::Keyboard::W:
case sf::Keyboard::Up:
return Direction::UP;
case sf::Keyboard::D:
case sf::Keyboard::Right:
return Direction::RIGHT;
case sf::Keyboard::S:
case sf::Keyboard::Down:
return Direction::DOWN;
default:
return Direction::NONE;
}
}
void Game::onMoving(sf::Keyboard::Key &key)
{
// Determine where to move
const Direction direction = getDirection(key);
if (direction == Direction::NONE)
return;
//////////////////////////
int initial_x, initial_y;
hero->position(initial_x, initial_y);
// TO DO THE REST
}