Prześlij pliki do ''

This commit is contained in:
Michal Kijowski 2020-04-05 15:43:07 +00:00
parent a0e1a6b732
commit 48d61c402a
5 changed files with 262 additions and 0 deletions

53
program.py Normal file
View File

@ -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()

73
shelf.py Normal file
View File

@ -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))

10
unboxOnTheFloor.py Normal file
View File

@ -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

12
wall.py Normal file
View File

@ -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))

114
wheelchair.py Normal file
View File

@ -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)