2020-04-27 21:56:17 +02:00
|
|
|
import secrets
|
2020-05-22 00:32:20 +02:00
|
|
|
import sys
|
2020-04-06 22:10:21 +02:00
|
|
|
|
2020-05-27 09:13:23 +02:00
|
|
|
from random import randrange
|
2020-05-19 18:19:34 +02:00
|
|
|
from src.decisionTree import *
|
2020-05-24 23:29:17 +02:00
|
|
|
|
|
|
|
from src.SubprojectMaksymilianKierski.PlateRecognition import use_model_to_predict, text_speech
|
2020-04-06 22:10:21 +02:00
|
|
|
|
2020-05-27 09:13:23 +02:00
|
|
|
# Marcin Dobrowolski
|
|
|
|
from src.SubprojectMarcinDobrowolski.suggestionDecisionTree import *
|
|
|
|
from src.SubprojectMarcinDobrowolski.utility import generateTestData, generateTestExample
|
|
|
|
|
2020-04-06 22:10:21 +02:00
|
|
|
if __name__ == "__main__":
|
|
|
|
# SETUP
|
|
|
|
pygame.init()
|
|
|
|
clock = pygame.time.Clock()
|
|
|
|
graphics = Graphics()
|
|
|
|
waiter = Waiter(graphics)
|
2020-05-19 18:28:40 +02:00
|
|
|
tree = DecisionTree()
|
2020-04-06 22:10:21 +02:00
|
|
|
|
2020-05-27 09:13:23 +02:00
|
|
|
# Init functions
|
2020-04-06 22:10:21 +02:00
|
|
|
graphics.drawBackground(waiter.matrix)
|
2020-04-29 11:12:18 +02:00
|
|
|
graphics.update(waiter)
|
2020-04-06 22:10:21 +02:00
|
|
|
|
2020-05-27 09:13:23 +02:00
|
|
|
# AStar
|
2020-04-27 21:56:17 +02:00
|
|
|
goal = None
|
2020-04-29 11:12:18 +02:00
|
|
|
path = ''
|
2020-05-24 23:29:17 +02:00
|
|
|
|
2020-05-27 09:13:23 +02:00
|
|
|
# Marcin Dobrowolski
|
|
|
|
suggestionTreeRoot = SuggestionTree.buildTree(trainingData)
|
|
|
|
|
2020-05-26 15:02:34 +02:00
|
|
|
# Maksymilian
|
2020-05-25 14:59:50 +02:00
|
|
|
go = 0
|
2020-05-26 15:02:34 +02:00
|
|
|
rand = 0
|
2020-04-06 22:10:21 +02:00
|
|
|
while True:
|
2020-05-13 09:22:12 +02:00
|
|
|
|
2020-04-06 22:10:21 +02:00
|
|
|
for event in pygame.event.get():
|
2020-05-13 09:22:12 +02:00
|
|
|
# rabbit.check(waiter.matrix, waiter.X, waiter.Y)
|
2020-04-06 22:10:21 +02:00
|
|
|
if event.type == pygame.QUIT:
|
|
|
|
pygame.quit()
|
|
|
|
sys.exit()
|
|
|
|
break
|
|
|
|
|
|
|
|
if event.type == pygame.KEYDOWN:
|
|
|
|
if event.key == pygame.K_ESCAPE:
|
|
|
|
pygame.quit()
|
|
|
|
sys.exit()
|
|
|
|
break
|
2020-05-22 00:32:20 +02:00
|
|
|
|
2020-05-19 18:19:34 +02:00
|
|
|
if event.key == pygame.K_s:
|
2020-05-22 00:32:20 +02:00
|
|
|
tree.TasksList('check', [10, 3])
|
|
|
|
tree.TasksList('eat', [5, 12])
|
|
|
|
tree.TasksList('order', [12, 4])
|
|
|
|
tree.TasksList('goToBar', [10, 10])
|
|
|
|
tree.TasksList('check', [3, 4])
|
|
|
|
tree.TasksList('eat', [10, 5])
|
2020-05-19 18:19:34 +02:00
|
|
|
tree.print()
|
2020-04-06 22:10:21 +02:00
|
|
|
|
2020-05-22 00:32:20 +02:00
|
|
|
if event.key == pygame.K_m:
|
2020-05-24 23:29:17 +02:00
|
|
|
|
2020-05-27 09:13:23 +02:00
|
|
|
tabPos = [[1, 2], [1, 5], [1, 8], [5, 4], [5, 8],
|
|
|
|
[8, 2], [8, 5], [8, 8], [12, 3], [12, 7]]
|
2020-05-22 00:32:20 +02:00
|
|
|
|
2020-05-25 14:59:50 +02:00
|
|
|
if not [waiter.X, waiter.Y] in tabPos or go == 0:
|
|
|
|
if [waiter.X, waiter.Y] in tabPos:
|
|
|
|
model = 'waiter_' + waiter.direction
|
|
|
|
graphics.clear(waiter.X, waiter.Y - 1)
|
2020-05-26 15:02:34 +02:00
|
|
|
rand = randrange(9)
|
2020-05-25 14:59:50 +02:00
|
|
|
x = tabPos[rand][0]
|
|
|
|
y = tabPos[rand][1]
|
2020-05-22 00:32:20 +02:00
|
|
|
|
|
|
|
goal = (x, y)
|
|
|
|
path = waiter.findPath(goal)
|
|
|
|
path = waiter.translatePath(path)
|
2020-05-25 14:59:50 +02:00
|
|
|
|
|
|
|
go = 1
|
2020-05-22 00:32:20 +02:00
|
|
|
else:
|
2020-05-25 14:59:50 +02:00
|
|
|
predict = use_model_to_predict('test-{}'.format(rand))
|
|
|
|
|
2020-05-24 23:29:17 +02:00
|
|
|
if predict == 1:
|
2020-05-25 14:59:50 +02:00
|
|
|
predict = 'EMPTY'
|
2020-05-24 23:29:17 +02:00
|
|
|
else:
|
2020-05-25 14:59:50 +02:00
|
|
|
predict = 'FOOD'
|
2020-05-22 00:32:20 +02:00
|
|
|
|
2020-05-25 14:59:50 +02:00
|
|
|
text_speech('arialnarrow.ttf', 25, predict, (255, 255, 255), (0, 128, 0),
|
|
|
|
(waiter.X * 50 + 25), (waiter.Y * 50 - 25), False, False, screen=graphics.screen)
|
|
|
|
pygame.display.flip()
|
|
|
|
go = 0
|
2020-05-27 09:13:23 +02:00
|
|
|
|
|
|
|
# Marcin Dobrowolski
|
|
|
|
if event.key == pygame.K_0:
|
|
|
|
generateTestData('testData.csv', 100)
|
|
|
|
testData = []
|
|
|
|
with open('src/SubprojectMarcinDobrowolski/Data/testData.csv') as csv_file:
|
|
|
|
csvReader = csv.reader(csv_file, delimiter=',')
|
|
|
|
lineCount = 0
|
|
|
|
|
|
|
|
for row in csvReader:
|
|
|
|
example = []
|
|
|
|
for column in row:
|
|
|
|
if column.isdigit():
|
|
|
|
example.append(int(column))
|
|
|
|
else:
|
|
|
|
example.append(column)
|
|
|
|
if lineCount > 0:
|
|
|
|
testData.append(example)
|
|
|
|
lineCount += 1
|
|
|
|
|
|
|
|
print('Processed lines: ', lineCount)
|
|
|
|
|
|
|
|
print('Test examples predictions:')
|
|
|
|
for example in testData:
|
|
|
|
print('{} - {}'.format(example, SuggestionTree.classify(
|
|
|
|
example, suggestionTreeRoot).printLeaf()))
|
|
|
|
|
|
|
|
# Marcin Dobrowolski
|
|
|
|
if event.key == pygame.K_1:
|
|
|
|
example = generateTestExample()
|
|
|
|
|
|
|
|
print('Test example prediction: ')
|
|
|
|
print('{} - {}'.format(example, SuggestionTree.classify(
|
|
|
|
example, suggestionTreeRoot).printLeaf()))
|
|
|
|
|
|
|
|
# Marcin Dobrowolski
|
|
|
|
if event.key == pygame.K_2:
|
|
|
|
SuggestionTree.printTree(suggestionTreeRoot)
|
|
|
|
|
|
|
|
# AStar
|
2020-04-27 21:56:17 +02:00
|
|
|
if event.key == pygame.K_r:
|
|
|
|
temp = False
|
|
|
|
while not temp:
|
|
|
|
x = secrets.randbelow(graphics.width)
|
|
|
|
y = secrets.randbelow(graphics.height)
|
2020-05-22 00:32:20 +02:00
|
|
|
print(x, y)
|
2020-04-27 21:56:17 +02:00
|
|
|
|
|
|
|
if waiter.matrix.matrix[x][y].walk_through == 1:
|
|
|
|
temp = True
|
|
|
|
|
|
|
|
goal = (x, y)
|
|
|
|
path = waiter.findPath(goal)
|
2020-04-29 11:12:18 +02:00
|
|
|
path = waiter.translatePath(path)
|
2020-04-27 21:56:17 +02:00
|
|
|
|
2020-05-27 09:13:23 +02:00
|
|
|
# AStar
|
2020-04-29 11:12:18 +02:00
|
|
|
if path != '':
|
|
|
|
nextStep = path[0]
|
|
|
|
path = path[1:]
|
2020-04-28 18:56:50 +02:00
|
|
|
waiter.travel(nextStep, graphics)
|
|
|
|
|
2020-04-06 22:10:21 +02:00
|
|
|
pygame.display.flip()
|
2020-05-13 09:22:12 +02:00
|
|
|
clock.tick(graphics.fps)
|