Merge branch 'adamT_branch' of s444417/ProjektAI into master
2
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# Default ignored files
|
||||
/workspace.xml
|
11
.idea/ProjektAI.iml
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
|
||||
</component>
|
||||
</module>
|
6
.idea/inspectionProfiles/profiles_settings.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
6
.idea/misc.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="ES6" />
|
||||
</component>
|
||||
</project>
|
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/ProjektAI.iml" filepath="$PROJECT_DIR$/.idea/ProjektAI.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
BIN
Raport - _Automatyczny kelner_.pdf
Normal file
@ -2,7 +2,7 @@
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.7 (kelner)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
|
@ -1,16 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="4be2149b-d9bc-4e21-8365-293320ae7f92" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/images/srcWaiter.png" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/managers/MenuManager.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/src/managers/TaskManager.py" afterDir="false" />
|
||||
<list default="true" id="4be2149b-d9bc-4e21-8365-293320ae7f92" name="Default Changelist" comment="stoły mają 4 stany. Status gotowy do złożenia zamówienia ustawiany jest w nowym wątku w klasie TaskManager co 3 sekundy dla jednego stolika, kelner moze odbierać zamówienia od stolików gotowych do ich złożenia">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/Drawable.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Drawable.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/Table.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Table.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/components/Waiter.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Waiter.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/managers/DrawableCollection.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/managers/DrawableCollection.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
@ -36,7 +28,8 @@
|
||||
<property name="ASKED_ADD_EXTERNAL_FILES" value="true" />
|
||||
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||
<property name="settings.editor.selected.configurable" value="settings.github" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
@ -115,6 +108,11 @@
|
||||
<workItem from="1586089047557" duration="6590000" />
|
||||
<workItem from="1586098345503" duration="112000" />
|
||||
<workItem from="1586098478408" duration="902000" />
|
||||
<workItem from="1586110377593" duration="1935000" />
|
||||
<workItem from="1586119136965" duration="6415000" />
|
||||
<workItem from="1586171095013" duration="3851000" />
|
||||
<workItem from="1586175311822" duration="1170000" />
|
||||
<workItem from="1586177130146" duration="43000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="klasa kelner">
|
||||
<created>1584889744892</created>
|
||||
@ -182,8 +180,8 @@
|
||||
<breakpoints>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/src/managers/DrawableCollection.py</url>
|
||||
<line>69</line>
|
||||
<option name="timeStamp" value="6" />
|
||||
<line>71</line>
|
||||
<option name="timeStamp" value="8" />
|
||||
</line-breakpoint>
|
||||
</breakpoints>
|
||||
<default-breakpoints>
|
||||
@ -196,6 +194,6 @@
|
||||
</breakpoint-manager>
|
||||
</component>
|
||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||
<SUITE FILE_PATH="coverage/kelner$main.coverage" NAME="main Coverage Results" MODIFIED="1586100415912" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
<SUITE FILE_PATH="coverage/kelner$main.coverage" NAME="main Coverage Results" MODIFIED="1586177139696" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||
</component>
|
||||
</project>
|
BIN
kelner/images/Backgroud.png
Normal file
After Width: | Height: | Size: 258 KiB |
BIN
kelner/images/Untitleda.png
Normal file
After Width: | Height: | Size: 184 B |
BIN
kelner/images/check.png
Normal file
After Width: | Height: | Size: 359 B |
BIN
kelner/images/drive-download-20200405T181945Z-001.zip
Normal file
BIN
kelner/images/kelner.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
kelner/images/ksiazka.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
kelner/images/kurczak.png
Normal file
After Width: | Height: | Size: 850 B |
BIN
kelner/images/piwo.png
Normal file
After Width: | Height: | Size: 426 B |
BIN
kelner/images/plate.png
Normal file
After Width: | Height: | Size: 706 B |
BIN
kelner/images/stol.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
kelner/images/wiking_blond.png
Normal file
After Width: | Height: | Size: 988 B |
BIN
kelner/images/wiking_rudy.png
Normal file
After Width: | Height: | Size: 979 B |
BIN
kelner/images/wiking_rudy2.png
Normal file
After Width: | Height: | Size: 977 B |
@ -7,14 +7,15 @@ from src.components.Table import Table
|
||||
from src.managers.TaskManager import TaskManager
|
||||
|
||||
#create screen consts
|
||||
CellSize = 50 #pixel size of 1 square cell in the grid
|
||||
CellSize = 100 #pixel size of 1 square cell in the grid
|
||||
GridCountX = 15 #number of columns in grid
|
||||
GridCountY = 11 #number of rows in grid
|
||||
GridCountY = 9 #number of rows in grid
|
||||
ScreenWidth = CellSize * GridCountX #screen width in pixels
|
||||
ScreenHeight = CellSize * GridCountY #screen height in pixels
|
||||
Offset = 50
|
||||
|
||||
#initialize background
|
||||
gridBoard = GridBoard(ScreenWidth, ScreenHeight, CellSize)
|
||||
gridBoard = GridBoard(ScreenWidth+200, ScreenHeight+200, CellSize)
|
||||
|
||||
#initialize drawable objects manager
|
||||
drawableManager = DrawableCollection()
|
||||
|
@ -9,6 +9,7 @@ class GridBoard:
|
||||
self.__height = height
|
||||
self.__cellSize = cellSize
|
||||
self.__screen = pygame.display.set_mode((width, height)) # initialize screen
|
||||
self.Offset = 50
|
||||
|
||||
#fills the screen with white and draws grid
|
||||
def reinitialize(self):
|
||||
|
@ -1,6 +1,7 @@
|
||||
import pygame
|
||||
from enum import Enum
|
||||
from .Drawable import Drawable
|
||||
import random
|
||||
|
||||
class Table(Drawable):
|
||||
|
||||
@ -9,24 +10,71 @@ class Table(Drawable):
|
||||
Drawable.__init__(self, 0, 0, minX, maxX, minY, maxY, ratio)
|
||||
self.__order = []
|
||||
self.__status = Status.NotReady
|
||||
self.ilosc_klientow = random.randint(1,3)
|
||||
self.guest1 = self.getGuest()
|
||||
self.guest2 = self.getGuest()
|
||||
self.guest3 = self.getGuest()
|
||||
self.ksiazka = self.__loadImg('./images/ksiazka.png')
|
||||
self.stol = self.__loadImg('./images/stol.png')
|
||||
self.check = self.__loadImg('./images/check.png')
|
||||
self.plate = self.__loadImg('./images/plate.png')
|
||||
self.Offset = 100
|
||||
|
||||
#sets table color based on it's status
|
||||
def getColor(self):
|
||||
color = None
|
||||
if self.__status == Status.NotReady:
|
||||
color = self.GREY
|
||||
color = self.__loadImg('./images/stol.png')
|
||||
elif self.__status == Status.Ready:
|
||||
color = self.YELLOW
|
||||
color = self.__loadImg('./images/kelner.png')
|
||||
elif self.__status == Status.Waiting:
|
||||
color = self.RED
|
||||
color = self.__loadImg('./images/kelner.png')
|
||||
elif self.__status == Status.Served:
|
||||
color = self.GREEN
|
||||
color = self.__loadImg('./images/kelner.png')
|
||||
return color
|
||||
|
||||
def getGuest(self):
|
||||
guest = None
|
||||
i = random.randint(1,3)
|
||||
if i == 1:
|
||||
guest = self.__loadImg('./images/wiking_blond.png')
|
||||
elif i == 2:
|
||||
guest = self.__loadImg('./images/wiking_rudy.png')
|
||||
elif i == 3:
|
||||
guest = self.__loadImg('./images/wiking_rudy2.png')
|
||||
return guest
|
||||
|
||||
def __loadImg(self, filePath):
|
||||
return pygame.transform.scale((pygame.image.load(filePath)),(140,140))
|
||||
|
||||
def draw(self, screen):
|
||||
pygame.draw.circle(screen, self.getColor(), ((self.getX() * self.getRatio()) + (self.getRatio() // 2),
|
||||
(self.getY() * self.getRatio()) + (self.getRatio() // 2)),
|
||||
(self.getRatio() // 3))
|
||||
screen.blit(self.stol, (self.getX() * 100-20+self.Offset, self.getY() * 100-20+self.Offset))
|
||||
if self.ilosc_klientow == 1:
|
||||
screen.blit(self.guest1, (self.getX() * 100 - 20+self.Offset, self.getY() * 100 - 60+self.Offset))
|
||||
elif self.ilosc_klientow == 2:
|
||||
screen.blit(self.guest1, (self.getX() * 100 - 62+self.Offset, self.getY() * 100 - 60+self.Offset))
|
||||
screen.blit(self.guest2, (self.getX() * 100 - 20+self.Offset, self.getY() * 100 - 60+self.Offset))
|
||||
elif self.ilosc_klientow == 3:
|
||||
screen.blit(self.guest1, (self.getX() * 100 - 62+self.Offset, self.getY() * 100 - 60+self.Offset))
|
||||
screen.blit(self.guest2, (self.getX() * 100 - 20+self.Offset, self.getY() * 100 - 60+self.Offset))
|
||||
screen.blit(self.guest3, (self.getX() * 100 + 22+self.Offset, self.getY() * 100 - 60+self.Offset))
|
||||
|
||||
if self.__status == Status.NotReady:
|
||||
screen.blit(self.ksiazka, (self.getX() * 100 - 20+self.Offset, self.getY() * 100 - 20+self.Offset))
|
||||
elif self.__status == Status.Ready:
|
||||
screen.blit(self.check, (self.getX() * 100 - 20+self.Offset, self.getY() * 100 - 20+self.Offset))
|
||||
elif self.__status == Status.Waiting:
|
||||
if self.ilosc_klientow == 1:
|
||||
screen.blit(self.plate, (self.getX() * 100 - 20+self.Offset, self.getY() * 100 - 20+self.Offset))
|
||||
elif self.ilosc_klientow == 2:
|
||||
screen.blit(self.plate, (self.getX() * 100 - 62+self.Offset, self.getY() * 100 - 20+self.Offset))
|
||||
screen.blit(self.plate, (self.getX() * 100 - 20+self.Offset, self.getY() * 100 - 20+self.Offset))
|
||||
elif self.ilosc_klientow == 3:
|
||||
screen.blit(self.plate, (self.getX() * 100 - 62+self.Offset, self.getY() * 100 - 20+self.Offset))
|
||||
screen.blit(self.plate, (self.getX() * 100- 20+self.Offset, self.getY() * 100 - 20+self.Offset))
|
||||
screen.blit(self.plate, (self.getX() * 100+ 22+self.Offset, self.getY() * 100 - 20+self.Offset))
|
||||
|
||||
|
||||
def setOrder(self, order):
|
||||
self.__order = order
|
||||
|
||||
|
@ -6,8 +6,10 @@ class Waiter(Drawable):
|
||||
def __init__(self, x, y, minX, maxX, minY, maxY, ratio):
|
||||
#call base class constructor
|
||||
Drawable.__init__(self, x, y, minX, maxX, minY, maxY, ratio)
|
||||
self.__image = self.__loadImg('./images/waiter.png')
|
||||
self.__image = self.__loadImg('./images/kelner.png')
|
||||
self.__acceptedOrders = []
|
||||
self.Offset = 100
|
||||
|
||||
|
||||
def moveUp(self):
|
||||
if self.getY() > self.getMinY():
|
||||
@ -42,7 +44,7 @@ class Waiter(Drawable):
|
||||
self.__acceptedOrders += [(table, table.getOrder())]
|
||||
|
||||
def __loadImg(self, filePath):
|
||||
return pygame.image.load(filePath)
|
||||
return pygame.transform.scale((pygame.image.load(filePath)),(140,140))
|
||||
|
||||
def draw(self, screen):
|
||||
screen.blit(self.__image, (self.getX() * self.getRatio(), self.getY() * self.getRatio()))
|
||||
screen.blit(self.__image, (self.getX()*100-20+self.Offset, self.getY()*100-20+self.Offset))
|
||||
|
@ -1,7 +1,7 @@
|
||||
import random
|
||||
from src.components.Table import Table, Status
|
||||
from src.components.Waiter import Waiter
|
||||
|
||||
import pygame
|
||||
#drawable objects manager
|
||||
class DrawableCollection:
|
||||
#const, minimal distance between objects
|
||||
@ -10,6 +10,7 @@ class DrawableCollection:
|
||||
def __init__(self):
|
||||
#collection that holds all drawable objects
|
||||
self.__drawables = []
|
||||
self.image = pygame.transform.scale((pygame.image.load('./images/Backgroud.png')),(1700,1100))
|
||||
|
||||
#adds drawable objects to the collection
|
||||
def add(self, drawable):
|
||||
@ -32,6 +33,7 @@ class DrawableCollection:
|
||||
|
||||
#draws all objects stored in collection
|
||||
def draw(self, screen):
|
||||
screen.blit(self.image, (0, 0))
|
||||
for item in self.__drawables:
|
||||
item.draw(screen)
|
||||
|
||||
|