DFS cały działa
This commit is contained in:
parent
fe478e5ff8
commit
129ad65d56
@ -2,7 +2,6 @@
|
||||
<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>
|
||||
@ -23,11 +22,15 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/game.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="273">
|
||||
<caret line="54" column="8" selection-start-line="54" selection-start-column="8" selection-end-line="54" selection-end-column="8" />
|
||||
<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>
|
||||
</provider>
|
||||
</entry>
|
||||
@ -71,21 +74,16 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/waiter.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="281">
|
||||
<caret line="290" column="53" selection-start-line="290" selection-start-column="53" selection-end-line="290" selection-end-column="53" />
|
||||
<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#778#1419#0" />
|
||||
<element signature="e#1460#2110#0" />
|
||||
<element signature="e#2789#3398#0" />
|
||||
<element signature="e#3436#3808#0" />
|
||||
<element signature="e#3728#4080#0" />
|
||||
<element signature="e#3839#4047#0" />
|
||||
<element signature="e#4099#4564#0" />
|
||||
<element signature="e#4621#8896#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
@ -127,8 +125,8 @@
|
||||
<option value="$PROJECT_DIR$/table.py" />
|
||||
<option value="$PROJECT_DIR$/orderTable.py" />
|
||||
<option value="$PROJECT_DIR$/pool.py" />
|
||||
<option value="$PROJECT_DIR$/game.py" />
|
||||
<option value="$PROJECT_DIR$/waiter.py" />
|
||||
<option value="$PROJECT_DIR$/game.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@ -332,6 +330,28 @@
|
||||
</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">
|
||||
@ -428,13 +448,6 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/order.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="132">
|
||||
<caret line="6" selection-start-line="6" selection-end-line="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/table.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="308">
|
||||
@ -459,6 +472,26 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/order.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="132">
|
||||
<caret line="6" selection-start-line="6" selection-end-line="6" />
|
||||
</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">
|
||||
@ -468,25 +501,11 @@
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/game.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="273">
|
||||
<caret line="54" column="8" selection-start-line="54" selection-start-column="8" selection-end-line="54" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/waiter.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="281">
|
||||
<caret line="290" column="53" selection-start-line="290" selection-start-column="53" selection-end-line="290" selection-end-column="53" />
|
||||
<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#0#13#0" expanded="true" />
|
||||
<element signature="e#572#736#0" />
|
||||
<element signature="e#778#1419#0" />
|
||||
<element signature="e#1460#2110#0" />
|
||||
<element signature="e#2789#3398#0" />
|
||||
<element signature="e#3436#3808#0" />
|
||||
<element signature="e#3839#4047#0" />
|
||||
<element signature="e#4099#4564#0" />
|
||||
<element signature="e#4621#8896#0" />
|
||||
<element signature="e#3097#3397#0" />
|
||||
<element signature="e#3437#3616#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
Binary file not shown.
23
game.py
23
game.py
@ -48,13 +48,11 @@ class Game(object):
|
||||
if i == self.x-1:
|
||||
self.grid.append(list(self.row))
|
||||
self.row.clear()
|
||||
#copyGrid = copy.copy(self.grid)
|
||||
#copyGrid = []
|
||||
#kopia = copy.deepcopy(self.grid[9][4])
|
||||
#kopia = [[num for num in line] for line in self.grid]
|
||||
path = self.waiter.dfsFind([self.waiter.positionX, self.waiter.positionY], [], 2)
|
||||
#print("Prawdziwa pozycja kelnera: {0}, {1} ", self.waiter.positionX, self.waiter.positionY)
|
||||
#print(self.waiter.findWaiter(self.grid[:]))
|
||||
|
||||
|
||||
self.dfs(self.waiter, 1, [])
|
||||
|
||||
#self.dfs(self.waiter, 3, [])
|
||||
|
||||
while True:
|
||||
|
||||
@ -65,7 +63,7 @@ class Game(object):
|
||||
self.draw()
|
||||
self.waiter.move(self)
|
||||
#print(self.waiter.checkPoss(self.grid, self.waiter.lastStep))
|
||||
pygame.display.flip()
|
||||
|
||||
#print(self.waiterNumberInGrid)
|
||||
self.fpsClock.tick(10)
|
||||
|
||||
@ -79,6 +77,7 @@ class Game(object):
|
||||
tempTable.append(gridElement)
|
||||
for otherElement in tempTable:
|
||||
otherElement.draw()
|
||||
pygame.display.flip()
|
||||
|
||||
def convert(self, object):
|
||||
if object.type == "gridElement":
|
||||
@ -100,7 +99,13 @@ class Game(object):
|
||||
charakterList.append(row)
|
||||
print(row)
|
||||
|
||||
|
||||
def dfs(self, waiter, soughtID, operation=[]):
|
||||
waiter.dfsFind([waiter.positionX, waiter.positionY], operation, soughtID)
|
||||
paths = waiter.allPath
|
||||
paths.sort(key=len)
|
||||
bestPath = paths[0]
|
||||
waiter.allPath = []
|
||||
waiter.followThePath(bestPath)
|
||||
|
||||
if __name__ == "__main__":
|
||||
Game()
|
||||
|
135
waiter.py
135
waiter.py
@ -29,76 +29,64 @@ class Waiter(object):
|
||||
return [x, y]
|
||||
|
||||
|
||||
def moveLeft(self, grid):
|
||||
|
||||
position = self.findWaiter(grid)
|
||||
positionX = position[0]
|
||||
positionY = position[1]
|
||||
if positionX != 0:
|
||||
collisionObject = grid[positionY][positionX - 1]
|
||||
def moveLeft(self):
|
||||
if self.positionX != 0:
|
||||
collisionObject = self.game.grid[self.positionY][self.positionX - 1]
|
||||
if collisionObject.type == "gridElement":
|
||||
grid[positionY][positionX - 1].x += 50
|
||||
grid[positionY][positionX].x -= 50
|
||||
grid[positionY][positionX - 1], \
|
||||
grid[positionY][positionX] = \
|
||||
grid[positionY][positionX], \
|
||||
grid[positionY][positionX - 1]
|
||||
|
||||
self.game.grid[self.positionY][self.positionX - 1].x += 50
|
||||
self.game.grid[self.positionY][self.positionX].x -= 50
|
||||
self.game.grid[self.positionY][self.positionX - 1], \
|
||||
self.game.grid[self.positionY][self.positionX] = \
|
||||
self.game.grid[self.positionY][self.positionX], \
|
||||
self.game.grid[self.positionY][self.positionX - 1]
|
||||
self.positionX -= 1
|
||||
#print(self.positionX)
|
||||
return grid
|
||||
self.lastStep.append("Left")
|
||||
else:
|
||||
pass
|
||||
def moveRight(self, grid):
|
||||
|
||||
position = self.findWaiter(grid)
|
||||
positionX = position[0]
|
||||
positionY = position[1]
|
||||
if positionX != 9:
|
||||
collisionObject = grid[positionY][positionX + 1]
|
||||
def moveRight(self):
|
||||
if self.positionX != self.game.x-1:
|
||||
collisionObject = self.game.grid[self.positionY][self.positionX + 1]
|
||||
if collisionObject.type == "gridElement":
|
||||
grid[positionY][positionX + 1].x -= 50
|
||||
grid[positionY][positionX].x += 50
|
||||
grid[positionY][positionX + 1], \
|
||||
grid[positionY][positionX] = \
|
||||
grid[positionY][positionX], \
|
||||
grid[positionY][positionX + 1]
|
||||
|
||||
# print(self.positionX)
|
||||
return grid
|
||||
self.game.grid[self.positionY][self.positionX + 1].x -= 50
|
||||
self.game.grid[self.positionY][self.positionX].x += 50
|
||||
self.game.grid[self.positionY][self.positionX + 1], \
|
||||
self.game.grid[self.positionY][self.positionX] = \
|
||||
self.game.grid[self.positionY][self.positionX], \
|
||||
self.game.grid[self.positionY][self.positionX + 1]
|
||||
self.positionX += 1
|
||||
#print(self.positionX)
|
||||
self.lastStep.append("Right")
|
||||
else:
|
||||
pass
|
||||
|
||||
def moveUp(self, grid):
|
||||
position = self.findWaiter(grid)
|
||||
positionX = position[0]
|
||||
positionY = position[1]
|
||||
if positionY != 0:
|
||||
collisionObject = grid[positionY - 1][positionX]
|
||||
def moveUp(self):
|
||||
if self.positionY != 0:
|
||||
collisionObject = self.game.grid[self.positionY - 1][self.positionX]
|
||||
if collisionObject.type == "gridElement":
|
||||
grid[positionY - 1][positionX].y += 50
|
||||
grid[positionY][positionX].y -= 50
|
||||
grid[positionY - 1][positionX], \
|
||||
grid[positionY][positionX] = \
|
||||
grid[positionY][positionX], \
|
||||
grid[positionY - 1][positionX]
|
||||
return grid
|
||||
self.game.grid[self.positionY - 1][self.positionX].y += 50
|
||||
self.game.grid[self.positionY][self.positionX].y -= 50
|
||||
self.game.grid[self.positionY - 1][self.positionX], \
|
||||
self.game.grid[self.positionY][self.positionX] = \
|
||||
self.game.grid[self.positionY][self.positionX], \
|
||||
self.game.grid[self.positionY - 1][self.positionX]
|
||||
self.positionY -= 1
|
||||
self.lastStep.append("Up")
|
||||
else:
|
||||
pass
|
||||
|
||||
def moveDown(self, grid):
|
||||
position = self.findWaiter(grid)
|
||||
positionX = position[0]
|
||||
positionY = position[1]
|
||||
if positionY != 9:
|
||||
collisionObject = grid[positionY + 1][positionX]
|
||||
def moveDown(self):
|
||||
if self.positionY != self.game.y-1:
|
||||
collisionObject = self.game.grid[self.positionY + 1][self.positionX]
|
||||
if collisionObject.type == "gridElement":
|
||||
grid[positionY + 1][positionX].y -= 50
|
||||
grid[positionY][positionX].y += 50
|
||||
grid[positionY + 1][positionX], \
|
||||
grid[positionY][positionX] = \
|
||||
grid[positionY][positionX], \
|
||||
grid[positionY + 1][positionX]
|
||||
return grid
|
||||
self.game.grid[self.positionY + 1][self.positionX].y -= 50
|
||||
self.game.grid[self.positionY][self.positionX].y += 50
|
||||
self.game.grid[self.positionY + 1][self.positionX], \
|
||||
self.game.grid[self.positionY][self.positionX] = \
|
||||
self.game.grid[self.positionY][self.positionX], \
|
||||
self.game.grid[self.positionY + 1][self.positionX]
|
||||
self.positionY += 1
|
||||
self.lastStep.append("Down")
|
||||
else:
|
||||
pass
|
||||
|
||||
@ -108,13 +96,13 @@ class Waiter(object):
|
||||
keys = pygame.key.get_pressed()
|
||||
|
||||
if keys[pygame.K_LEFT]:
|
||||
self.moveLeft(game.grid)
|
||||
self.moveLeft()
|
||||
if keys[pygame.K_RIGHT]:
|
||||
self.moveRight(game.grid)
|
||||
self.moveRight()
|
||||
if keys[pygame.K_UP]:
|
||||
self.moveUp(game.grid)
|
||||
self.moveUp()
|
||||
if keys[pygame.K_DOWN]:
|
||||
self.moveDown(game.grid)
|
||||
self.moveDown()
|
||||
if keys[pygame.K_s]:
|
||||
game.showGrid(game.grid)
|
||||
|
||||
@ -159,7 +147,7 @@ class Waiter(object):
|
||||
stackMove.append("Up")
|
||||
if self.isMoveInRange("Down", position):
|
||||
collisionObjectDown = self.grid[positionY + 1][positionX]
|
||||
if collisionObjectDown.type == "gridElement" or collisionObjectDown.type == "waiter":
|
||||
if collisionObjectDown.type == "gridElement":
|
||||
stackMove.append("Down")
|
||||
if self.isMoveInRange("Left", position):
|
||||
collisionObjectLeft = self.grid[positionY][positionX - 1]
|
||||
@ -254,24 +242,28 @@ class Waiter(object):
|
||||
if self.grid[positionY + 1][positionX].type == "table":
|
||||
if self.grid[positionY + 1][positionX].id == idTable:
|
||||
self.allPath.append(currentOperation)
|
||||
print("Dodalem do all path sciezke jedna z miliona")
|
||||
return 0
|
||||
if self.isMoveInRange("Left", position):
|
||||
if self.grid[positionY][positionX - 1].type == "table":
|
||||
if self.grid[positionY][positionX - 1].id == idTable:
|
||||
self.allPath.append(currentOperation)
|
||||
print("Dodalem do all path sciezke jedna z miliona")
|
||||
return 0
|
||||
if self.isMoveInRange("Right", position):
|
||||
if self.grid[positionY][positionX + 1].type == "table":
|
||||
if self.grid[positionY][positionX + 1].id == idTable:
|
||||
self.allPath.append(currentOperation)
|
||||
print("Dodalem do all path sciezke jedna z miliona")
|
||||
return 0
|
||||
print("Sprawdzilem nie jest to stolik")
|
||||
#print("Sprawdzilem nie jest to stolik")
|
||||
steps = []
|
||||
steps.append(self.checkPoss(position, currentOperation))
|
||||
allstep = steps[-1]
|
||||
print("Naszymi mozliwosciami sa ", allstep)
|
||||
|
||||
if len(allstep) != 1:
|
||||
if not allstep:
|
||||
return 0
|
||||
elif len(allstep) != 1:
|
||||
for i in allstep:
|
||||
newCurrentOperation = currentOperation[:]
|
||||
newCurrentOperation.append(i)
|
||||
@ -309,3 +301,16 @@ class Waiter(object):
|
||||
currentOperation.append("Down")
|
||||
|
||||
self.dfsFind(position, currentOperation, idTable)
|
||||
|
||||
def followThePath(self, path):
|
||||
for direction in path:
|
||||
if direction == "Left":
|
||||
self.moveLeft()
|
||||
if direction == "Right":
|
||||
self.moveRight()
|
||||
if direction == "Up":
|
||||
self.moveUp()
|
||||
if direction == "Down":
|
||||
self.moveDown()
|
||||
self.game.draw()
|
||||
time.sleep(.500)
|
Loading…
Reference in New Issue
Block a user