Prześlij pliki do ''
Wprowadzono zarys GUI
This commit is contained in:
parent
fff6fc61bc
commit
ab620a69b0
12
floor.py
Normal file
12
floor.py
Normal file
@ -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))
|
121
generate.py
Normal file
121
generate.py
Normal file
@ -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
|
36
main.py
Normal file
36
main.py
Normal file
@ -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()
|
41
program.py
Normal file
41
program.py
Normal file
@ -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()
|
18
shelf.py
Normal file
18
shelf.py
Normal file
@ -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))
|
Loading…
Reference in New Issue
Block a user