Advertisement
Guest User

scoreboard.h

a guest
Jan 27th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.05 KB | None | 0 0
  1. #ifndef SCOREBOARD_H
  2. #define SCOREBOARD_H
  3.  
  4. #include "SDL.h"
  5. #include "SDL_ttf.h"
  6. #include "SDL_image.h"
  7. #include <iostream>
  8. #include <stdio.h>
  9. #include <sstream>
  10.  
  11. class Scoreboard {
  12.     int playerOneScore;
  13.     int playerTwoScore;
  14.     int result;
  15.     bool playerOne;
  16.     SDL_Renderer* renderer;
  17. public:
  18.     Scoreboard(SDL_Renderer* r);
  19.     ~Scoreboard();
  20.     void renderScoreboard();
  21.     void renderGameOver();
  22.     void updateScoreOne();
  23.     void updateScoreTwo();
  24.     void renderMessage(int x, int y, int w, int h, const char* text, SDL_Renderer* renderer);
  25.     void setPlayerOne(bool SPO);
  26.     bool getPlayerOne();
  27.     int countDigit(int score);
  28.     const char* resultMsg();
  29. };
  30.  
  31. Scoreboard::Scoreboard(SDL_Renderer* r) : playerOneScore(0), playerTwoScore(0), playerOne(true), result(0), renderer(r) {
  32.    
  33. }
  34.  
  35. Scoreboard::~Scoreboard() {
  36.  
  37. }
  38.  
  39. void Scoreboard::renderScoreboard() {
  40.     renderMessage(405, 15, 100, 40, "Player 1", renderer);
  41.     renderMessage(530, 15, 100, 40, "Player 2", renderer);
  42.  
  43.     if (countDigit(playerOneScore) > 1) {
  44.         renderMessage(435, 50, 30, 40, std::to_string(playerOneScore).c_str(), renderer);
  45.     }
  46.     else {
  47.         renderMessage(445, 50, 15, 40, std::to_string(playerOneScore).c_str(), renderer);
  48.     }
  49.  
  50.     if (countDigit(playerTwoScore) > 1) {
  51.         renderMessage(560, 50, 30, 40, std::to_string(playerTwoScore).c_str(), renderer);
  52.     }
  53.     else {
  54.         renderMessage(570, 50, 15, 40, std::to_string(playerTwoScore).c_str(), renderer);
  55.     }
  56.  
  57.     renderMessage(445, 170, 150, 40, "Now Playing:", renderer);
  58.     if (playerOne == true) {
  59.         renderMessage(475, 210, 100, 40, "Player 1", renderer);
  60.     }
  61.     else {
  62.         renderMessage(475, 210, 100, 40, "Player 2", renderer);
  63.     }
  64. }
  65.  
  66. void Scoreboard::renderGameOver() {
  67.     renderMessage(270, 100, 100, 40, "Game over", renderer);
  68.     renderMessage(245, 200, 150, 40, resultMsg(), renderer);
  69. }
  70.  
  71. void Scoreboard::updateScoreOne() {
  72.     playerOneScore++;
  73. }
  74.  
  75. void Scoreboard::updateScoreTwo() {
  76.     playerTwoScore++;
  77. }
  78.  
  79. void Scoreboard::renderMessage(int x, int y, int w, int h, const char* text, SDL_Renderer* renderer) {
  80.     TTF_Font* Sans = TTF_OpenFont("Readable9x4.ttf", 15);
  81.  
  82.     SDL_Color   White = { 255, 255, 255 };
  83.  
  84.     SDL_Surface* surfaceMessage = TTF_RenderText_Solid(Sans, text, White);
  85.  
  86.     SDL_Texture* Message = SDL_CreateTextureFromSurface(renderer, surfaceMessage);
  87.  
  88.     SDL_Rect Message_rect;
  89.     Message_rect.x = x;
  90.     Message_rect.y = y;
  91.     Message_rect.w = w;
  92.     Message_rect.h = h;
  93.  
  94.     SDL_RenderCopy(renderer, Message, NULL, &Message_rect);
  95.     //SDL_RenderPresent(renderer);
  96.     SDL_FreeSurface(surfaceMessage);
  97.     //SDL_DestroyTexture(Message);
  98. }
  99.  
  100. void Scoreboard::setPlayerOne(bool SPO) {
  101.     playerOne = SPO;
  102. }
  103.  
  104. bool Scoreboard::getPlayerOne() {
  105.     return playerOne;
  106. }
  107.  
  108. const char* Scoreboard::resultMsg() {
  109.     if (playerOneScore == playerTwoScore) {
  110.         return "It's a draw!";
  111.     }
  112.     else if (playerOneScore > playerTwoScore) {
  113.         return "Player 1 won!";
  114.     }
  115.     else {
  116.         return "Player 2 won!";
  117.     }
  118. }
  119.  
  120. int Scoreboard::countDigit(int score){
  121.     int count = 0;
  122.     while (score != 0) {
  123.         score = score / 10;
  124.         ++count;
  125.     }
  126.     return count;
  127. }
  128.  
  129.  
  130. #endif // SCOREBOARD_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement