-
Notifications
You must be signed in to change notification settings - Fork 0
/
World.cpp
85 lines (71 loc) · 2.05 KB
/
World.cpp
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
#include "World.h"
#include <iostream>
using namespace std;
World World::world;
vector<Powerups*> World::PUlist;
/**
* @brief Constructor of class World: initialices the walls and the pathmap.
*/
World::World(){
wallL.x = 0;
wallL.y = 0;
wallL.h = GAME_HEIGHT;
wallL.w = 10;
wallU.x = 0;
wallU.y = 0;
wallU.h = 10;
wallU.w = GAME_WIDTH - SCORE_WIDTH;
wallR.x = GAME_WIDTH - SCORE_WIDTH - 10;
wallR.y = 0;
wallR.h = GAME_HEIGHT;
wallR.w = 10;
wallD.x = 0;
wallD.y = GAME_HEIGHT - 10;
wallD.h = 10;
wallD.w = GAME_WIDTH - SCORE_WIDTH;
winner = false;
for(int i = 0; i < GAME_WIDTH; i++){
for (int j = 0; j < GAME_HEIGHT; j++){
pathmap[i][j] = false;
}
}
}
/**
* @brief addToPathMap: adds the player's coordinates to the pathmap and checks if a player passed over them.
* @param x, y: actual coordinates of the player.
* @param init_x, init_y: initial coordinates of the player, to check if the player started moving.
* @param prev_x, prev_y: previous coordinates of the player, the ones actually added to the pathmap.
* @param player: the player's id number.
*/
void World::addToPathMap(float x, float y, float init_x, float init_y, int prev_x, int prev_y, int player){
if(pathmap[(int)x][(int)y] == true){
Player* p = &SDL_Base::playerlist[player - 1];
p->killPlayer();
riseScore();
//delete[] p;
}
if(x =! init_x || y != init_y){
pathmap[prev_x][prev_y] = true;
}
}
/**
* @brief riseScore: increases the alive players' score when a player dies and decreases the alive count.
*/
void World::riseScore(){
for(int i = 0; i < MAX_PLAYERS; i++){
if(SDL_Base::playerlist[i].active && SDL_Base::playerlist[i].alive){
SDL_Base::playerlist[i].score++;
}
}
alivecount--;
}
/**
* @brief cleanPathMap: resets the pathmap.
*/
void World::cleanPathMap(){
for(int i = 0; i < GAME_WIDTH; i++){
for(int j = 0; j < GAME_HEIGHT; j++){
pathmap[i][j] = false;
}
}
}