Merge remote-tracking branch 'origin/kratownica1'
# Conflicts: # agent.py # main.py # stale.py
This commit is contained in:
commit
08014b063f
@ -4,7 +4,7 @@
|
|||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Python 3.10 (Sztuczna_Inteligencja_Gr16)" jdkType="Python SDK" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
Binary file not shown.
Before Width: | Height: | Size: 1.0 KiB |
95
agent.py
95
agent.py
@ -1,95 +0,0 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
from stale import *
|
|
||||||
|
|
||||||
|
|
||||||
class Agent1:
|
|
||||||
def __init__(self, hitbox, tekstura, kierunek, droga):
|
|
||||||
self.hitbox = hitbox
|
|
||||||
self.tekstura = tekstura
|
|
||||||
self.kierunek = kierunek
|
|
||||||
self.droga = droga
|
|
||||||
|
|
||||||
def obierzNowyKierunek(self):
|
|
||||||
self.kierunek = KIERUNEK(random.randint(0, 3))
|
|
||||||
|
|
||||||
def okreslDlugoscDrogi(self):
|
|
||||||
losowa_droga = None
|
|
||||||
if self.kierunek == KIERUNEK.GORA:
|
|
||||||
losowa_droga = random.randint(0, self.hitbox.y)
|
|
||||||
elif self.kierunek == KIERUNEK.DOL:
|
|
||||||
losowa_droga = random.randint(0, WYSOKOSC_OKNA - self.hitbox.y)
|
|
||||||
elif self.kierunek == KIERUNEK.LEWO:
|
|
||||||
losowa_droga = random.randint(0, self.hitbox.x)
|
|
||||||
elif self.kierunek == KIERUNEK.PRAWO:
|
|
||||||
losowa_droga = random.randint(0, SZEROKOSC_OKNA - self.hitbox.x)
|
|
||||||
self.droga = losowa_droga - losowa_droga % KROK_AGENTA1
|
|
||||||
|
|
||||||
def idzWGore(self):
|
|
||||||
if self.hitbox.y - KROK_AGENTA1 > 0:
|
|
||||||
self.hitbox.y -= KROK_AGENTA1
|
|
||||||
self.droga -= KROK_AGENTA1
|
|
||||||
else:
|
|
||||||
self.droga = 0
|
|
||||||
|
|
||||||
def idzWDol(self):
|
|
||||||
if self.hitbox.y + KROK_AGENTA1 < WYSOKOSC_OKNA - self.hitbox.height:
|
|
||||||
self.hitbox.y += KROK_AGENTA1
|
|
||||||
self.droga -= KROK_AGENTA1
|
|
||||||
else:
|
|
||||||
self.droga = 0
|
|
||||||
|
|
||||||
def idzWLewo(self):
|
|
||||||
if self.hitbox.x - KROK_AGENTA1 > 0:
|
|
||||||
self.hitbox.x -= KROK_AGENTA1
|
|
||||||
self.droga -= KROK_AGENTA1
|
|
||||||
else:
|
|
||||||
self.droga = 0
|
|
||||||
|
|
||||||
def idzWPrawo(self):
|
|
||||||
if self.hitbox.x + KROK_AGENTA1 < SZEROKOSC_OKNA - self.hitbox.width:
|
|
||||||
self.hitbox.x += KROK_AGENTA1
|
|
||||||
self.droga -= KROK_AGENTA1
|
|
||||||
else:
|
|
||||||
self.droga = 0
|
|
||||||
|
|
||||||
def czyWszedlesWInnegoAgenta(self, Agenci):
|
|
||||||
for a in Agenci:
|
|
||||||
if a.hitbox.colliderect(self.hitbox) and a != self:
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def ruszSie(self, Agenci):
|
|
||||||
if self.kierunek == KIERUNEK.GORA:
|
|
||||||
self.idzWGore()
|
|
||||||
elif self.kierunek == KIERUNEK.DOL:
|
|
||||||
self.idzWDol()
|
|
||||||
elif self.kierunek == KIERUNEK.LEWO:
|
|
||||||
self.idzWLewo()
|
|
||||||
elif self.kierunek == KIERUNEK.PRAWO:
|
|
||||||
self.idzWPrawo()
|
|
||||||
if self.czyWszedlesWInnegoAgenta(Agenci):
|
|
||||||
self.cofnijSie()
|
|
||||||
self.zawroc()
|
|
||||||
self.okreslDlugoscDrogi()
|
|
||||||
# self.ruszSie(Agenci)
|
|
||||||
|
|
||||||
def cofnijSie(self):
|
|
||||||
if self.kierunek == KIERUNEK.GORA:
|
|
||||||
self.idzWDol()
|
|
||||||
elif self.kierunek == KIERUNEK.DOL:
|
|
||||||
self.idzWGore()
|
|
||||||
elif self.kierunek == KIERUNEK.LEWO:
|
|
||||||
self.idzWPrawo()
|
|
||||||
elif self.kierunek == KIERUNEK.PRAWO:
|
|
||||||
self.idzWLewo()
|
|
||||||
|
|
||||||
def zawroc(self):
|
|
||||||
if self.kierunek == KIERUNEK.GORA:
|
|
||||||
self.kierunek = KIERUNEK.DOL
|
|
||||||
elif self.kierunek == KIERUNEK.DOL:
|
|
||||||
self.kierunek = KIERUNEK.GORA
|
|
||||||
elif self.kierunek == KIERUNEK.LEWO:
|
|
||||||
self.kierunek = KIERUNEK.PRAWO
|
|
||||||
elif self.kierunek == KIERUNEK.PRAWO:
|
|
||||||
self.kierunek = KIERUNEK.LEWO
|
|
14
enumy.py
Normal file
14
enumy.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class Kierunek(Enum):
|
||||||
|
GORA = 0
|
||||||
|
DOL = 1
|
||||||
|
LEWO = 2
|
||||||
|
PRAWO = 3
|
||||||
|
|
||||||
|
|
||||||
|
class ZawartoscPola(Enum):
|
||||||
|
PUSTE = 0
|
||||||
|
AGENT = 1
|
||||||
|
LAWA = 2
|
73
krata.py
Normal file
73
krata.py
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
import pygame
|
||||||
|
|
||||||
|
from enumy import *
|
||||||
|
from stale import *
|
||||||
|
|
||||||
|
|
||||||
|
class PoleKraty:
|
||||||
|
def __init__(self, Krata, wiersz, kolumna):
|
||||||
|
self.krata = Krata
|
||||||
|
self.bok = self.krata.bokPola
|
||||||
|
self._wiersz = wiersz
|
||||||
|
self._kolumna = kolumna
|
||||||
|
self.okreslGore()
|
||||||
|
self.okreslStart()
|
||||||
|
|
||||||
|
def okreslGore(self):
|
||||||
|
self.gora = (self.bok + self.krata.odstepMiedzyPolami) * self.wiersz + self.krata.odstepMiedzyPolami
|
||||||
|
|
||||||
|
def okreslStart(self):
|
||||||
|
self.start = (self.bok + self.krata.odstepMiedzyPolami) * self.kolumna + self.krata.odstepMiedzyPolami
|
||||||
|
|
||||||
|
def getWiersz(self):
|
||||||
|
return self._wiersz
|
||||||
|
|
||||||
|
def setWiersz(self, x):
|
||||||
|
self._wiersz = x
|
||||||
|
self.okreslGore()
|
||||||
|
|
||||||
|
def getKolumna(self):
|
||||||
|
return self._kolumna
|
||||||
|
|
||||||
|
def setKolumna(self, x):
|
||||||
|
self._kolumna = x
|
||||||
|
self.okreslStart()
|
||||||
|
|
||||||
|
wiersz = property(getWiersz, setWiersz)
|
||||||
|
kolumna = property(getKolumna, setKolumna)
|
||||||
|
|
||||||
|
|
||||||
|
class Krata:
|
||||||
|
def __init__(self, okno):
|
||||||
|
self.okno = okno
|
||||||
|
self.liczbaPolPoziomo = LICZBA_POL_W_POZIOMIE
|
||||||
|
self.liczbaPolPionowo = LICZBA_POL_W_PIONIE
|
||||||
|
self.bokPola = BOK_POLA
|
||||||
|
self.odstepMiedzyPolami = ODSTEP_MIEDZY_POLAMI
|
||||||
|
self.krata = self.utworzPustaKrate()
|
||||||
|
self.agent = None
|
||||||
|
|
||||||
|
def utworzPustaKrate(self):
|
||||||
|
self.krata = []
|
||||||
|
for rzad in range(self.liczbaPolPionowo):
|
||||||
|
self.krata.append([])
|
||||||
|
for kolumna in range(self.liczbaPolPoziomo):
|
||||||
|
self.krata[rzad].append(ZawartoscPola.PUSTE)
|
||||||
|
|
||||||
|
def wyswietlKrate(self):
|
||||||
|
self.narysujKrate()
|
||||||
|
self.narysujAgenta()
|
||||||
|
pygame.display.update()
|
||||||
|
|
||||||
|
def narysujKrate(self):
|
||||||
|
self.okno.fill(SZARY1)
|
||||||
|
for rzad 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])
|
||||||
|
|
||||||
|
def narysujAgenta(self):
|
||||||
|
if self.agent is not None:
|
||||||
|
self.okno.blit(self.agent.tekstura, (self.agent.hitbox.x, self.agent.hitbox.y))
|
||||||
|
self.agent.ruszSie()
|
65
main.py
65
main.py
@ -1,68 +1,24 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import pygame
|
|
||||||
from agent import *
|
from agent import *
|
||||||
from stale import *
|
|
||||||
import stale
|
|
||||||
|
|
||||||
OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
|
Okno = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
|
||||||
pygame.display.set_caption("Okno1")
|
pygame.display.set_caption("Okno1")
|
||||||
Agenci1 = []
|
Krata = Krata(Okno)
|
||||||
|
|
||||||
def kratka(surface):
|
|
||||||
for i in range(stale.NUMBER_OF_BLOCKS_WIDE):
|
|
||||||
new_height=round(i*BLOCK_HEIGHT)
|
|
||||||
new_width =round(i*BLOCK_HEIGHT)
|
|
||||||
pygame.draw.line(surface, BLACK,(0,new_height),(SZEROKOSC_OKNA,new_height),2)
|
|
||||||
pygame.draw.line(surface,BLACK,(new_width,0),(new_width,WYSOKOSC_OKNA),2)
|
|
||||||
|
|
||||||
def wyswietl_okno():
|
|
||||||
OKNO.fill(JASNOSZARY1)
|
|
||||||
for a in Agenci1:
|
|
||||||
OKNO.blit(a.tekstura, (a.hitbox.x, a.hitbox.y))
|
|
||||||
if a.droga == 0:
|
|
||||||
a.obierzNowyKierunek()
|
|
||||||
a.okreslDlugoscDrogi()
|
|
||||||
a.ruszSie(Agenci1)
|
|
||||||
kratka(OKNO)
|
|
||||||
pygame.display.update()
|
|
||||||
|
|
||||||
|
|
||||||
def dodaj_agenta1():
|
#
|
||||||
los = None
|
def dodaj_agenta():
|
||||||
if len(Agenci1) in range(0, 1):
|
pole_lewe_gorne = PoleKraty(Krata, random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH),
|
||||||
los = random.randint(1, 15)
|
random.randint(0, LICZBA_POL_W_POZIOMIE - BOK_AGENTA1_W_POLACH))
|
||||||
if los != None:
|
pom = 'test1_ikona.png'
|
||||||
pom = None
|
|
||||||
if los in (1, 2) or len(Agenci1) == 0:
|
|
||||||
pom = 'wozek.png'
|
|
||||||
elif los in (3, 4):
|
|
||||||
pom = 'wozek_ze_skrzynka.png'
|
|
||||||
elif los == 5 and len(Agenci1) > 6:
|
|
||||||
pom = 'traktor_ikona.png'
|
|
||||||
if pom != None:
|
|
||||||
x, y = random.randint(0, SZEROKOSC_OKNA - BOK_AGENTA1), random.randint(0, WYSOKOSC_OKNA - BOK_AGENTA1)
|
|
||||||
hitbox = pygame.Rect(x, y, BOK_AGENTA1, BOK_AGENTA1)
|
|
||||||
warunek = True
|
|
||||||
for a in Agenci1:
|
|
||||||
if a.hitbox.colliderect(hitbox):
|
|
||||||
warunek = False
|
|
||||||
break
|
|
||||||
if warunek:
|
|
||||||
ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)),
|
ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)),
|
||||||
(BOK_AGENTA1, BOK_AGENTA1))
|
(BOK_AGENTA1, BOK_AGENTA1))
|
||||||
Agenci1.append(Agent1(hitbox, ikona, KIERUNEK.GORA, 0))
|
Agent(Krata, pole_lewe_gorne, ikona)
|
||||||
|
|
||||||
def dodaj_agenta2():
|
|
||||||
los = None
|
|
||||||
if len(Agenci1) in range(0, 1):
|
|
||||||
los = random.randint(1, 15)
|
|
||||||
pom = 'wozek.png'
|
|
||||||
if pom != None:
|
|
||||||
x, y = random.randint(0, SZEROKOSC_OKNA - BOK_AGENTA1), random.randint(0, WYSOKOSC_OKNA - BOK_AGENTA1)
|
|
||||||
hitbox = pygame.Rect(x, y, BOK_AGENTA1, BOK_AGENTA1)
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
dodaj_agenta()
|
||||||
klatkaz = pygame.time.Clock()
|
klatkaz = pygame.time.Clock()
|
||||||
warunek_dzialania = True
|
warunek_dzialania = True
|
||||||
while warunek_dzialania:
|
while warunek_dzialania:
|
||||||
@ -71,8 +27,7 @@ def main():
|
|||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
warunek_dzialania = False
|
warunek_dzialania = False
|
||||||
break
|
break
|
||||||
wyswietl_okno()
|
Krata.wyswietlKrate()
|
||||||
dodaj_agenta1()
|
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
|
|
||||||
|
|
||||||
|
27
stale.py
27
stale.py
@ -1,13 +1,24 @@
|
|||||||
from enum import Enum
|
FPS = 10
|
||||||
|
|
||||||
FPS = 120
|
# SZEROKOSC_OKNA = 1500
|
||||||
|
# WYSOKOSC_OKNA = 750
|
||||||
|
|
||||||
|
LICZBA_POL_W_POZIOMIE = 60
|
||||||
|
LICZBA_POL_W_PIONIE = 30
|
||||||
|
BOK_POLA = 20
|
||||||
|
ODSTEP_MIEDZY_POLAMI = 2
|
||||||
|
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
|
KROK_AGENTA1 = 2
|
||||||
SZEROKOSC_OKNA = 1080
|
|
||||||
WYSOKOSC_OKNA = 760
|
|
||||||
BOK_AGENTA1 = 100
|
|
||||||
BIALY = (255, 255, 255)
|
BIALY = (255, 255, 255)
|
||||||
JASNOSZARY1 = (200, 200, 200)
|
JASNOSZARY1 = (200, 200, 200)
|
||||||
|
SZARY1 = (150, 150, 150)
|
||||||
ZIELONY1 = (26, 122, 26)
|
ZIELONY1 = (26, 122, 26)
|
||||||
|
|
||||||
GREY =(150,150,150)
|
GREY =(150,150,150)
|
||||||
RED =(255,0,0)
|
RED =(255,0,0)
|
||||||
BLUE=(55,55,255)
|
BLUE=(55,55,255)
|
||||||
@ -25,9 +36,3 @@ BLOCK_HEIGHT=round(SZEROKOSC_OKNA/NUMBER_OF_BLOCKS_HIGH)
|
|||||||
BLOCK_WIDTH=round(WYSOKOSC_OKNA/NUMBER_OF_BLOCKS_WIDE)
|
BLOCK_WIDTH=round(WYSOKOSC_OKNA/NUMBER_OF_BLOCKS_WIDE)
|
||||||
MAPFILE="map.txt"
|
MAPFILE="map.txt"
|
||||||
TITLE ="Gierka"
|
TITLE ="Gierka"
|
||||||
|
|
||||||
class KIERUNEK(Enum):
|
|
||||||
GORA = 0
|
|
||||||
DOL = 1
|
|
||||||
LEWO = 2
|
|
||||||
PRAWO = 3
|
|
||||||
|
Loading…
Reference in New Issue
Block a user