Advertisement
Guest User

game.h

a guest
Jan 27th, 2020
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1. #ifndef GAME_H
  2. #define GAME_H
  3.  
  4. #include "SDL.h"
  5. #include "SDL_ttf.h"
  6. #include "SDL_image.h"
  7. #include "Board.h"
  8. #include "Scoreboard.h"
  9. #include <iostream>
  10. #include <stdio.h>
  11.  
  12. class Game {
  13.     bool running;
  14.     int boardOffset = 20;
  15.     SDL_Window* window;
  16.     SDL_Renderer* renderer;
  17.     Board* board;
  18.     Scoreboard* scoreboard;
  19. public:
  20.     Game();
  21.     ~Game();
  22.     void handleEvents();
  23.     void update();
  24.     void render();
  25.     void mousePress(SDL_MouseButtonEvent& b);
  26.     bool isRunning();
  27.     void clean();
  28. };
  29.  
  30. Game::Game() : running(true) {
  31.     window = SDL_CreateWindow("Game", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 412, SDL_WINDOW_SHOWN);
  32.  
  33.     renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
  34.     TTF_Init();
  35.  
  36.     SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
  37.  
  38.     board = new Board(4, 4 , boardOffset, renderer);
  39.     board->init();
  40.  
  41.     scoreboard = new Scoreboard(renderer);
  42.     scoreboard->renderScoreboard();
  43. }
  44.  
  45.  
  46.  
  47. Game::~Game() {
  48.     delete board;
  49.     delete scoreboard;
  50. }
  51.  
  52. void Game::update() {
  53.    
  54.     if (board->getPieceCounter() < 2) {
  55.  
  56.     }
  57.     else {
  58.         bool result = board->decision();
  59.        
  60.         if (result == true && scoreboard->getPlayerOne() == true) {
  61.             scoreboard->updateScoreOne();
  62.         }
  63.         else if (result == true && scoreboard->getPlayerOne() == false) {
  64.             scoreboard->updateScoreTwo();
  65.         }
  66.  
  67.         if (scoreboard->getPlayerOne() == true) {
  68.             scoreboard->setPlayerOne(false);
  69.         }
  70.         else {
  71.             scoreboard->setPlayerOne(true);
  72.         }
  73.     }
  74.     if (board->isOver()) {
  75.         running = false;
  76.     }
  77.  
  78.     render();
  79. }
  80.  
  81. void Game::handleEvents() {
  82.     SDL_Event e;
  83.     while (SDL_PollEvent(&e)) {
  84.         switch (e.type) {
  85.         case SDL_QUIT:
  86.             running = false;
  87.             break;
  88.         case SDL_MOUSEBUTTONDOWN:
  89.             mousePress(e.button);
  90.             break;
  91.  
  92.         }
  93.     }
  94. }
  95.  
  96. void Game::mousePress(SDL_MouseButtonEvent& event) {
  97.     int mouseX = event.x;
  98.     int mouseY = event.y;
  99.     if (event.button == SDL_BUTTON_LEFT) {
  100.         board->click(mouseX - boardOffset, mouseY - boardOffset);
  101.     }
  102.     render();
  103. }
  104.  
  105.  
  106. void Game::render() {
  107.     SDL_RenderClear(renderer);
  108.  
  109.     if (running) {
  110.         board->renderBoard();
  111.         scoreboard->renderScoreboard();
  112.     }
  113.     else {
  114.         scoreboard->renderGameOver();
  115.     }
  116.    
  117.     SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
  118.     SDL_RenderPresent(renderer);
  119. }
  120.  
  121.  
  122. bool Game::isRunning() {
  123.     return running;
  124. }
  125.  
  126. void Game::clean() {
  127.     SDL_Delay(5000);
  128.     SDL_DestroyWindow(window);
  129.     SDL_DestroyRenderer(renderer);
  130.     SDL_Quit();
  131. }
  132.  
  133. #endif // GAME_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement