-
Notifications
You must be signed in to change notification settings - Fork 0
/
objects.h
57 lines (48 loc) · 1.37 KB
/
objects.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
#pragma once
#include <iostream>
#include <deque>
#include "game.h"
namespace objects {
class Snake {
private:
const int map_side_length;
int direction; // Integer -- left: 68, right: 67, up: 65, down: 66
int head_location;
std::deque<int> locations;
void update_head_location();
public:
Snake(int map_side_length);
bool is_alive;
bool is_at_location(int location);
std::deque<int> get_locations();
void update_direction(char direction_input);
void update_location(bool grow_this_round);
};
class Egg {
private:
const int map_side_length;
int location;
int new_location;
bool is_valid_new_location;
public:
Egg(int map_side_length);
int get_location();
void update_location(Snake snake);
};
class Map {
private:
const int map_side_length;
const std::string solid_block = "\u2588\u2588";
const std::string shade_block = "\u2593\u2593";
const std::string egg_block = "()";
const std::string space = " ";
std::deque<int> snake_locations;
int egg_location;
std::string map_string; // Contains what is at each grid location
void update_map_string(Snake snake, Egg egg);
void render_horizontal_edge();
public:
Map(int map_side_length);
void render(Snake snake, Egg egg);
};
}