2022-05-11 17:32:28 +02:00
import ctypes
2022-03-07 20:41:12 +01:00
import os
2022-05-11 17:32:28 +02:00
import threading
2022-03-07 20:41:12 +01:00
2022-04-28 16:50:19 +02:00
import pygame . transform
2022-06-01 17:08:33 +02:00
import szafka2
2022-03-21 22:12:01 +01:00
from agent import *
2022-04-16 16:45:37 +02:00
from okno import *
2022-03-27 23:08:35 +02:00
from ramy_czyli_wiedza_agenta import *
2022-05-11 17:32:28 +02:00
from rescue import *
2022-05-25 20:20:09 +02:00
from neural_network import *
2022-06-01 17:08:33 +02:00
import random
2022-04-06 14:05:40 +02:00
# aby działalo w oknie + rozdzielczość ekranu
# ctypes.windll.shcore.SetProcessDpiAwareness(1)
2022-03-07 20:41:12 +01:00
2022-04-16 16:45:37 +02:00
okno_pygame = pygame . display . set_mode ( ( SZEROKOSC_OKNA , WYSOKOSC_OKNA ) )
2022-03-07 20:41:12 +01:00
pygame . display . set_caption ( " Okno1 " )
2022-04-16 16:45:37 +02:00
krata_magazynu = Krata ( okno_pygame )
2022-04-06 14:05:40 +02:00
Pomieszczenie = Pomieszczenie ( WarunkiPowietrza ( 0 , 0 ) , 0 )
2022-03-22 11:20:58 +01:00
2022-03-21 22:05:28 +01:00
def dodaj_agenta ( ) :
2022-04-16 16:45:37 +02:00
# pole_lewe_gorne = PoleKraty(krata_magazynu, random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH),
2022-03-22 21:52:05 +01:00
# random.randint(0, LICZBA_POL_W_POZIOMIE - BOK_AGENTA1_W_POLACH))
2022-04-16 16:45:37 +02:00
# pole_lewe_gorne = PoleKraty(krata_magazynu, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH, int(LICZBA_POL_W_POZIOMIE / 2))
pole_lewe_gorne = PoleKraty ( krata_magazynu , 0 , 0 )
2022-05-16 21:41:38 +02:00
pom = ' wozek_widlowy.png '
2022-03-21 22:05:28 +01:00
ikona = pygame . transform . scale ( pygame . image . load ( os . path . join ( ' Ikony ' , pom ) ) ,
( BOK_AGENTA1 , BOK_AGENTA1 ) )
2022-04-16 16:45:37 +02:00
Agent ( krata_magazynu , pole_lewe_gorne , ikona )
2022-04-06 14:05:40 +02:00
# zawsze na poczatku polnoc
2022-04-16 16:45:37 +02:00
krata_magazynu . agent . kierunek = Kierunek . POLNOC
2022-04-06 14:05:40 +02:00
2022-03-09 12:27:02 +01:00
2022-04-06 14:05:40 +02:00
def dodaj_szafke ( numerSzafki , iloscPolek , iloscMiejscNaPolce , dostepZeStrony , poczatek_wiersz , poczatek_kolumna ) :
2022-03-27 23:08:35 +02:00
wymiary_szafki = Wymiary ( 0 , 0 , 0 )
2022-04-06 14:05:40 +02:00
szafka = Szafka ( numerSzafki , wymiary_szafki , iloscPolek , iloscMiejscNaPolce , dostepZeStrony , poczatek_wiersz ,
2022-04-16 16:45:37 +02:00
poczatek_kolumna , krata_magazynu )
2022-03-27 23:08:35 +02:00
Pomieszczenie . dodajSzafke ( szafka )
2022-06-01 17:08:33 +02:00
def gdzie_paczka ( numerSzafki ) :
2022-06-01 23:03:34 +02:00
global kolumna , wiersz
2022-06-01 17:08:33 +02:00
if numerSzafki == 1 :
kolumna = random . randint ( 1 , 2 )
if kolumna == 1 :
wiersz = random . randint ( 2 , 13 )
else :
wiersz = random . choice ( [ 1 , 14 ] )
if numerSzafki == 2 :
kolumna = random . randint ( 3 , 4 )
if kolumna == 3 :
wiersz = random . choice ( [ 1 , 14 ] )
else :
wiersz = random . randint ( 2 , 13 )
if numerSzafki == 3 :
kolumna = random . randint ( 5 , 8 )
if kolumna == 5 :
wiersz = random . randint ( 1 , 5 )
if kolumna == 6 :
wiersz = random . choice ( [ 0 , 6 ] )
if kolumna == 7 :
wiersz = random . choice ( [ 0 , 7 ] )
if kolumna == 8 :
wiersz = random . randint ( 1 , 6 )
if numerSzafki == 4 :
kolumna = random . randint ( 5 , 8 )
if kolumna == 5 :
wiersz = random . randint ( 9 , 12 )
if kolumna == 6 :
wiersz = random . choice ( [ 8 , 13 ] )
if kolumna == 7 :
wiersz = random . choice ( [ 9 , 13 ] )
if kolumna == 8 :
wiersz = random . randint ( 10 , 12 )
if numerSzafki == 5 :
kolumna = random . randint ( 10 , 12 )
if kolumna == 11 :
wiersz = random . choice ( [ 2 , 11 ] )
else :
wiersz = random . randint ( 3 , 10 )
if numerSzafki == 6 :
kolumna = random . randint ( 12 , 14 )
if kolumna == 13 :
wiersz = random . choice ( [ 1 , 12 ] )
else :
wiersz = random . randint ( 2 , 11 )
if numerSzafki == 7 :
kolumna = random . randint ( 17 , 19 )
if kolumna == 18 :
wiersz = random . choice ( [ 0 , 13 ] )
else :
wiersz = random . randint ( 1 , 12 )
if numerSzafki == 8 :
kolumna = random . randint ( 22 , 24 )
if kolumna == 23 :
wiersz = random . choice ( [ 4 , 12 ] )
else :
wiersz = random . randint ( 5 , 11 )
if numerSzafki == 9 :
kolumna = random . randint ( 24 , 26 )
if kolumna == 25 :
wiersz = random . choice ( [ 0 , 13 ] )
else :
wiersz = random . randint ( 1 , 12 )
if numerSzafki == 10 :
kolumna = random . randint ( 27 , 29 )
if kolumna == 28 :
wiersz = random . choice ( [ 4 , 14 ] )
else :
wiersz = random . randint ( 5 , 13 )
2022-06-01 23:03:34 +02:00
if numerSzafki == 11 :
kolumna = 0
wiersz = 0
2022-06-01 17:08:33 +02:00
print ( wiersz , kolumna )
return wiersz , kolumna
def ustawienie ( ) :
ostatnia = recognition ( )
print ( ostatnia )
2022-04-06 14:05:40 +02:00
kierunek = Kierunek ( random . randint ( 0 , 3 ) )
2022-06-01 17:08:33 +02:00
wiersz , kolumna = gdzie_paczka ( ostatnia + 1 )
2022-04-16 16:45:37 +02:00
return Stan ( kierunek , PoleKraty ( krata_magazynu , wiersz , kolumna ) )
2022-06-01 23:03:34 +02:00
def wroc ( ) :
kierunek = Kierunek ( random . randint ( 0 , 3 ) )
wiersz , kolumna = gdzie_paczka ( 11 )
return Stan ( kierunek , PoleKraty ( krata_magazynu , wiersz , kolumna ) )
2022-04-16 16:45:37 +02:00
def zaznacz_cel_na_mapie ( cel : Stan ) :
wiersz = cel . poleStartoweGorne . wiersz
kolumna = cel . poleStartoweGorne . kolumna
if krata_magazynu . krata [ wiersz ] [ kolumna ] == ZawartoscPola . PUSTE :
krata_magazynu . krata [ wiersz ] [ kolumna ] = ZawartoscPola . CEL
def nadaj_cel_agentowi ( agent : Agent ) :
2022-06-01 17:08:33 +02:00
agent . cel = ustawienie ( )
2022-04-16 16:45:37 +02:00
zaznacz_cel_na_mapie ( agent . cel )
print ( " CEL: " , agent . cel . poleStartoweGorne . wiersz , agent . cel . poleStartoweGorne . kolumna )
2022-04-06 14:05:40 +02:00
2022-06-01 23:03:34 +02:00
def cel_wroc ( agent : Agent ) :
agent . cel = wroc ( )
zaznacz_cel_na_mapie ( agent . cel )
2022-05-11 17:32:28 +02:00
def zdarzenie_osoba ( ) :
global flaga1
flaga1 = 1
def losowa_osoba ( ) :
wiersz = random . randint ( 0 , krata_magazynu . liczbaPolPionowo - 1 )
kolumna = random . randint ( 0 , krata_magazynu . liczbaPolPoziomo - 1 )
osoba = PoleKraty ( krata_magazynu , wiersz , kolumna )
return osoba
2022-04-06 14:05:40 +02:00
2022-03-08 23:00:29 +01:00
def main ( ) :
2022-04-16 16:45:37 +02:00
# dla kraty 30 x 15
2022-04-18 23:28:28 +02:00
dodaj_szafke ( " A " , 2 , 12 , " P " , 2 , 2 )
dodaj_szafke ( " B " , 2 , 12 , " L " , 2 , 3 )
dodaj_szafke ( " C " , 2 , 5 , " P " , 1 , 6 )
dodaj_szafke ( " D " , 2 , 6 , " L " , 1 , 7 )
dodaj_szafke ( " C " , 2 , 4 , " P " , 9 , 6 )
dodaj_szafke ( " D " , 2 , 3 , " L " , 10 , 7 )
dodaj_szafke ( " E " , 2 , 8 , " P " , 3 , 11 )
dodaj_szafke ( " F " , 2 , 10 , " L " , 2 , 13 )
dodaj_szafke ( " H " , 2 , 12 , " L " , 1 , 18 )
dodaj_szafke ( " I " , 2 , 7 , " P " , 5 , 23 )
dodaj_szafke ( " J " , 2 , 12 , " L " , 1 , 25 )
dodaj_szafke ( " G " , 2 , 9 , " P " , 5 , 28 )
# # dla kraty 10 x 10
# dodaj_szafke("A", 1, 8, "P", 1, 1)
# dodaj_szafke("B", 1, 8, "L", 1, 4)
# dodaj_szafke("C", 1, 8, "P", 1, 6)
# dodaj_szafke("C", 1, 8, "P", 1, 8)
# # dla kraty 5 x 5
# dodaj_szafke("A", 1, 3, "P", 1, 1)
# dodaj_szafke("B", 1, 3, "L", 1, 3)
for i in (
( 1 , 10 ) , ( 1 , 3 ) , ( 3 , 23 ) , ( 2 , 23 ) , ( 5 , 15 ) , ( 4 , 15 ) , ( 9 , 12 ) , ( 11 , 20 ) , ( 11 , 27 ) , ( 11 , 26 ) , ( 14 , 19 ) ,
( 14 , 18 ) ,
( 14 , 20 ) , ( 8 , 29 ) , ( 9 , 29 ) ) :
krata_magazynu . krata [ i [ 0 ] ] [ i [ 1 ] ] = ZawartoscPola . DYWAN
for i in (
( 0 , 10 ) , ( 13 , 20 ) , ( 13 , 6 ) , ( 13 , 14 ) , ( 14 , 13 ) , ( 9 , 26 ) , ( 9 , 16 ) , ( 9 , 15 ) , ( 9 , 27 ) , ( 9 , 16 ) , ( 9 , 26 ) ,
( 5 , 8 ) ,
( 5 , 9 ) , ( 7 , 9 ) , ( 7 , 10 ) ) :
krata_magazynu . krata [ i [ 0 ] ] [ i [ 1 ] ] = ZawartoscPola . KALUZA
2022-04-06 14:05:40 +02:00
2022-05-11 17:32:28 +02:00
for i in range ( LICZBA_POL_W_PIONIE ) :
krata_magazynu . krata [ i ] [ 21 ] = ZawartoscPola . SCIANA2
krata_magazynu . krata [ 0 ] [ 21 ] = ZawartoscPola . PUSTE
krata_magazynu . krata [ 7 ] [ 21 ] = ZawartoscPola . PUSTE
krata_magazynu . krata [ 14 ] [ 21 ] = ZawartoscPola . PUSTE
2022-04-06 14:05:40 +02:00
2022-05-11 17:32:28 +02:00
dodaj_agenta ( )
2022-04-16 16:45:37 +02:00
okno1 = Okno ( krata_magazynu , krata_magazynu . agent )
okno1 . wyswietlOkno ( )
2022-04-06 14:05:40 +02:00
2022-05-11 17:32:28 +02:00
t = threading . Timer ( 5.0 , zdarzenie_osoba ) . start ( )
osoba = PoleKraty ( krata_magazynu , 0 , 0 )
clf = drzewo_decyzyjne ( )
global flaga1
flaga1 = 0
2022-04-16 16:45:37 +02:00
while True :
2022-04-06 14:05:40 +02:00
# cel to Stan (pole kraty gdzie ma stać agent, aby położyć paczkę na półkę, w obiekcie klasy Miejsce jest to artybut dostęp + kierunek <-na razie niepotrzebny)
2022-04-16 16:45:37 +02:00
if krata_magazynu . agent . cel is None :
nadaj_cel_agentowi ( krata_magazynu . agent )
krata_magazynu . agent . idzDoCelu ( )
2022-06-01 23:03:34 +02:00
cel_wroc ( krata_magazynu . agent )
krata_magazynu . agent . idzDoCelu ( )
2022-03-08 18:38:43 +01:00
2022-05-11 17:32:28 +02:00
if flaga1 == 1 :
osoba . krata . krata [ osoba . wiersz ] [ osoba . kolumna ] = ZawartoscPola . PUSTE
okno1 . wyswietlOkno ( )
osoba = losowa_osoba ( )
while osoba . krata . krata [ osoba . wiersz ] [ osoba . kolumna ] != ZawartoscPola . PUSTE :
osoba = losowa_osoba ( )
osoba . krata . krata [ osoba . wiersz ] [ osoba . kolumna ] = ZawartoscPola . OSOBA
okno1 . wyswietlOkno ( )
pygame . time . wait ( 1000 )
answer = decyzja_osoba ( osoba , clf )
if answer == 1 :
osoba . krata . krata [ osoba . wiersz ] [ osoba . kolumna ] = ZawartoscPola . PUSTE
okno1 . wyswietlOkno ( )
bieg = pygame . transform . scale ( pygame . image . load ( os . path . join ( ' Ikony ' , ' bieg.png ' ) ) ,
( BOK_AGENTA1 , BOK_AGENTA1 ) )
okno_pygame . blit ( bieg , ( osoba . kolumna * ( BOK_POLA + 1 ) + 1 , osoba . wiersz * ( BOK_POLA + 1 ) + 1 ) )
pygame . display . flip ( )
pygame . time . wait ( 1500 )
flaga1 = 0
t = threading . Timer ( 5.0 , zdarzenie_osoba ) . start ( )
2022-05-30 17:56:30 +02:00
2022-03-07 20:41:12 +01:00
2022-04-16 16:45:37 +02:00
try :
main ( )
except pygame . error :
pygame . quit ( )