Update 'main.py'
This commit is contained in:
parent
36b7a8e03f
commit
bcf910495d
112
main.py
112
main.py
@ -76,11 +76,13 @@ def image_recognition():
|
|||||||
waiter.order_list.pop()
|
waiter.order_list.pop()
|
||||||
#print(WIN, LOSSE - WIN)
|
#print(WIN, LOSSE - WIN)
|
||||||
'''
|
'''
|
||||||
# ai settings
|
tickTime = 15
|
||||||
#S_IDLE = ("kitchen", "middle", "inplace")
|
|
||||||
#S_FIRST = ("order", "food")
|
|
||||||
|
|
||||||
IDLE = "inplace"
|
# ai settings
|
||||||
|
S_IDLE = ("kitchen", "middle", "inplace")
|
||||||
|
S_FIRST = ("order", "food")
|
||||||
|
|
||||||
|
IDLE = "kitchen"
|
||||||
FIRST = "order"
|
FIRST = "order"
|
||||||
|
|
||||||
HEIGHT = 10
|
HEIGHT = 10
|
||||||
@ -452,27 +454,80 @@ class Agent:
|
|||||||
self.idle = False
|
self.idle = False
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
def getTaskTest(self):
|
||||||
|
if FIRST == "food":
|
||||||
|
#jesli w kuchni jest gotowe danie to po nie idzie
|
||||||
|
for t in restaurant.kitchen:
|
||||||
|
if t[2] == 0:
|
||||||
|
self.astar(KITCHEN)
|
||||||
|
self.idle = False
|
||||||
|
return True
|
||||||
|
#jesli ktos chce jedzenie a kelner je trzyma
|
||||||
|
for table in restaurant.tables:
|
||||||
|
if restaurant.tiles[table[1]][table[0]].clientState == "wait" and waiter.food:
|
||||||
|
self.astar((table[0], table[1]))
|
||||||
|
self.idle = False
|
||||||
|
return True
|
||||||
|
#jesli ktos chce zamowic to do niego idzie
|
||||||
|
if not self.orders and not self.food:
|
||||||
|
for table in restaurant.tables:
|
||||||
|
if restaurant.tiles[table[1]][table[0]].clientState == "order":
|
||||||
|
self.astar((table[0], table[1]))
|
||||||
|
self.idle = False
|
||||||
|
return True
|
||||||
|
#jesli trzyma zamowienie to idzie do kuchni
|
||||||
|
if self.orders:
|
||||||
|
self.astar(KITCHEN)
|
||||||
|
self.idle = False
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
self.getTask()
|
||||||
|
return False
|
||||||
def endTask(self):
|
def endTask(self):
|
||||||
#jesli sie zatrzymal na stoliku ktory chce zamowic to bierze zamowienie
|
|
||||||
if restaurant.tiles[waiter.y][waiter.x].clientState == "order" and not waiter.food and not waiter.orders:
|
if restaurant.tiles[waiter.y][waiter.x].clientState == "order" and not waiter.food and not waiter.orders:
|
||||||
restaurant.tiles[waiter.y][waiter.x].clientState = "wait"
|
restaurant.tiles[waiter.y][waiter.x].clientState = "wait"
|
||||||
waiter.orders = (waiter.x, waiter.y)
|
waiter.orders = (waiter.x, waiter.y)
|
||||||
#jesli sie zatrzymal w kuchni z zamowieniem to oddaje zamowienie
|
|
||||||
if waiter.x == 1 and waiter.y == 1 and waiter.orders:
|
if waiter.x == 1 and waiter.y == 1 and waiter.orders:
|
||||||
restaurant.kitchen.append([waiter.orders[0], waiter.orders[1], 50])
|
restaurant.kitchen.append([waiter.orders[0], waiter.orders[1], 50])
|
||||||
waiter.orders = False
|
waiter.orders = False
|
||||||
#jesli sie zatrzymal w kuchni bez zamowienia to bierze jedzenie
|
|
||||||
if waiter.x == 1 and waiter.y == 1 and not waiter.orders:
|
if waiter.x == 1 and waiter.y == 1 and not waiter.orders:
|
||||||
for t in restaurant.kitchen:
|
for t in restaurant.kitchen:
|
||||||
if t[2] == 0:
|
if t[2] == 0:
|
||||||
restaurant.kitchen.remove(t)
|
restaurant.kitchen.remove(t)
|
||||||
waiter.food = True
|
waiter.food = True
|
||||||
#jesli sie zatrzymal na stoliku z jedzeniem to je daje
|
|
||||||
if restaurant.tiles[waiter.y][waiter.x].clientState == "wait" and waiter.food and not waiter.orders:
|
if restaurant.tiles[waiter.y][waiter.x].clientState == "wait" and waiter.food and not waiter.orders:
|
||||||
restaurant.tiles[waiter.y][waiter.x].clientState = "eat"
|
restaurant.tiles[waiter.y][waiter.x].clientState = "eat"
|
||||||
|
restaurant.tiles[waiter.y][waiter.x].client = 20
|
||||||
self.food = False
|
self.food = False
|
||||||
self.idle = True
|
self.idle = True
|
||||||
|
def endTaskTest(self):
|
||||||
|
if IDLE == "inplace":
|
||||||
|
self.endTask()
|
||||||
|
return True
|
||||||
|
hasTask = False
|
||||||
|
if restaurant.tiles[waiter.y][waiter.x].clientState == "order" and not waiter.food and not waiter.orders:
|
||||||
|
restaurant.tiles[waiter.y][waiter.x].clientState = "wait"
|
||||||
|
waiter.orders = (waiter.x, waiter.y)
|
||||||
|
hasTask = True
|
||||||
|
if waiter.x == 1 and waiter.y == 1 and waiter.orders:
|
||||||
|
restaurant.kitchen.append([waiter.orders[0], waiter.orders[1], 50])
|
||||||
|
waiter.orders = False
|
||||||
|
if waiter.x == 1 and waiter.y == 1 and not waiter.orders:
|
||||||
|
for t in restaurant.kitchen:
|
||||||
|
if t[2] == 0:
|
||||||
|
restaurant.kitchen.remove(t)
|
||||||
|
waiter.food = True
|
||||||
|
hasTask = True
|
||||||
|
return True
|
||||||
|
if restaurant.tiles[waiter.y][waiter.x].clientState == "wait" and waiter.food and not waiter.orders:
|
||||||
|
restaurant.tiles[waiter.y][waiter.x].clientState = "eat"
|
||||||
|
restaurant.tiles[waiter.y][waiter.x].client = 20
|
||||||
|
self.food = False
|
||||||
|
self.idle = True
|
||||||
|
if IDLE == "kitchen":
|
||||||
|
self.astar(KITCHEN)
|
||||||
|
else:
|
||||||
|
self.astar(MIDDLE)
|
||||||
|
|
||||||
def drawScreen():
|
def drawScreen():
|
||||||
pygame.draw.rect(display, (0, 0, 0), (0, 0, HEIGHT * 32, WIDTH * 32))
|
pygame.draw.rect(display, (0, 0, 0), (0, 0, HEIGHT * 32, WIDTH * 32))
|
||||||
@ -597,6 +652,7 @@ while True:
|
|||||||
if event.key == pygame.K_0:
|
if event.key == pygame.K_0:
|
||||||
project = 0
|
project = 0
|
||||||
if event.key == pygame.K_1:
|
if event.key == pygame.K_1:
|
||||||
|
tickTime = 1000
|
||||||
project = 1
|
project = 1
|
||||||
#Execute project
|
#Execute project
|
||||||
if event.key == pygame.K_2:
|
if event.key == pygame.K_2:
|
||||||
@ -640,6 +696,26 @@ while True:
|
|||||||
restaurant.tiles[table[1]][table[0]].clientState = False
|
restaurant.tiles[table[1]][table[0]].clientState = False
|
||||||
totaltime = totaltime + ticks
|
totaltime = totaltime + ticks
|
||||||
restaurant.left = restaurant.left - 1
|
restaurant.left = restaurant.left - 1
|
||||||
|
if restaurant.left == 0 and project == 1:
|
||||||
|
print("done in", totaltime)
|
||||||
|
file = open('results.csv', 'a')
|
||||||
|
file.write("\n")
|
||||||
|
file.write(str(S_IDLE.index(IDLE)))
|
||||||
|
file.write(",")
|
||||||
|
file.write(str(S_FIRST.index(FIRST)))
|
||||||
|
file.write(",")
|
||||||
|
if totaltime > 533:
|
||||||
|
file.write(str(0))
|
||||||
|
else:
|
||||||
|
file.write(str(1))
|
||||||
|
file.close()
|
||||||
|
restaurant = Restaurant(3, 3, 10, 3)
|
||||||
|
waiter = Agent(2,2)
|
||||||
|
clientTime = 10
|
||||||
|
ticks = 0
|
||||||
|
totaltime = 0
|
||||||
|
IDLE = random.choice(S_IDLE)
|
||||||
|
FIRST = random.choice(S_FIRST)
|
||||||
#update waiter
|
#update waiter
|
||||||
if project == 0:
|
if project == 0:
|
||||||
if waiter.idle:
|
if waiter.idle:
|
||||||
@ -648,8 +724,24 @@ while True:
|
|||||||
waiter.walk()
|
waiter.walk()
|
||||||
if not waiter.path:
|
if not waiter.path:
|
||||||
waiter.endTask()
|
waiter.endTask()
|
||||||
|
if project == 1:
|
||||||
|
if waiter.idle:
|
||||||
|
waiter.getTaskTest()
|
||||||
|
else:
|
||||||
|
waiter.walk()
|
||||||
|
if not waiter.path:
|
||||||
|
waiter.endTaskTest()
|
||||||
|
if ticks > 700:
|
||||||
|
restaurant = Restaurant(3, 3, 10, 3)
|
||||||
|
waiter = Agent(2,2)
|
||||||
|
clientTime = 10
|
||||||
|
ticks = 0
|
||||||
|
totaltime = 0
|
||||||
|
IDLE = random.choice(S_IDLE)
|
||||||
|
FIRST = random.choice(S_FIRST)
|
||||||
|
|
||||||
|
|
||||||
drawScreen()
|
drawScreen()
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
clock.tick(15)
|
clock.tick(tickTime)
|
||||||
ticks = ticks + 1
|
ticks = ticks + 1
|
||||||
|
Loading…
Reference in New Issue
Block a user