From 48d61c402ac8802ce7321feb867eac429266a9d1 Mon Sep 17 00:00:00 2001 From: Michal Kijowski Date: Sun, 5 Apr 2020 15:43:07 +0000 Subject: [PATCH] =?UTF-8?q?Prze=C5=9Blij=20pliki=20do=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- program.py | 53 +++++++++++++++++++++ shelf.py | 73 +++++++++++++++++++++++++++++ unboxOnTheFloor.py | 10 ++++ wall.py | 12 +++++ wheelchair.py | 114 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 262 insertions(+) create mode 100644 program.py create mode 100644 shelf.py create mode 100644 unboxOnTheFloor.py create mode 100644 wall.py create mode 100644 wheelchair.py diff --git a/program.py b/program.py new file mode 100644 index 0000000..05bd039 --- /dev/null +++ b/program.py @@ -0,0 +1,53 @@ +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 +from boxOnTheFloor import BoxOnTheFloor +from box import Box +from unboxOnTheFloor import UnboxOnTheFloor + +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 + self.wheelChair = WheelChair(self.screen, self.cell); + 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) + elif (self.map[i][j]==23): + self.map[i][j] = UnboxOnTheFloor(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() + elif(event.type==pygame.KEYDOWN): + self.wheelChair.move(event, self.map) + elif(event.type==pygame.MOUSEBUTTONDOWN): + if (type(self.map[0][2]) == Floor): + self.map[0][2] = BoxOnTheFloor(self.screen, self.cell, 0, 2, Box()) + def draw(self): + self.screen.fill((33,69,108)) + for i in range(len(self.map)): + for j in range(len(self.map[i])): + self.map[i][j].draw() + self.wheelChair.draw() + pygame.display.flip() \ No newline at end of file diff --git a/shelf.py b/shelf.py new file mode 100644 index 0000000..a400c44 --- /dev/null +++ b/shelf.py @@ -0,0 +1,73 @@ +import pygame + +class Shelf: + def __init__(self, screen, cell, we, ns, kierunek, rodzaj): + self.kierunek = kierunek + self.rodzaj = rodzaj + self.cell = cell + self.ns = ns + self.we = we + self.screen = screen + self.occupied = False + self.box = False + if (rodzaj==1): + self.image = pygame.image.load(r'images/kr.png') + elif (rodzaj==2): + self.image = pygame.image.load(r'images/la.png') + elif (rodzaj==3): + self.image = pygame.image.load(r'images/ra.png') + elif (rodzaj==4): + self.image = pygame.image.load(r'images/ni.png') + else: + self.image = pygame.image.load(r'images/in.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 isOccupied(self): + return self.occupied + def put(self, boxik): + self.occupied = True + self.box = boxik + if (self.rodzaj==1): + self.image = pygame.image.load(r'images/krp.png') + elif (self.rodzaj==2): + self.image = pygame.image.load(r'images/lap.png') + elif (self.rodzaj==3): + self.image = pygame.image.load(r'images/rap.png') + elif (self.rodzaj==4): + self.image = pygame.image.load(r'images/nip.png') + else: + self.image = pygame.image.load(r'images/inp.png') + self.image = pygame.transform.scale(self.image, (self.cell, self.cell)) + if (self.kierunek==1): + self.image = pygame.transform.rotate(self.image, 180) + elif (self.kierunek==2): + self.image = pygame.transform.rotate(self.image, 270) + elif (self.kierunek==3): + self.image = pygame.transform.rotate(self.image, 90) + def get(self): + self.occupied = False + if (self.rodzaj==1): + self.image = pygame.image.load(r'images/kr.png') + elif (self.rodzaj==2): + self.image = pygame.image.load(r'images/la.png') + elif (self.rodzaj==3): + self.image = pygame.image.load(r'images/ra.png') + elif (self.rodzaj==4): + self.image = pygame.image.load(r'images/ni.png') + else: + self.image = pygame.image.load(r'images/in.png') + self.image = pygame.transform.scale(self.image, (self.cell, self.cell)) + if (self.kierunek==1): + self.image = pygame.transform.rotate(self.image, 180) + elif (self.kierunek==2): + self.image = pygame.transform.rotate(self.image, 270) + elif (self.kierunek==3): + self.image = pygame.transform.rotate(self.image, 90) + return self.box + 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/unboxOnTheFloor.py b/unboxOnTheFloor.py new file mode 100644 index 0000000..8e2ab0e --- /dev/null +++ b/unboxOnTheFloor.py @@ -0,0 +1,10 @@ +import pygame + +class UnboxOnTheFloor: + def __init__(self, screen, cell, we, ns): + self.cell = cell + self.ns = ns + self.we = we + self.screen = screen + def draw(self): + pass \ No newline at end of file diff --git a/wall.py b/wall.py new file mode 100644 index 0000000..269419b --- /dev/null +++ b/wall.py @@ -0,0 +1,12 @@ +import pygame + +class Wall: + 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/sc.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/wheelchair.py b/wheelchair.py new file mode 100644 index 0000000..f3dff63 --- /dev/null +++ b/wheelchair.py @@ -0,0 +1,114 @@ +import pygame +from floor import Floor +from boxOnTheFloor import BoxOnTheFloor +from unboxOnTheFloor import UnboxOnTheFloor +from shelf import Shelf + +class WheelChair: + def __init__(self, screen, cell): + self.cell = cell + self.ns = 1 + self.we = 2 + self.direction = 3 + self.m_ns = 0 + self.m_we = 0 + self.occupied = False + self.box = False + # 1 - w gore + # 2 - w prawo + # 3 - w dol + # 4 - w lewo + self.screen = screen + self.imageorg = pygame.image.load(r'images/wo.png') + self.imageorg = pygame.transform.scale(self.imageorg, (cell, cell)) + self.image = pygame.transform.scale(self.imageorg, (cell, cell)) + def draw(self): + self.screen.blit(self.image, ((self.cell*self.we)+self.m_we, (self.cell*self.ns)+self.m_ns)) + self.m_ns = self.m_ns*(0.9) + self.m_we = self.m_we*(0.9) + def isOccupied(self): + return self.occupied + def putBox(self, boxik): + self.box = boxik + self.occupied = True + self.imageorg = pygame.image.load(r'images/wop.png') + self.imageorg = pygame.transform.scale(self.imageorg, (self.cell, self.cell)) + self.image = pygame.transform.scale(self.imageorg, (self.cell, self.cell)) + def getBox(self): + self.occupied = False + self.imageorg = pygame.image.load(r'images/wo.png') + self.imageorg = pygame.transform.scale(self.imageorg, (self.cell, self.cell)) + self.image = pygame.transform.scale(self.imageorg, (self.cell, self.cell)) + return self.box + def move(self, move, krata): + if(move.key==pygame.K_DOWN): + if(type(krata[self.ns][self.we])==UnboxOnTheFloor): + pass + elif(type(krata[self.ns+1][self.we])==Floor): + self.ns+=1 + self.m_ns=self.cell*(-1) + self.direction = 3 + elif(type(krata[self.ns+1][self.we])==Shelf): + if(self.occupied==True and krata[self.ns+1][self.we].isOccupied()==False and krata[self.ns+1][self.we].kierunek==1): + krata[self.ns+1][self.we].put(self.getBox()) + self.direction = 3 + elif(self.occupied==False and krata[self.ns+1][self.we].isOccupied()==True and krata[self.ns+1][self.we].kierunek==1): + self.putBox(krata[self.ns+1][self.we].get()) + self.direction = 3 + elif(type(krata[self.ns+1][self.we])==UnboxOnTheFloor): + if(self.ns+1==len(krata)-1): + self.ns+=1 + self.m_ns=self.cell*(-1) + self.direction = 1 + self.getBox() + elif(move.key==pygame.K_UP): + if(type(krata[self.ns-1][self.we])==Floor): + self.ns-=1 + self.m_ns=self.cell + self.direction = 1 + elif(type(krata[self.ns-1][self.we])==BoxOnTheFloor): + if(self.occupied==False): + self.putBox(krata[self.ns - 1][self.we].get()) + krata[self.ns - 1][self.we] = Floor(self.screen, self.cell, self.ns - 1, self.we) + self.ns -= 1 + self.m_ns = self.cell + self.direction = 1 + elif(type(krata[self.ns-1][self.we])==Shelf): + if(self.occupied==True and krata[self.ns-1][self.we].isOccupied()==False and krata[self.ns-1][self.we].kierunek==0): + krata[self.ns-1][self.we].put(self.getBox()) + self.direction = 1 + elif(self.occupied==False and krata[self.ns-1][self.we].isOccupied()==True and krata[self.ns-1][self.we].kierunek==0): + self.putBox(krata[self.ns-1][self.we].get()) + self.direction = 1 + elif(move.key==pygame.K_LEFT): + if(type(krata[self.ns][self.we-1])==Floor): + self.we-=1 + self.m_we=self.cell + self.direction = 4 + elif(type(krata[self.ns][self.we-1])==Shelf): + if(self.occupied==True and krata[self.ns][self.we-1].isOccupied()==False and krata[self.ns][self.we-1].kierunek==3): + krata[self.ns][self.we-1].put(self.getBox()) + self.direction = 4 + elif(self.occupied==False and krata[self.ns][self.we-1].isOccupied()==True and krata[self.ns][self.we-1].kierunek==3): + self.putBox(krata[self.ns][self.we-1].get()) + self.direction = 4 + elif(move.key==pygame.K_RIGHT): + if(type(krata[self.ns][self.we+1])==Floor): + self.we+=1 + self.m_we=self.cell*(-1) + self.direction = 2 + elif(type(krata[self.ns][self.we+1])==Shelf): + if(self.occupied==True and krata[self.ns][self.we+1].isOccupied()==False and krata[self.ns][self.we+1].kierunek==2): + krata[self.ns][self.we+1].put(self.getBox()) + self.direction = 2 + elif(self.occupied==False and krata[self.ns][self.we+1].isOccupied()==True and krata[self.ns][self.we+1].kierunek==2): + self.putBox(krata[self.ns][self.we+1].get()) + self.direction = 2 + if (self.direction==1): + self.image = pygame.transform.rotate(self.imageorg, 180) + elif (self.direction==2): + self.image = pygame.transform.rotate(self.imageorg, 90) + elif (self.direction==3): + self.image = pygame.transform.rotate(self.imageorg, 0) + elif (self.direction==4): + self.image = pygame.transform.rotate(self.imageorg, 270) \ No newline at end of file