Sztuczna_Inteligencja_2020/main.py

174 lines
5.9 KiB
Python
Raw Normal View History

2020-04-27 21:56:17 +02:00
import secrets
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 *
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-06-05 14:18:45 +02:00
#Dominik
check = 0
queue = []
2020-05-27 09:13:23 +02:00
# Marcin Dobrowolski
suggestionTreeRoot = SuggestionTree.buildTree(trainingData)
2020-05-26 15:02:34 +02:00
# Maksymilian
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-19 18:19:34 +02:00
if event.key == pygame.K_s:
2020-06-05 14:18:45 +02:00
tree.TasksList('check', [2,3])
tree.TasksList('eat', [9, 6])
tree.TasksList('order', [4, 8])
tree.TasksList('goToBar', [11, 4])
tree.TasksList('check', [2, 9])
tree.TasksList('eat', [1, 1])
queue = tree.ReturnQueueList()
2020-05-19 18:19:34 +02:00
tree.print()
2020-06-05 14:18:45 +02:00
check = 1
2020-04-06 22:10:21 +02:00
if event.key == pygame.K_m:
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]]
if not [waiter.X, waiter.Y] in tabPos or go == 0:
if [waiter.X, waiter.Y] in tabPos:
model = 'waiter_' + waiter.direction
2020-05-26 18:36:02 +02:00
for x in range(-1, 2):
waiterX = waiter.X + (x * 0.1)
2020-05-26 18:36:02 +02:00
print(waiterX)
graphics.clear(waiterX, waiter.Y - 1)
2020-05-26 15:02:34 +02:00
rand = randrange(9)
x = tabPos[rand][0]
y = tabPos[rand][1]
goal = (x, y)
path = waiter.findPath(goal)
path = waiter.translatePath(path)
go = 1
else:
predict = use_model_to_predict('test-{}'.format(rand))
if predict == 1:
predict = 'EMPTY'
else:
predict = 'FOOD'
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)
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-06-05 14:18:45 +02:00
# Dominik
if check == 1:
task = queue.pop(0)
goal = (task[2][0], task[2][1])
print(goal)
path = waiter.findPath(goal)
print(path)
path = waiter.translatePath(path)
print(path)
check = 0
if len(queue) != 0 and check == 0 and path == '':
check = 1
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)