forked from s444399/AI
Prześlij pliki do ''
This commit is contained in:
parent
a0e1a6b732
commit
48d61c402a
53
program.py
Normal file
53
program.py
Normal 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
73
shelf.py
Normal 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
10
unboxOnTheFloor.py
Normal 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
12
wall.py
Normal 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
114
wheelchair.py
Normal 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)
|
Loading…
Reference in New Issue
Block a user