blob: 503423ef5563f7f4829235b9edbef6631b1d0ce1 (
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
|
#pragma once
#include <vector>
#include <forward_list>
#include "XY.h"
class Museum;
class Canvas;
class Pathfinder {
public:
typedef std::forward_list<XY> Path;
public:
Pathfinder(Museum &);
virtual void find_between(const XY &, const XY &) = 0;
virtual bool is_visited(const XY &);
virtual bool is_solution(const XY &);
virtual bool is_solved() { return this->solved; }
virtual const Path & get_solution() { return this->path; }
protected:
virtual void clear();
virtual void set_visited(const XY &);
virtual void set_solved(const Path &);
private:
size_t pos_to_idx(const XY &);
std::vector<bool> visisted;
std::vector<bool> solution;
Path path;
bool solved = false;
protected:
Museum & museum;
};
|