From daf1118ed23ec3bc3ecb15bd9b2ac210117a9232 Mon Sep 17 00:00:00 2001 From: Michal Kijowski Date: Thu, 26 Mar 2020 21:09:41 +0000 Subject: [PATCH] First GUI --- floor.py | 12 ++++++ generate.py | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++ main.py | 36 ++++++++++++++++ program.py | 41 ++++++++++++++++++ shelf.py | 18 ++++++++ 5 files changed, 228 insertions(+) create mode 100644 floor.py create mode 100644 generate.py create mode 100644 main.py create mode 100644 program.py create mode 100644 shelf.py diff --git a/floor.py b/floor.py new file mode 100644 index 0000000..576bef8 --- /dev/null +++ b/floor.py @@ -0,0 +1,12 @@ +import pygame + +class Floor: + def __init__(self, screen, cell, we, ns): + self.cell = cell + self.ns = ns + self.we = we + self.screen = screen + self.image = pygame.image.load(r'images/po.png') + self.image = pygame.transform.scale(self.image, (cell, cell)) + def draw(self): + self.screen.blit(self.image, (self.cell*self.ns, self.cell*self.we)) \ No newline at end of file diff --git a/generate.py b/generate.py new file mode 100644 index 0000000..9431b85 --- /dev/null +++ b/generate.py @@ -0,0 +1,121 @@ +class Generate: + @staticmethod + def generate(szerokosc, wysokosc, kruche, latwopalne, radioaktywne, niebezpieczne): + # 1 - sciana + # 2 - podłoga + # 3 - regał od dołu (zwykly) + # 4 - regał od gory (zwykly) + # 5 - regał od lewej (zwykly) + # 6 - regał od prawej (zwykly) + # 7 - regał od dołu (kruche) + # 8 - regał od gory (kruche) + # 9 - regał od lewej (kruche) + # 10 - regał od prawej (kruche) + # 11 - regał od dołu (latwopalne) + # 12 - regał od gory (latwopalne) + # 13 - regał od lewej (latwopalne) + # 14 - regał od prawej (latwopalne) + # 15 - regał od dołu (radioaktywne) + # 16 - regał od gory (radioaktywne) + # 17 - regał od lewej (radioaktywne) + # 18 - regał od prawej (radioaktywne) + # 19 - regał od dołu (niebezpieczne) + # 20 - regał od gory (niebezpieczne) + # 21 - regał od lewej (niebezpieczne) + # 22 - regał od prawej (niebezpieczne) + all = [] + tmp = [] + for i in range(0, wysokosc): + for j in range(0, szerokosc): + tmp.append(2) + all.append(tmp) + tmp = [] + for i in range(0, szerokosc): + all[0][i] = 1 + all[wysokosc-1][i] = 1 + for i in range(0, wysokosc): + all[i][0] = 1 + all[i][szerokosc-1] = 1 + if (kruche>0): + for i in range(2, szerokosc-2): + all[1][i] = 7 + kruche-=1 + elif (latwopalne>0): + for i in range(2, szerokosc-2): + all[1][i] = 11 + latwopalne-=1 + elif (radioaktywne>0): + for i in range(2, szerokosc-2): + all[1][i] = 15 + radioaktywne-=1 + elif (niebezpieczne>0): + for i in range(2, szerokosc-2): + all[1][i] = 19 + niebezpieczne-=1 + else: + for i in range(2, szerokosc-2): + all[1][i] = 3 + if (kruche>0): + for i in range(2, wysokosc-2): + all[i][szerokosc-2] = 9 + kruche-=1 + elif (latwopalne>0): + for i in range(2, wysokosc-2): + all[i][szerokosc-2] = 13 + latwopalne-=1 + elif (radioaktywne>0): + for i in range(2, wysokosc-2): + all[i][szerokosc-2] = 17 + radioaktywne-=1 + elif (niebezpieczne>0): + for i in range(2, wysokosc-2): + all[i][szerokosc-2] = 21 + niebezpieczne-=1 + else: + for i in range(2, wysokosc-2): + all[i][szerokosc-2] = 5 + if (kruche>0): + for i in range(2, szerokosc-2): + all[wysokosc-2][i] = 8 + kruche-=1 + elif (latwopalne>0): + for i in range(2, szerokosc-2): + all[wysokosc-2][i] = 12 + latwopalne-=1 + elif (radioaktywne>0): + for i in range(2, szerokosc-2): + all[wysokosc-2][i] = 16 + radioaktywne-=1 + elif (niebezpieczne>0): + for i in range(2, szerokosc-2): + all[wysokosc-2][i] = 20 + niebezpieczne-=1 + else: + for i in range(2, szerokosc-2): + all[wysokosc-2][i] = 4 + if (kruche>0): + for i in range(2, wysokosc-2): + all[i][1] = 10 + kruche-=1 + elif (latwopalne>0): + for i in range(2, wysokosc-2): + all[i][1] = 14 + latwopalne-=1 + elif (radioaktywne>0): + for i in range(2, wysokosc-2): + all[i][1] = 18 + radioaktywne-=1 + elif (niebezpieczne>0): + for i in range(2, wysokosc-2): + all[i][1] = 22 + niebezpieczne-=1 + else: + for i in range(2, wysokosc-2): + all[i][1] = 6 + all[1][1] = 1 + all[1][szerokosc-2] = 1 + all[wysokosc-2][1] = 1 + all[wysokosc-2][szerokosc-2] = 1 + all[0][2] = 2 + all[1][2] = 2 + return all \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..8ae9b52 --- /dev/null +++ b/main.py @@ -0,0 +1,36 @@ +from easygui import * +from program import MainWindow +import os; + +def main(): + good = False + while (True): + good = True + fieldValues = multenterbox("Wprowadź warunki początkowe", "Start programu", ["Szerekość kraty (>=6)", "Wysokość kraty (>=5)", "Ilość regałów kruchych", "Ilość regałów łatwopalnych", "Ilość regałów radioaktywnych", "Ilość regałów niebezpiecznych"]) + if(fieldValues[0].isnumeric() and (fieldValues[0]!="")): + if(int(fieldValues[0])<=5): + msgbox("Szerokość kraty jest zbyt mała, aby można było uruchomić program", "Błąd") + good = False + elif(good==True): + msgbox("Wartość nie jest liczbą", "Błąd") + good = False + if(fieldValues[1].isnumeric() and (fieldValues[0]!="")): + if((int(fieldValues[1])<=4) and (good==True)): + msgbox("Wysokość kraty jest zbyt mała, aby można było uruchomić program", "Błąd") + good = False + elif (good == True): + msgbox("Wartość nie jest liczbą", "Błąd") + good = False + if ((fieldValues[2].isnumeric()) and (fieldValues[3].isnumeric()) and (fieldValues[4].isnumeric()) and (fieldValues[5].isnumeric()) and (fieldValues[2]!="") and (fieldValues[3]!="") and (fieldValues[4]!="") and (fieldValues[5]!="") and (good==True)): + sum = int(fieldValues[2])+int(fieldValues[3])+int(fieldValues[4])+int(fieldValues[5]) + allow = 6+(((int(fieldValues[0])-6)//3)*2) + if(sum>allow): + msgbox("Magazyn zbyt mały co by pomieścił tyle regałów", "Błąd") + good = False + elif (good == True): + msgbox("Wartość nie jest liczbą", "Błąd") + good = False + if good: + window = MainWindow(int(fieldValues[0]), int(fieldValues[1]), int(fieldValues[2]), int(fieldValues[3]), int(fieldValues[4]), int(fieldValues[5])); + break +main() \ No newline at end of file diff --git a/program.py b/program.py new file mode 100644 index 0000000..9222f95 --- /dev/null +++ b/program.py @@ -0,0 +1,41 @@ +import pygame +from os import sys +from generate import Generate +from floor import Floor +from wall import Wall +from shelf import Shelf +from wheelchair import Wheelchair + +class MainWindow: + def __init__(self, szerokosc, wysokosc, kruche, latwopalne, radioaktywne, niebezpieczne): + #config + self.cell = 50 + #init + pygame.init() + pygame.display.set_caption('Inteligentny wózek widłowy') + self.map = Generate.generate(szerokosc+2, wysokosc+2, kruche, latwopalne, radioaktywne, niebezpieczne) + self.screen = pygame.display.set_mode((((szerokosc+2)*self.cell), ((wysokosc+2)*self.cell))) + #create + for i in range(len(self.map)): + for j in range(len(self.map[i])): + if (self.map[i][j]==1): + self.map[i][j] = Wall(self.screen, self.cell, i, j) + elif (self.map[i][j]==2): + self.map[i][j] = Floor(self.screen, self.cell, i, j) + else: + self.map[i][j] = Shelf(self.screen, self.cell, i, j, (self.map[i][j]-3)%4, (self.map[i][j]-3)//4) + #loop + while True: + self.events() + self.draw() + + def events(self): + for event in pygame.event.get(): + if(event.type==pygame.QUIT): + sys.exit() + def draw(self): + self.screen.fill((255,255,255)) + for i in range(len(self.map)): + for j in range(len(self.map[i])): + self.map[i][j].draw() + pygame.display.flip() \ No newline at end of file diff --git a/shelf.py b/shelf.py new file mode 100644 index 0000000..d6440d9 --- /dev/null +++ b/shelf.py @@ -0,0 +1,18 @@ +import pygame + +class Shelf: + def __init__(self, screen, cell, we, ns, kierunek, rodzaj): + self.cell = cell + self.ns = ns + self.we = we + self.screen = screen + self.image = pygame.image.load(r'images/re.png') + self.image = pygame.transform.scale(self.image, (cell, cell)) + if (kierunek==1): + self.image = pygame.transform.rotate(self.image, 180) + elif (kierunek==2): + self.image = pygame.transform.rotate(self.image, 270) + elif (kierunek==3): + self.image = pygame.transform.rotate(self.image, 90) + def draw(self): + self.screen.blit(self.image, (self.cell*self.ns, self.cell*self.we)) \ No newline at end of file