/
wallCheckingStates.py
53 lines (50 loc) · 1.98 KB
/
wallCheckingStates.py
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
"""
States for wall detection. This is only used in new method (i.e. typeBasedMove)
Transitions:
AllWall -> BackHalfWall -> AllNonWall -> FrontHalfWall -> AllWall
"""
import _warnings
class WallCheckingStates_AllWall:
def __init__(self, dirCount=0):
self.dirCount=dirCount
def nextState(self, frontValue, backValue):
if frontValue==1 and backValue==1:
return self
elif frontValue==0 and backValue==1:
return WallCheckingStates_BackHalfWall(self.dirCount)
else:
_warnings.warn('In State WallCheckingStates_Wall: Invalid state transitions ', frontValue, ' ',backValue)
return self
class WallCheckingStates_BackHalfWall:
def __init__(self):
pass
def nextState(self, frontValue, backValue):
if frontValue==0 and backValue==1:
return self
elif frontValue==0 and backValue==0:
return WallCheckingStates_AllNonWall(self.dirCount+1)
else:
_warnings.warn('In State WallCheckingStates_FrontHalf: Invalid state transitions ', frontValue, ' ',backValue)
return self
class WallCheckingStates_AllNonWall:
def __init__(self):
pass
def nextState(self, frontValue, backValue):
if frontValue==0 and backValue==0:
return self
elif frontValue==1 and backValue==0:
return WallCheckingStates_FrontHalfWall(self.dirCount)
else:
_warnings.warn('In State WallCheckingStates_NonWall: Invalid state transitions ', frontValue, ' ',backValue)
return self
class WallCheckingStates_FrontHalfWall:
def __init__(self):
pass
def nextState(self, frontValue, backValue):
if frontValue==1 and backValue==0:
return self
elif frontValue==1 and backValue==0:
return WallCheckingStates_AllWall(self.dirCount)
else:
_warnings.warn('In State WALL: Invalid state transitions ', frontValue, ' ',backValue)
return self