From 672358a947ff4bff7e0b4e0afaa90c30480ce65b Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Fri, 1 May 2015 12:56:38 +0200 Subject: [PATCH] Isolate keypress waiting in a method --- .../ConsoleController/ConsoleController.cpp | 117 ++++++++++-------- .../ConsoleController/ConsoleController.hpp | 2 +- 2 files changed, 65 insertions(+), 54 deletions(-) diff --git a/src/Controller/ConsoleController/ConsoleController.cpp b/src/Controller/ConsoleController/ConsoleController.cpp index 81e16f4..a2a4a77 100644 --- a/src/Controller/ConsoleController/ConsoleController.cpp +++ b/src/Controller/ConsoleController/ConsoleController.cpp @@ -14,7 +14,7 @@ ConsoleController::~ConsoleController() void ConsoleController::play() { - + //Intruction msg std::cout << "Use arrows to play !" << std::endl; //Init keyPress @@ -26,67 +26,26 @@ void ConsoleController::play() //Start game while (!m_game->isOver()) { - //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; - } - } + //Get key press + keyPress=this->waitArrowKeyPress(); + + //New line for the console print arrow press + std::cout << std::endl; - //Check for keypress - switch (keyPress) - { + //Print keyPress + switch(keyPress){ case UP: - std::cout << "up" << std::endl; + std::cout << "Keypress : Up" << std::endl; break; - case DOWN: - std::cout << "down" << std::endl; + std::cout << "Keypress : Down" << std::endl; break; - case LEFT: - std::cout << "left" << std::endl; + std::cout << "Keypress : Left" << std::endl; break; case RIGHT: - std::cout << "right" << std::endl; - break; - - default: + std::cout << "Keypress : Right" << std::endl; break; } @@ -94,8 +53,60 @@ void ConsoleController::play() m_game->showGrid(); std::cout << std::endl; + //Pop new number 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; +} diff --git a/src/Controller/ConsoleController/ConsoleController.hpp b/src/Controller/ConsoleController/ConsoleController.hpp index 2cda804..317759c 100644 --- a/src/Controller/ConsoleController/ConsoleController.hpp +++ b/src/Controller/ConsoleController/ConsoleController.hpp @@ -15,7 +15,7 @@ class ConsoleController private: Game * m_game; - + Direction waitArrowKeyPress(); public: ConsoleController(); ~ConsoleController();