Praca nad ramami (wiedzą agenta). Eksperymenty z kolorami i zawartością pól.

This commit is contained in:
Dominik Jagosz 2022-03-22 21:52:05 +01:00
parent 2afda6c7ff
commit c9e4022dba
7 changed files with 133 additions and 31 deletions

View File

@ -64,6 +64,14 @@ class Agent:
else:
return False
# ZROBIC sciany
# def wszedlemWSciane(self):
# for wiersz in range (self.poleStartoweGorne.wiersz,self.poleKoncoweDolne.wiersz):
# for kolumna in range(self.poleStartoweGorne.kolumna,self.poleKoncoweDolne.kolumna):
# if self.krata.krata[wiersz][kolumna]==ZawartoscPola.SCIANA:
# return True
# return False
def zawroc(self):
if self.kierunek == Kierunek.GORA:
self.kierunek = Kierunek.DOL

View File

@ -1,14 +0,0 @@
from enum import Enum
class Kierunek(Enum):
GORA = 0
DOL = 1
LEWO = 2
PRAWO = 3
class ZawartoscPola(Enum):
PUSTE = 0
AGENT = 1
LAWA = 2

21
enumy_i_slowniki.py Normal file
View File

@ -0,0 +1,21 @@
from enum import Enum
from stale import *
class Kierunek(Enum):
GORA = 0
DOL = 1
LEWO = 2
PRAWO = 3
class ZawartoscPola(Enum):
PUSTE = 0
SCIANA = 1
ZawartoscPolaNaKolorPola = {
ZawartoscPola.PUSTE: BIALY,
ZawartoscPola.SCIANA: CIEMNY_BRAZOWY1
}

View File

@ -1,6 +1,6 @@
import pygame
from enumy import *
from enumy_i_slowniki import *
from stale import *
@ -44,29 +44,38 @@ class Krata:
self.liczbaPolPionowo = LICZBA_POL_W_PIONIE
self.bokPola = BOK_POLA
self.odstepMiedzyPolami = ODSTEP_MIEDZY_POLAMI
self.krata = self.utworzPustaKrate()
self.utworzPustaKrate()
self.agent = None
def utworzPustaKrate(self):
self.krata = []
for rzad in range(self.liczbaPolPionowo):
for wiersz in range(self.liczbaPolPionowo):
self.krata.append([])
for kolumna in range(self.liczbaPolPoziomo):
self.krata[rzad].append(ZawartoscPola.PUSTE)
zawartosc_pola = ZawartoscPola.PUSTE
# ZROBIC sciany
# if wiersz in (0, self.liczbaPolPionowo - 1) or kolumna in (0, self.liczbaPolPoziomo - 1):
# zawartosc_pola = ZawartoscPola.SCIANA
# if wiersz in range(6,18) and kolumna in (5,15,25,35):
# zawartosc_pola = ZawartoscPola.SCIANA
# if wiersz in (4,22) and kolumna in range (10,35):
# zawartosc_pola = ZawartoscPola.SCIANA
self.krata[wiersz].append(zawartosc_pola)
def wyswietlKrate(self):
# self.narysujKrate()
self.narysujKrateAlternatywnie()
self.narysujKrate()
# self.narysujKrateAlternatywnie()
self.narysujAgenta()
pygame.display.update()
def narysujKrate(self):
self.okno.fill(SZARY1)
for rzad in range(self.liczbaPolPionowo):
for wiersz in range(self.liczbaPolPionowo):
for kolumna in range(self.liczbaPolPoziomo):
start = (self.odstepMiedzyPolami + self.bokPola) * kolumna + self.odstepMiedzyPolami
gora = (self.odstepMiedzyPolami + self.bokPola) * rzad + self.odstepMiedzyPolami
pygame.draw.rect(self.okno, BIALY, [start, gora, self.bokPola, self.bokPola])
gora = (self.odstepMiedzyPolami + self.bokPola) * wiersz + self.odstepMiedzyPolami
kolor_pola = ZawartoscPolaNaKolorPola[self.krata[wiersz][kolumna]]
pygame.draw.rect(self.okno, kolor_pola, [start, gora, self.bokPola, self.bokPola])
def narysujKrateAlternatywnie(self):
self.okno.fill(SZARY1)

View File

