Isolate keypress waiting in a method

This commit is contained in:
manzerbredes 2015-05-01 12:56:38 +02:00
parent 03b57472fc
commit 672358a947
2 changed files with 65 additions and 54 deletions

View file

@ -14,7 +14,7 @@ ConsoleController::~ConsoleController()
void ConsoleController::play() void ConsoleController::play()
{ {
//Intruction msg
std::cout << "Use arrows to play !" << std::endl; std::cout << "Use arrows to play !" << std::endl;
//Init keyPress //Init keyPress
@ -26,67 +26,26 @@ void ConsoleController::play()
//Start game //Start game
while (!m_game->isOver()) while (!m_game->isOver())
{ {
//Wait for keypress //Get key press
while(1){ keyPress=this->waitArrowKeyPress();
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{ //New line for the console print arrow press
keyPress=LEFT; std::cout << std::endl;
while(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
//Wait for release
}
break;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
keyPress=RIGHT;
while(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
//Wait for release
}
break;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
keyPress=UP;
while(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
//Wait for release
}
break;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
// la touche "flèche gauche" est enfoncée : on bouge le personnage
keyPress=DOWN;
while(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
//Wait for release
}
break;
}
}
//Check for keypress //Print keyPress
switch (keyPress) switch(keyPress){
{
case UP: case UP:
std::cout << "up" << std::endl; std::cout << "Keypress : Up" << std::endl;
break; break;
case DOWN: case DOWN:
std::cout << "down" << std::endl; std::cout << "Keypress : Down" << std::endl;
break; break;
case LEFT: case LEFT:
std::cout << "left" << std::endl; std::cout << "Keypress : Left" << std::endl;
break; break;
case RIGHT: case RIGHT:
std::cout << "right" << std::endl; std::cout << "Keypress : Right" << std::endl;
break;
default:
break; break;
} }
@ -94,8 +53,60 @@ void ConsoleController::play()
m_game->showGrid(); m_game->showGrid();
std::cout << std::endl; std::cout << std::endl;
//Pop new number //Pop new number
m_game->pop(); m_game->pop();
} }
} }
Direction ConsoleController::waitArrowKeyPress()
{
//Initialise keyPress
Direction keyPress;
//Wait for keypress
while(1){
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
keyPress=LEFT;
while(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
//Wait for release
}
break;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
keyPress=RIGHT;
while(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
//Wait for release
}
break;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
keyPress=UP;
while(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
//Wait for release
}
break;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
// la touche "flèche gauche" est enfoncée : on bouge le personnage
keyPress=DOWN;
while(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
//Wait for release
}
break;
}
}
return keyPress;
}

View file

@ -15,7 +15,7 @@ class ConsoleController
private: private:
Game * m_game; Game * m_game;
Direction waitArrowKeyPress();
public: public:
ConsoleController(); ConsoleController();
~ConsoleController(); ~ConsoleController();