image_recognition #5
@ -14,23 +14,22 @@ class Search:
|
|||||||
x = state[0]
|
x = state[0]
|
||||||
y = state[1]
|
y = state[1]
|
||||||
angle = state[2]
|
angle = state[2]
|
||||||
angles = {0: 'UP', 90: 'RIGHT', 270: 'LEFT', 180: 'DOWN'}
|
match(angle):
|
||||||
match(angles[angle]):
|
|
||||||
case 'UP':
|
case 'UP':
|
||||||
possible = [['left', x, y, 270], ['right', x, y, 90]]
|
possible = [['left', x, y, 'LEFT'], ['right', x, y, 'RIGHT']]
|
||||||
if y != 0: possible.append(['move', x, y - self.cell_size, 0])
|
if y != 0: possible.append(['move', x, y - self.cell_size, 'UP'])
|
||||||
return possible
|
return possible
|
||||||
case 'RIGHT':
|
case 'RIGHT':
|
||||||
possible = [['left', x, y, 0], ['right', x, y, 180]]
|
possible = [['left', x, y, 'UP'], ['right', x, y, 'DOWN']]
|
||||||
if x != self.cell_size*(self.cell_number-1): possible.append(['move', x + self.cell_size, y, 90])
|
if x != self.cell_size*(self.cell_number-1): possible.append(['move', x + self.cell_size, y, 'RIGHT'])
|
||||||
return possible
|
return possible
|
||||||
case 'DOWN':
|
case 'DOWN':
|
||||||
possible = [['left', x, y, 90], ['right', x, y, 270]]
|
possible = [['left', x, y, 'RIGHT'], ['right', x, y, 'LEFT']]
|
||||||
if y != self.cell_size*(self.cell_number-1): possible.append(['move', x, y + self.cell_size, 180])
|
if y != self.cell_size*(self.cell_number-1): possible.append(['move', x, y + self.cell_size, 'DOWN'])
|
||||||
return possible
|
return possible
|
||||||
case 'LEFT':
|
case 'LEFT':
|
||||||
possible = [['left', x, y, 180], ['right', x, y, 0]]
|
possible = [['left', x, y, 'DOWN'], ['right', x, y, 'UP']]
|
||||||
if x != 0: possible.append(['move', x - self.cell_size, y, 270])
|
if x != 0: possible.append(['move', x - self.cell_size, y, 'LEFT'])
|
||||||
return possible
|
return possible
|
||||||
|
|
||||||
def graphsearch(self, istate, goaltest):
|
def graphsearch(self, istate, goaltest):
|
||||||
@ -54,7 +53,7 @@ class Search:
|
|||||||
# print(elem.state[0], elem.state[1], elem.state[2])
|
# print(elem.state[0], elem.state[1], elem.state[2])
|
||||||
if elem.state[0] == goaltest[0] and elem.state[1] == goaltest[1]: # checks if we reached the given point
|
if elem.state[0] == goaltest[0] and elem.state[1] == goaltest[1]: # checks if we reached the given point
|
||||||
steps = []
|
steps = []
|
||||||
while elem.parent != '':
|
while elem.parent:
|
||||||
steps.append([elem.action, elem.state[0], elem.state[1]]) # should return only elem.action in prod
|
steps.append([elem.action, elem.state[0], elem.state[1]]) # should return only elem.action in prod
|
||||||
elem = elem.parent
|
elem = elem.parent
|
||||||
|
|
||||||
|
4
main.py
4
main.py
@ -98,8 +98,10 @@ class Game:
|
|||||||
random_x = random.randrange(0, self.cell_number * self.cell_size, 50)
|
random_x = random.randrange(0, self.cell_number * self.cell_size, 50)
|
||||||
random_y = random.randrange(0, self.cell_number * self.cell_size, 50)
|
random_y = random.randrange(0, self.cell_number * self.cell_size, 50)
|
||||||
print("Generated target: ",random_x, random_y)
|
print("Generated target: ",random_x, random_y)
|
||||||
|
# below line should be later moved into tractor.py
|
||||||
|
angles = {0: 'UP', 90: 'RIGHT', 270: 'LEFT', 180: 'DOWN'}
|
||||||
tractor_next_moves = graph_search_object.graphsearch(
|
tractor_next_moves = graph_search_object.graphsearch(
|
||||||
[self.tractor.x, self.tractor.y, self.tractor.angle], [random_x, random_y])
|
[self.tractor.x, self.tractor.y, angles[self.tractor.angle]], [random_x, random_y])
|
||||||
else:
|
else:
|
||||||
self.tractor.move(tractor_next_moves.pop(0)[0], self.cell_size, self.cell_number)
|
self.tractor.move(tractor_next_moves.pop(0)[0], self.cell_size, self.cell_number)
|
||||||
elif event.type == QUIT:
|
elif event.type == QUIT:
|
||||||
|
16
tractor.py
16
tractor.py
@ -31,22 +31,6 @@ class Tractor:
|
|||||||
|
|
||||||
|
|
||||||
def move(self, direction, cell_size, cell_number):
|
def move(self, direction, cell_size, cell_number):
|
||||||
# if direction == 'up':
|
|
||||||
# if self.y != 0:
|
|
||||||
# self.y -= cell_size
|
|
||||||
# self.image = self.up
|
|
||||||
# if direction == 'down':
|
|
||||||
# if self.y != (cell_number-1)*cell_size:
|
|
||||||
# self.y += cell_size
|
|
||||||
# self.image = self.down
|
|
||||||
# if direction == 'left':
|
|
||||||
# if self.x != 0:
|
|
||||||
# self.x -= cell_size
|
|
||||||
# self.image = self.left
|
|
||||||
# if direction == 'right':
|
|
||||||
# if self.x != (cell_number-1)*cell_size:
|
|
||||||
# self.x += cell_size
|
|
||||||
# self.image = self.right
|
|
||||||
if direction == 'move':
|
if direction == 'move':
|
||||||
if self.angle == 0 and self.y != 0:
|
if self.angle == 0 and self.y != 0:
|
||||||
self.y -= cell_size
|
self.y -= cell_size
|
||||||
|
Loading…
Reference in New Issue
Block a user