-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmarker.c
61 lines (48 loc) · 996 Bytes
/
marker.c
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
#include "marker.h"
#include "position.h"
#include "allocations.h"
#include <stdlib.h>
#include <stdbool.h>
// Static type definitions.
struct Marker
{
Position position;
bool isPlaced;
bool isHome;
};
// End of static type definitions.
// Utilities.
Marker *initialiseMarker(Position initialPosition, bool isHome)
{
Marker *marker = (Marker *)checkedMalloc(sizeof(Marker), "Marker");
marker->position = initialPosition;
marker->isPlaced = true;
marker->isHome = isHome;
return marker;
}
void deallocateMarker(Marker *marker)
{
free(marker);
}
Position getMarkerPosition(Marker *marker)
{
return marker->position;
}
void pickUp(Marker *marker)
{
marker->isPlaced = false;
}
void drop(Marker *marker, Position position)
{
marker->position = position;
marker->isPlaced = true;
}
bool isPlacedMarker(Marker *marker)
{
return marker->isPlaced;
}
bool isHomeMarker(Marker *marker)
{
return marker->isHome;
}
// End of utilities.