-
Notifications
You must be signed in to change notification settings - Fork 0
/
mouse.h
84 lines (79 loc) · 2.63 KB
/
mouse.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
#pragma once
#include <string>
#include <vector>
#include <chrono>
#include <thread>
#include "sensor.h"
#include "applicationui.h"
#include "maze.h"
using namespace std;
/**
* \class Mouse
*
* \brief Klasa reprezentująca robota Micromouse
*
* Klasa przechowująca informacje na temat myszy
* poruszającej się w labiryncie. Pozwala na poruszanie się
* myszy po labiryncie, dodawanie sensorów do myszy a także
* zawiera implementację algorytmu przejścia labiryntu
* (aktualnie jest to algorytm prawej ręki).
*
* \note Klasa może być rozszerzona o inne algorytmy.
*
* \author Jakub Żurawski
*
*/
class Mouse {
int positionX; ///< pozycja myszy na osi X
int positionY; ///< pozycja myszy na osi Y
int rotation; ///< obrót myszy
vector<Sensor> sensors; ///< Wektor sensorów myszy
Maze mazeBoard; ///< Instancja labiryntu
ApplicationUI ui; ///< Instancja klasy odpowiedzialnej za wyświetlanie
/**
* \brief Metoda dodająca sensory
* \param offsetX liczba reprezentująca offset sensora na osi X
* \param offsetY liczba reprezentująca offset sensora na osi Y
* \param mazeBoard instancja labiryntu
*
* Metoda ta pozwala na dodanie sensorów do myszy,
* równocześnie pozwalając określić kierunek w którym
* sensory będą patrzeć poprzez offsety na osi X i Y.
*/
void addSensor(int offsetX, int offsetY);
/**
* \brief Metoda sprawdzająca wartość sensora sensora
* \param sensorNumber numer sensora
* \return Metoda zwraca true, gdy sensor widzi ścianę.
*
* Sprawdza wartość sensora zwracając true jeżeli
* sensor widzi scianę.
*/
bool checkSensor(int sensorNumber);
void moveForward(); ///< Ruch myszy w przód
void turnLeft(); ///< Skręt myszy w lewo
void turnRight(); ///< Skręt myszy w prawo
/**
* \brief Sprawdzenie końca wyjścia z labiryntu
* \return Metoda zwraca true gdy mysz doszła do końca labiryntu
*
* Metoda ta sprawdza czy mysz doszła do końca labiryntu.
*/
bool isOnFinish();
public:
/**
* \brief Konstruktor
* \param _mazeBoard instancja labiryntu
* \param _ui instancja klasy odpowiadającej za wyświetlanie
*
* Konstruktor tworzy instację myszy przekazując jej instancję
* labiryntu do rozwiązania oraz klasę wyświetlającą
*/
Mouse(Maze _mazeBoard, ApplicationUI _ui);
/**
* \brief Algorytm prawej ręki
*
* Rozpoczyna rozwiązywanie labiryntu metodą prawej ręki
*/
void solveRightHand();
};