-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGame.h
111 lines (90 loc) · 2.11 KB
/
Game.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#pragma once
#include <SFML/Graphics.hpp>
#include <deque>
class Game
{
typedef sf::Vector2 <short int> Vector2s;
private:
// GENERAL
short int N = 25, M = 25;
sf::RenderWindow *window = NULL;
std::string title = "Snake 2.2";
// Font
sf::Font font;
// Colors
sf::Color bgColor;
sf::Color pointColor;
sf::Color snakeColor;
sf::Color snakeColorSecond;
sf::Color foodColor;
// Game
std::deque <Vector2s> snake;
std::deque <Vector2s> food;
Vector2s movement;
Vector2s lastMovement;
// Statistics
short int highscore;
short int score;
// FPS time
sf::Clock clock;
// Count Game Time
sf::Clock clockGameTime;
sf::Time gameTime = sf::milliseconds(0);
// Button delay
sf::Clock clockButton;
// Food respawn speed
sf::Clock clockFoodRespawn;
sf::Time timeFoodRespawn = sf::milliseconds(0);
short int respawnTime = 7; /*in seconds*/
// Game status
enum GameStatus { MENU, GAME, GAMEOVER, CHARACTERS, PAUSE, EXIT, };
GameStatus status;
// Events
enum Bonus { NONE, COLORIZE_BOARD, REVERSE_CONTROL, BONUSFOOD };
Bonus bonus = NONE;
Bonus chanceBonus = NONE;
sf::Clock clockBonus;
short int bonusTime = 4;
sf::Clock clockBoard;
// Faces
struct Character { sf::Image *img = NULL; unsigned int size; sf::Color *palette = NULL; std::wstring motto = L""; };
int I = -1;
Character characters[18];
sf::Texture imgTxt;
sf::Sprite *imgSpr;
// Color palette
sf::Color defaultPalette[2];
protected:
// GENERAL
float scaleX = 0;
float scaleY = 0;
// Game Control
int getSpeed();
void gameRestart();
void countGameTime();
void updateFoodTime();
void eaten();
bool eatenYourself(Vector2s);
void changeMovement();
void drawSnake();
void drawFood();
void drawBoard();
// Events
void drawBoardBonus();
// Menus
void showMenu();
void showCharactersMenu();
void showPause();
void showGameOver();
// HUD
void showScore();
void showGameTime();
void showFoodTime();
void showBonusTime();
public:
Game(sf::RenderWindow *);
// Control
void update();
void display();
~Game();
};