blob: 3e94883d3665111c9c5a935062d8ad1fd6de3048 (
plain)
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
|
#include "game.hpp"
#define EMPTY_CHAR ' '
#define WALL_CHAR '#'
#define CRATE_CHAR 'U'
#define PAYLOAD_CHAR '*'
#define MARIO_CHAR 'm'
#include <iostream>
Game::Game(std::string fmt)
{
size_t p;
m_height = std::count(fmt.begin(), fmt.end(), '\n');
m_grid = new Cell*[m_height];
m_width = fmt.find("\n");
for (int i = 0; (p = fmt.find("\n")) != std::string::npos; i++)
{
std::string token = fmt.substr(0, p);
m_grid[i] = new Cell[m_width];
for (size_t j = 0; j < token.size(); j++)
{
switch (token[j])
{
case EMPTY_CHAR:
m_grid[i][j] = CellEmpty;
break;
case WALL_CHAR:
m_grid[i][j] = CellWall;
break;
case CRATE_CHAR:
m_grid[i][j] = CellCrate;
break;
case PAYLOAD_CHAR:
m_grid[i][j] = CellPayload;
break;
case MARIO_CHAR:
m_playerPos.y = i;
m_playerPos.x = j;
break;
default:
exit(1);
}
}
fmt.erase(0, p + 1);
}
}
Game::~Game()
{
for (size_t i = 0; i < m_height; i++)
delete []m_grid[i];
delete []m_grid;
}
Game::Cell Game::get(int y, int x)
{
return m_grid[y][x];
}
size_t Game::getHeight()
{
return m_height;
}
size_t Game::getWidth()
{
return m_width;
}
|