summaryrefslogtreecommitdiff
path: root/src/Controllers
diff options
context:
space:
mode:
authormanzerbredes <loic.guegan_secondary@yahoo.fr>2015-05-01 13:18:26 +0200
committermanzerbredes <loic.guegan_secondary@yahoo.fr>2015-05-01 13:18:26 +0200
commit048f1e17b752d2af53db82c1861002283fc300fa (patch)
treeaf7e01538efa1304e53ed89786ff7afeadc3a325 /src/Controllers
parent672358a947ff4bff7e0b4e0afaa90c30480ce65b (diff)
Add some newers things :
-Change helper ModelConstants to Keyboard -Now helpers is in folder Helpers -Change direction name to use CamelCase
Diffstat (limited to 'src/Controllers')
-rw-r--r--src/Controllers/CMakeLists.txt1
-rw-r--r--src/Controllers/ConsoleController/CMakeLists.txt3
-rw-r--r--src/Controllers/ConsoleController/ConsoleController.cpp112
-rw-r--r--src/Controllers/ConsoleController/ConsoleController.hpp26
4 files changed, 142 insertions, 0 deletions
diff --git a/src/Controllers/CMakeLists.txt b/src/Controllers/CMakeLists.txt
new file mode 100644
index 0000000..7ebeb19
--- /dev/null
+++ b/src/Controllers/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory(./ConsoleController/)
diff --git a/src/Controllers/ConsoleController/CMakeLists.txt b/src/Controllers/ConsoleController/CMakeLists.txt
new file mode 100644
index 0000000..d42803f
--- /dev/null
+++ b/src/Controllers/ConsoleController/CMakeLists.txt
@@ -0,0 +1,3 @@
+#Make Model lib
+add_library(ConsoleController ./ConsoleController.cpp)
+target_link_libraries(ConsoleController Model)
diff --git a/src/Controllers/ConsoleController/ConsoleController.cpp b/src/Controllers/ConsoleController/ConsoleController.cpp
new file mode 100644
index 0000000..4be0375
--- /dev/null
+++ b/src/Controllers/ConsoleController/ConsoleController.cpp
@@ -0,0 +1,112 @@
+#include "./ConsoleController.hpp"
+#include <SFML/Window/Keyboard.hpp>
+#include "../../Helpers/Keyboard.hpp"
+
+ConsoleController::ConsoleController()
+{
+ m_game = new Game();
+}
+
+ConsoleController::~ConsoleController()
+{
+ delete m_game;
+}
+
+void ConsoleController::play()
+{
+ //Intruction msg
+ std::cout << "Use arrows to play !" << std::endl;
+
+ //Init keyPress
+ kbdh::Direction keyPress;
+
+ //Display the first grid
+ m_game->showGrid();
+
+ //Start game
+ while (!m_game->isOver())
+ {
+ //Get key press
+ keyPress=this->waitArrowKeyPress();
+
+ //New line for the console print arrow press
+ std::cout << std::endl;
+
+
+ //Print keyPress
+ switch(keyPress){
+ case kbdh::Up:
+ std::cout << "Keypress : Up" << std::endl;
+ break;
+ case kbdh::Down:
+ std::cout << "Keypress : Down" << std::endl;
+ break;
+ case kbdh::Left:
+ std::cout << "Keypress : Left" << std::endl;
+ break;
+ case kbdh::Right:
+ std::cout << "Keypress : Right" << std::endl;
+ break;
+ }
+
+ //Show the Grid
+ m_game->showGrid();
+ std::cout << std::endl;
+
+
+ //Pop new number
+ m_game->pop();
+
+ }
+}
+
+
+
+kbdh::Direction ConsoleController::waitArrowKeyPress()
+{
+ //Initialise keyPress
+ kbdh::Direction keyPress;
+
+ //Wait for keypress
+ while(1){
+ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
+ {
+ keyPress=kbdh::Left;
+ while(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
+ {
+ //Wait for release
+ }
+ break;
+ }
+ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
+ {
+ keyPress=kbdh::Right;
+ while(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
+ {
+ //Wait for release
+ }
+ break;
+ }
+ if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
+ {
+ keyPress=kbdh::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=kbdh::Down;
+ while(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
+ {
+ //Wait for release
+ }
+ break;
+ }
+ }
+
+ return keyPress;
+}
diff --git a/src/Controllers/ConsoleController/ConsoleController.hpp b/src/Controllers/ConsoleController/ConsoleController.hpp
new file mode 100644
index 0000000..6ce8df9
--- /dev/null
+++ b/src/Controllers/ConsoleController/ConsoleController.hpp
@@ -0,0 +1,26 @@
+#ifndef DEF_CTCONSOLE
+#define DEF_CTCONSOLE
+
+/* CTConsole.hpp
+ * Defines the class CTConsole
+ * CTConsole is a controller which displays a game in a terminal
+ * Creators : krilius, manzerbredes
+ * Date : 29/04/2915 */
+
+#include <iostream>
+#include "../../Helpers/Keyboard.hpp"
+#include "../../Model/Game.hpp"
+
+class ConsoleController
+{
+ private:
+
+ Game * m_game;
+ kbdh::Direction waitArrowKeyPress();
+ public:
+ ConsoleController();
+ ~ConsoleController();
+ void play();
+};
+
+#endif