Advertisement
swistusmen

GAME

May 21st, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 KB | None | 0 0
  1. //////BIBLIOTEKI GAME
  2. #ifndef GAME_HPP_INCLUDED
  3. #define GAME_HPP_INCLUDED
  4.  
  5.  
  6.  
  7.  
  8. #endif // GAME_HPP_INCLUDED
  9. #pragma once
  10. #include <iostream>
  11. #include <string>
  12. #include <SFML/Graphics.hpp>
  13. #include "Logic.hpp"
  14. #include "GameApliances.hpp"
  15.  
  16.  
  17. class Game{
  18. public:
  19. Game();
  20. void Run();
  21.  
  22. enum GameTribes{Play,Pause,Stepback,StepForward,Nothing,Menu,Closing,Silence};
  23.  
  24. private:
  25. void render();
  26. void update();
  27. void ProcessEvents();//pobiera zdarzenie
  28. void WhatToDo();//reaguje na zdarzenie
  29. GameTribes HandleButton(int, int);
  30.  
  31. Playground rozgrywka;
  32.  
  33. sf::RenderWindow appwindow;
  34. GameTribes Tryb;
  35. Taskbar PasekZadan;
  36. MenuPanel MainMenu;
  37. float FPSLimitter=20.f;
  38. void ChangeFPSLimit();
  39. };
  40. ////////////////////////////////////////////////////////////////////////////GAME .CPP
  41. #include <iostream>
  42. #include <string>
  43. #include <SFML/Graphics.hpp>
  44. #include "Game.hpp"
  45. #include "Logic.hpp"
  46. #include "GameApliances.hpp"
  47.  
  48. void Game::Run()
  49. {
  50. if(Tryb!=Game::Silence)
  51. {
  52. std::cout<<"Blad inicjalizacji!\n";
  53. exit(EXIT_FAILURE);
  54. }
  55. rozgrywka.LoadFromFileAndInitiate();
  56.  
  57. appwindow.create(sf::VideoMode(2000,1800,32),"okno");
  58. Tryb=GameTribes::Play;
  59.  
  60. sf::Clock timer;
  61. sf::Time TimeSinceLastUpdate;
  62. sf::Time DeltaTime= sf::seconds(1.f/FPSLimitter);
  63.  
  64. sf::Clock timer2;
  65. int licznik=0;
  66.  
  67. while(appwindow.isOpen())
  68. {
  69.  
  70. ProcessEvents();//ustala tryb gry
  71.  
  72. if(Tryb!=GameTribes::Pause)
  73. {
  74. if(timer2.getElapsedTime()>=sf::seconds(1.f))
  75. {
  76. timer2.restart();
  77. std::cout<<licznik<<std::endl;
  78. licznik=0;
  79. }
  80. TimeSinceLastUpdate+=timer.restart();
  81. if(TimeSinceLastUpdate> DeltaTime)
  82. {
  83. TimeSinceLastUpdate-=DeltaTime;
  84. rozgrywka.update(appwindow);
  85. PasekZadan.draw(appwindow);
  86. appwindow.display();
  87. appwindow.clear();
  88. rozgrywka.Hunting();
  89. rozgrywka.regenerate();
  90. licznik++;
  91. }
  92. }
  93.  
  94. WhatToDo(); //pierwotne po³o¿enie funkcji what to do
  95. }
  96. }
  97.  
  98. void Game::render()
  99. {
  100. appwindow.display();
  101. }
  102.  
  103. void Game::WhatToDo()
  104. {
  105. //dodac rozne mozliwe reakcje
  106. if(Tryb==GameTribes::Closing)
  107. {
  108. appwindow.close();
  109. exit(0);
  110. }
  111. else if (Tryb==GameTribes::StepForward)
  112. {
  113. Tryb=GameTribes::Pause;
  114. }
  115. else if (Tryb==GameTribes::Menu)
  116. {
  117. //FPSLimitter=static_cast<float> (MainMenu.Run(appwindow));
  118. void ChangeFPSLimit();
  119. }
  120. return;
  121. }
  122.  
  123. void Game::ChangeFPSLimit()
  124. {
  125. sf::Event evencik;
  126. float limit=10;
  127. float suma=0;
  128. while(appwindow.pollEvent(evencik))
  129. {
  130. if(evencik.type==sf::Event::KeyPressed)
  131. {
  132. switch(evencik.key.code){
  133. case sf::Keyboard::Num0:
  134. {
  135. limit/=10;
  136. }break;
  137. case sf::Keyboard::Num1:
  138. {
  139. suma+=limit*1;
  140. limit/=10;
  141. }break;
  142. case sf::Keyboard::Num2:
  143. {
  144. suma+=limit*2;
  145. limit/=10;
  146. }break;
  147. case sf::Keyboard::Num3:
  148. {
  149. suma+=limit*3;
  150. limit/=10;
  151. }break;
  152. case sf::Keyboard::Num4:
  153. {
  154. suma+=limit*4;
  155. limit/=10;
  156. }break;
  157. case sf::Keyboard::Num5:
  158. {
  159. suma+=limit*5;
  160. limit/=10;
  161. }break;
  162. case sf::Keyboard::Num6:
  163. {
  164. suma+=limit*6;
  165. limit/=10;
  166. }break;
  167. case sf::Keyboard::Num7:
  168. {
  169. suma+=limit*7;
  170. limit/=10;
  171. }break;
  172. case sf::Keyboard::Num8:
  173. {
  174. suma+=limit*8;
  175. limit/=10;
  176. }break;
  177. case sf::Keyboard::Num9:
  178. {
  179. suma+=limit*9;
  180. limit/=10;
  181. }break;
  182. default:
  183. {
  184. suma+=0;
  185. }break;
  186. }}
  187. if(limit<1)
  188. break;
  189. }
  190. FPSLimitter=suma;
  191. }
  192.  
  193. void Game::ProcessEvents()
  194. {
  195. sf::Event zdarzenie;
  196. while(appwindow.pollEvent(zdarzenie))
  197. {
  198. if(zdarzenie.type==sf::Event::Closed)
  199. {
  200. Tryb=GameTribes::Closing;
  201. }
  202. if(zdarzenie.type==sf::Event::MouseButtonPressed)
  203. {
  204. Tryb=HandleButton(zdarzenie.mouseButton.x,zdarzenie.mouseButton.y);
  205. }
  206. }
  207. }
  208.  
  209. Game::GameTribes Game::HandleButton(int x,int y)
  210. {
  211. //dodac opcje reagowania zaleznie od wcisnietego przycisku
  212. switch(PasekZadan.IsClicked(x,y))
  213. {
  214. /*case ButtonActions::Nothing:*/ case ButtonActions::Back:
  215. {
  216. return GameTribes::Closing;
  217. }break;
  218. case ButtonActions::Other:
  219. {
  220. return GameTribes::Menu;
  221. }break;
  222. case ButtonActions::Play:
  223. {
  224. if(Tryb==GameTribes::Pause)
  225. return GameTribes::Play;
  226. else
  227. return GameTribes::Pause;
  228. }break;
  229. case ButtonActions::Forward:
  230. {
  231. return GameTribes::StepForward;
  232. }break;
  233. }
  234. return GameTribes::Play;
  235. }
  236.  
  237. void Game::update()
  238. {
  239. rozgrywka.Hunt();
  240. //rozgrywka.Hunting();
  241. //rozgrywka.regenerate();
  242. //rozgrywka.draw(appwindow);
  243. rozgrywka.update(appwindow);
  244. PasekZadan.update(7);
  245. }
  246.  
  247. Game::Game():rozgrywka()
  248. {
  249. Tryb=Game::Silence;
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement