This commit is contained in:
Arkadiusz 2019-05-15 10:35:42 +01:00
parent 129ad65d56
commit f7e3227185
4 changed files with 135 additions and 75 deletions

View File

@ -2,6 +2,7 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="152ea650-8e02-4ed6-aa8c-04d44b275be4" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/game.py" beforeDir="false" afterPath="$PROJECT_DIR$/game.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/waiter.py" beforeDir="false" afterPath="$PROJECT_DIR$/waiter.py" afterDir="false" />
</list>
@ -22,15 +23,11 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/game.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="250">
<caret line="54" column="34" lean-forward="true" selection-start-line="54" selection-start-column="34" selection-end-line="54" selection-end-column="34" />
<folding>
<element signature="e#3097#3397#0" />
<element signature="e#3437#3616#0" />
</folding>
<state relative-caret-position="116">
<caret line="57" column="32" selection-start-line="57" selection-start-column="32" selection-end-line="57" selection-end-column="32" />
</state>
</provider>
</entry>
@ -74,16 +71,16 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/waiter.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="208">
<caret line="137" selection-start-line="137" selection-end-line="137" />
<state relative-caret-position="387">
<caret line="361" column="20" selection-start-line="361" selection-start-column="20" selection-end-line="361" selection-end-column="20" />
<folding>
<element signature="e#0#13#0" expanded="true" />
<element signature="e#572#736#0" />
<element signature="e#3728#4080#0" />
<element signature="e#3839#4047#0" />
<element signature="e#0#14#0" expanded="true" />
<element signature="e#4604#5028#0" />
<element signature="e#5089#9586#0" />
<element signature="e#9658#12817#0" />
</folding>
</state>
</provider>
@ -101,6 +98,7 @@
<component name="FindInProjectRecents">
<findStrings>
<find>self.last</find>
<find>tmp</find>
</findStrings>
</component>
<component name="Git.Settings">
@ -125,14 +123,14 @@
<option value="$PROJECT_DIR$/table.py" />
<option value="$PROJECT_DIR$/orderTable.py" />
<option value="$PROJECT_DIR$/pool.py" />
<option value="$PROJECT_DIR$/waiter.py" />
<option value="$PROJECT_DIR$/game.py" />
<option value="$PROJECT_DIR$/waiter.py" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-7" />
<option name="width" value="974" />
<option name="width" value="1660" />
<option name="height" value="1047" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
@ -164,7 +162,7 @@
</component>
<component name="PropertiesComponent">
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="settings.editor.selected.configurable" value="editor.preferences.fonts.default" />
<property name="settings.editor.selected.configurable" value="xml.catalog" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
@ -267,13 +265,13 @@
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
<editor active="true" />
<layout>
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.18335089" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.21443625" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" weight="0.32936078" />
<window_info active="true" anchor="bottom" id="Run" order="2" sideWeight="0.49894625" visible="true" weight="0.29577464" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.27193934" />
<window_info active="true" anchor="bottom" id="Run" order="2" sideWeight="0.49894625" visible="true" weight="0.2979415" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.2713348" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" weight="0.32936078" />
@ -330,28 +328,6 @@
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/waiter.py</url>
<line>135</line>
<option name="timeStamp" value="56" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/waiter.py</url>
<line>137</line>
<option name="timeStamp" value="57" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/waiter.py</url>
<line>227</line>
<option name="timeStamp" value="58" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/waiter.py</url>
<line>78</line>
<option name="timeStamp" value="59" />
</line-breakpoint>
</breakpoints>
<default-breakpoints>
<breakpoint type="python-exception">
<properties notifyOnTerminate="true" exception="BaseException">
@ -448,6 +424,13 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gridElement.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154">
<caret line="7" column="17" selection-start-line="7" selection-start-column="17" selection-end-line="7" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/table.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="308">
@ -479,33 +462,22 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/waiter.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="208">
<caret line="137" selection-start-line="137" selection-end-line="137" />
<folding>
<element signature="e#0#13#0" expanded="true" />
<element signature="e#572#736#0" />
<element signature="e#3728#4080#0" />
<element signature="e#3839#4047#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gridElement.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154">
<caret line="7" column="17" selection-start-line="7" selection-start-column="17" selection-end-line="7" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/game.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="250">
<caret line="54" column="34" lean-forward="true" selection-start-line="54" selection-start-column="34" selection-end-line="54" selection-end-column="34" />
<state relative-caret-position="116">
<caret line="57" column="32" selection-start-line="57" selection-start-column="32" selection-end-line="57" selection-end-column="32" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/waiter.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="387">
<caret line="361" column="20" selection-start-line="361" selection-start-column="20" selection-end-line="361" selection-end-column="20" />
<folding>
<element signature="e#3097#3397#0" />
<element signature="e#3437#3616#0" />
<element signature="e#0#14#0" expanded="true" />
<element signature="e#4604#5028#0" />
<element signature="e#5089#9586#0" />
<element signature="e#9658#12817#0" />
</folding>
</state>
</provider>

Binary file not shown.

22
game.py
View File

