GameScene.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. /********************************************************************
  2. * Nomes: Gabriel Capella Números USP: 8962078
  3. * João Herique Luciano 8535957
  4. *
  5. * Tarefa: RedCore - EP2 MAC0463
  6. * Arquivo: GameScene.h
  7. * Descrição: Classe do cenário e do mecanismo de jogo
  8. ********************************************************************/
  9. #ifndef GameScene_h
  10. #define GameScene_h
  11. #include "cocos2d.h"
  12. #include "GameScene/Paddle.h"
  13. class GameScene : public cocos2d::Layer {
  14. public:
  15. /**
  16. * @brief Cria a cena do jogo
  17. *
  18. * @param level - nível atual do jogo
  19. * @return - Ponteiro para objeto da cena do jogo
  20. */
  21. static cocos2d::Scene* createScene(int level);
  22. /**
  23. * @brief Inicializa essa classe
  24. *
  25. */
  26. virtual bool init();
  27. /**
  28. * @brief Processa o contato entre duas formas no jogo
  29. *
  30. * @param contact objeto representando o contato entre duas formas no cocos2d
  31. * @return Indicador de que houve colisão
  32. */
  33. bool onContactBegin(cocos2d::PhysicsContact& contact);
  34. /**
  35. * @brief Macro do cocos2d-x para criar um método create() para certa classe
  36. *
  37. * @param Nome da classe cujo método create() será criado
  38. */
  39. CREATE_FUNC(GameScene);
  40. /**
  41. * @brief configura o jogo para um certo nível
  42. *
  43. * @param level nível do jogo
  44. */
  45. void setLevel(int level);
  46. /**
  47. * @brief Mostra um(a) alerta/mensagem na tela do jogo
  48. *
  49. * @param text string contendo a mensagem a ser mostrada
  50. */
  51. void alert(std::string text); // Mostra alerta
  52. private:
  53. /**
  54. * @brief Caso de colisão entre a bola e a parte inferior da tela
  55. *
  56. * @param ball Nó representando a bola que colidiu com a parte inferior da tela
  57. */
  58. void caseBallCollision (cocos2d::Node *ball);
  59. /**
  60. * @brief Caso de colisão entre a bola e o núcleo
  61. *
  62. * @param core Nó da árvore que representa o núcleo
  63. * @param ball Nó da árvore que representa a bola
  64. */
  65. void caseBallCore (cocos2d::Node *core, cocos2d::Node *ball);
  66. /**
  67. * @brief Caso onde o usuário pegou o power-up de salvar o nível
  68. *
  69. * @param powerup_ball Nó que representa o power-up
  70. */
  71. void caseSaveLevel(Node *powerup_ball);
  72. /**
  73. * @brief Substitui a cena atual pela cena do próximo nível
  74. *
  75. */
  76. void nextLevel();
  77. /**
  78. * @brief Salva o nível atual
  79. */
  80. void saveLevel();
  81. /**
  82. * @brief Define a probabilidade de aparição e a geração do power
  83. * up das bolas triplas
  84. */
  85. void tripleBallsAppearance();
  86. /**
  87. * @brief Caso onde o usuário pegou o power-up de bolas triplas
  88. *
  89. * @param powerup_ball Nó que representa o power-up
  90. */
  91. void caseTripleBalls(Node *powerup_ball);
  92. /**
  93. * @brief Define a probabilidade de aparição e a geração
  94. * do power up de aumento/diminução da pá
  95. */
  96. void paddleBallAppearance();
  97. /**
  98. * @brief Caso onde o usuário pegou o power-up de
  99. * aumento/diminuição da pá
  100. *
  101. * @param powerup_ball Nó que representa o power-up
  102. */
  103. void casePaddleBall(Node *powerup_ball);
  104. /**
  105. * @brief Define a probabilidade de aparição e a geração
  106. * do power up da super-bola
  107. */
  108. void superBallAppearance();
  109. /**
  110. * @brief Caso onde o usuário pegou o power-up da super-bola
  111. *
  112. * @param powerup_ball Nó que representa o power-up
  113. */
  114. void caseSuperBall(Node *powerup_ball);
  115. /**
  116. * @brief Adiciona e joga uma nova bola na cena
  117. */
  118. void addAndThrowBall();
  119. /**
  120. * @brief Remove as bolas e os power-ups que estão na tela
  121. */
  122. void removeBallsAndPowersUP();
  123. /**
  124. * @brief Cria a bolinha que representa o power-up
  125. *
  126. * @param color Cor da bolinha
  127. * @param tag identificação da bolinha (usada no tratamento de colisões)
  128. */
  129. void createPowerUpBody(cocos2d::Color4B color, int tag);
  130. /**
  131. * @brief Cria um delay com callback que será usado na aparição dos
  132. * power-ups
  133. *
  134. * @param func função a ser chamada no callback
  135. */
  136. void delayCallback(const std::function<void ()> &func);
  137. /**
  138. * Nível atual
  139. */
  140. int level;
  141. /**
  142. * Indica se o jogo já acabou
  143. */
  144. bool over;
  145. /**
  146. * Ponteiro para a pá do jogo
  147. */
  148. Paddle * paddle;
  149. /**
  150. * Lista de bolas na cena
  151. */
  152. cocos2d::Node* balls;
  153. /**
  154. * Lista de power-ups na cena
  155. */
  156. cocos2d::Node* power_ups;
  157. /**
  158. * Tamanho da tela
  159. */
  160. double height, width; // tamanho do quadro
  161. /**
  162. * Última vez que a bola colidiu no jogo
  163. */
  164. unsigned long int last_touch;
  165. };
  166. #endif /* GameScene_h */