@ -8,9 +8,10 @@ Krata = Krata(Okno)
def dodaj_agenta():
pole_lewe_gorne = PoleKraty(Krata, random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH),
random.randint(0, LICZBA_POL_W_POZIOMIE - BOK_AGENTA1_W_POLACH))
pom = 'test1_ikona.png'
# pole_lewe_gorne = PoleKraty(Krata, random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH),
# random.randint(0, LICZBA_POL_W_POZIOMIE - BOK_AGENTA1_W_POLACH))
pole_lewe_gorne = PoleKraty(Krata, 1, 1)
pom = 'traktor_ikona.png'
ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)),
(BOK_AGENTA1, BOK_AGENTA1))
Agent(Krata, pole_lewe_gorne, ikona)

View File

@ -0,0 +1,77 @@
from enumy_i_slowniki import *
from stale import *
class Wymiary:
def __init__(self, dlugosc, szerokosc, wysokosc):
self.dlugosc = dlugosc
self.szerokosc = szerokosc
self.wysokosc = wysokosc
class Mapa:
def __init__(self):
self.liczbaPolPoziomo = LICZBA_POL_W_POZIOMIE
self.liczbaPolPionowo = LICZBA_POL_W_PIONIE
self.bokPola = BOK_POLA
self.odstepMiedzyPolami = ODSTEP_MIEDZY_POLAMI
self.utworzPustaMape()
self.agent = None
def utworzPustaMape(self):
self.krata = []
for wiersz in range(self.liczbaPolPionowo):
self.krata.append([])
for kolumna in range(self.liczbaPolPoziomo):
zawartosc_pola = ZawartoscPola.PUSTE
nowe_pole = PoleMapy(self, wiersz, kolumna, zawartosc_pola)
self.krata[wiersz].append(nowe_pole)
class PoleMapy:
def __init__(self, mapa: Mapa, wiersz, kolumna, zawartosc: ZawartoscPola):
self.mapa = mapa
self.bok = self.mapa.bokPola
self.wiersz = wiersz
self.kolumna = kolumna
self.zawartosc = zawartosc
class WarunkiPowietrza:
def __init__(self, temperatura, wilgotnosc):
self.temperatura = temperatura
self.wilgotnosc = wilgotnosc
class Polka:
def __init__(self, wymiary: Wymiary, udzwig, wysokoscOdPodlogi):
self.wymiary = wymiary
self.udzwig = udzwig
self.wysokoscOdPodlogi = wysokoscOdPodlogi
class Szafka:
def __init__(self, wymiary: Wymiary):
self.wymiary = wymiary
self.Polki = []
self.zajmowanePola = []
def dodajPolke(self, polka: Polka):
self.Polki.append(polka)
def dodajPole(self, pole: PoleMapy):
self.zajmowanePola.append(pole)
class Pomieszczenie:
def __init__(self, warunkiPowietrza: WarunkiPowietrza, wysokoscSufitu):
self.warunkiPowietrza = warunkiPowietrza
self.wysokoscSufitu = wysokoscSufitu
self.Szafki = []
self.zajmowanePola = []
def dodajSzafke(self, szafka: Szafka):
self.Szafki.append(szafka)
def dodajPole(self, pole: PoleMapy):
self.zajmowanePola.append(pole)

View File

@ -3,22 +3,22 @@ FPS = 5
# SZEROKOSC_OKNA = 1500
# WYSOKOSC_OKNA = 750
#
LICZBA_POL_W_POZIOMIE = 60
LICZBA_POL_W_PIONIE = 30
BOK_POLA = 20
ODSTEP_MIEDZY_POLAMI = 2
LICZBA_POL_W_POZIOMIE = 90
LICZBA_POL_W_PIONIE = 50
BOK_POLA = 15
ODSTEP_MIEDZY_POLAMI = 1
SZEROKOSC_OKNA = LICZBA_POL_W_POZIOMIE * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) + ODSTEP_MIEDZY_POLAMI
WYSOKOSC_OKNA = LICZBA_POL_W_PIONIE * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) + ODSTEP_MIEDZY_POLAMI
#
BOK_AGENTA1_W_POLACH = 3
BOK_AGENTA1 = BOK_AGENTA1_W_POLACH * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) - ODSTEP_MIEDZY_POLAMI
KROK_AGENTA1 = 2
#
BIALY = (255, 255, 255)
JASNOSZARY1 = (200, 200, 200)
SZARY1 = (150, 150, 150)
ZIELONY1 = (26, 122, 26)
CZARNY = (0, 0, 0)
CIEMNY_BRAZOWY1 = (60, 19, 33)
###
###