@ -40,8 +40,8 @@ class Game(object):
self.row.append(self.waiter)
self.waiterNumberInGrid.x = i
self.waiterNumberInGrid.y = b
elif (((b > 0 and b < 6) and (i > 0 and i < 9)) and not((i==1 or i == 8) and (b==1 or b==5))) \
or (b>6 and (i<4 or i > 5) ):
elif ((((b > 0 and b < 6) and (i > 0 and i < 9)) and not((i==1 or i == 8) and (b==1 or b==5))) \
or (b>6 and (i<4 or i > 5) ) ):
self.row.append(Pool(i * 50, b * 50, self))
else:
self.row.append(GridElement(i * 50, b * 50, self))
@ -50,10 +50,15 @@ class Game(object):
self.row.clear()
self.dfs(self.waiter, 1, [])
#self.dfs(self.waiter, 1, [])
#self.dfs(self.waiter, 3, [])
self.bfs(self.waiter, 1, [])
self.bfs(self.waiter, 3, [])
#path = self.waiter.bfsFind([self.waiter.positionX, self.waiter.positionY], [], 1)
while True:
for event in pygame.event.get():
@ -107,5 +112,14 @@ class Game(object):
waiter.allPath = []
waiter.followThePath(bestPath)
def bfs(self, waiter, soughtID, operation=[]):
waiter.bfsFind([waiter.positionX, waiter.positionY], operation, soughtID)
paths = waiter.bfsPaths
paths.sort(key=len)
bestPath = paths[0]
waiter.bfsPaths = []
waiter.followThePath(bestPath)
if __name__ == "__main__":
Game()
v1 = Game()

View File

@ -1,7 +1,10 @@
import asyncio
from multiprocessing import Queue
import pygame
import time
from pygame.math import Vector2
class Waiter(object):
def __init__(self, game, x, y):
@ -17,10 +20,16 @@ class Waiter(object):
self.image.set_colorkey((255, 255, 255))
self.type = "waiter"
self.lastStep = []
self.tmp = []
self.dfsStack = []
self.allPath = []
self.bfsQueue = []
self.bfsPaths = []
def findWaiter(self, grid):
for y in range(10):
for x in range(10):
@ -277,16 +286,16 @@ class Waiter(object):
if i == "Down":
newPosition[1] += 1
self.tmp.append([newPosition, newCurrentOperation, idTable])
while self.tmp:
move = self.tmp.pop()
self.dfsStack.append([newPosition, newCurrentOperation, idTable])
while self.dfsStack:
move = self.dfsStack.pop()
self.dfsFind(move[0], move[1], move[2])
else:
step = allstep.pop()
print("Wybrałem: ", step)
print("Pozycja tego cwela: ", position)
print("Pozycja kelnera: ", position)
if step == "Left":
position[0] -= 1
currentOperation.append("Left")
@ -302,6 +311,71 @@ class Waiter(object):
self.dfsFind(position, currentOperation, idTable)
def bfsFind(self, position, currentOperation, idTable):
print("Sprawdzam czy stolik")
positionX = position[0]
positionY = position[1]
print(position)
if self.isMoveInRange("Up", position):
if self.grid[positionY - 1][positionX].type == "table":
if self.grid[positionY - 1][positionX].id == idTable:
self.bfsPaths.append(currentOperation)
print("Dodalem do BFS path sciezke jedna z miliona")
print(self.bfsPaths)
return 0
if self.isMoveInRange("Down", position):
if self.grid[positionY + 1][positionX].type == "table":
if self.grid[positionY + 1][positionX].id == idTable:
self.bfsPaths.append(currentOperation)
print("Dodalem do BFS path sciezke jedna z miliona")
print(self.bfsPaths)
return 0
if self.isMoveInRange("Left", position):
if self.grid[positionY][positionX - 1].type == "table":
if self.grid[positionY][positionX - 1].id == idTable:
self.bfsPaths.append(currentOperation)
print("Dodalem do BFS path sciezke jedna z miliona")
print(self.bfsPaths)
return 0
if self.isMoveInRange("Right", position):
if self.grid[positionY][positionX + 1].type == "table":
if self.grid[positionY][positionX + 1].id == idTable:
self.bfsPaths.append(currentOperation)
print("Dodalem do BFS path sciezke jedna z miliona")
print(self.bfsPaths)
return 0
# print("Sprawdzilem nie jest to stolik")
steps = []
steps.append(self.checkPoss(position, currentOperation))
allstep = steps[-1]
print("Naszymi mozliwosciami sa ", allstep)
if not allstep:
return 0
else:
for step in allstep:
newCurrentOperation = currentOperation[:]
newCurrentOperation.append(step)
newPosition = position[:]
if step == "Left":
newPosition[0] -= 1
elif step == "Right":
newPosition[0] += 1
elif step == "Up":
newPosition[1] -= 1
else:
newPosition[1] += 1
self.bfsQueue.append([newPosition, newCurrentOperation, idTable])
#print("Liczba elementow w kolejce", self.bfsQueue)
while self.bfsQueue:
move = self.bfsQueue.pop(0)
self.bfsFind(move[0], move[1], move[2])
def followThePath(self, path):
for direction in path:
if direction == "Left":