Stworzenie kraty (prawdziwej, z polami). Losowanie na nią agentów zajmujących nxn pól.
This commit is contained in:
parent
61c8f63437
commit
9ca4f821e1
@ -4,7 +4,7 @@
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.10 (Sztuczna_Inteligencja_Gr16)" jdkType="Python SDK" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.9 (sztucznosc)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (Sztuczna_Inteligencja_Gr16)" project-jdk-type="Python SDK" />
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (sztucznosc)" project-jdk-type="Python SDK" />
|
||||
</project>
|
Binary file not shown.
Before Width: | Height: | Size: 1.0 KiB |
15
agenci.py
15
agenci.py
@ -1,11 +1,17 @@
|
||||
import random
|
||||
|
||||
import pygame
|
||||
|
||||
from stale import *
|
||||
|
||||
|
||||
class Agent1:
|
||||
def __init__(self, hitbox, tekstura, kierunek, droga):
|
||||
self.hitbox = hitbox
|
||||
bok = BOK_AGENTA1
|
||||
bok_w_polach = BOK_AGENTA1_W_POLACH
|
||||
|
||||
def __init__(self, pole_lewe_gorne, tekstura, kierunek, droga):
|
||||
self.pole_lewe_gorne = pole_lewe_gorne
|
||||
self.hitbox = pygame.Rect(self.pole_lewe_gorne.x_lewego_boku, self.pole_lewe_gorne.y_gory, self.bok, self.bok)
|
||||
self.tekstura = tekstura
|
||||
self.kierunek = kierunek
|
||||
self.droga = droga
|
||||
@ -93,3 +99,8 @@ class Agent1:
|
||||
self.kierunek = KIERUNEK.PRAWO
|
||||
elif self.kierunek == KIERUNEK.PRAWO:
|
||||
self.kierunek = KIERUNEK.LEWO
|
||||
|
||||
def zaznacz_zajmowane_pola_na_kracie(self, Krata):
|
||||
for wiersz in range(self.pole_lewe_gorne.wiersz, self.pole_lewe_gorne.wiersz + self.bok_w_polach):
|
||||
for kolumna in range(self.pole_lewe_gorne.kolumna, self.pole_lewe_gorne.kolumna + self.bok_w_polach):
|
||||
Krata[wiersz][kolumna] = POLE.AGENT
|
||||
|
56
main.py
56
main.py
@ -1,7 +1,5 @@
|
||||
import os
|
||||
|
||||
import pygame
|
||||
|
||||
from agenci import *
|
||||
from stale import *
|
||||
|
||||
@ -9,18 +7,44 @@ OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
|
||||
pygame.display.set_caption("Okno1")
|
||||
Agenci1 = []
|
||||
|
||||
Krata = []
|
||||
for rzad in range(LICZBA_POL_W_PIONIE):
|
||||
Krata.append([])
|
||||
for kolumna in range(LICZBA_POL_W_POZIOMIE):
|
||||
Krata[rzad].append(POLE.PUSTE)
|
||||
|
||||
def wyswietl_okno():
|
||||
OKNO.fill(JASNOSZARY1)
|
||||
|
||||
def wyswietl_krate():
|
||||
OKNO.fill(SZARY1)
|
||||
for rzad in range(LICZBA_POL_W_PIONIE):
|
||||
for kolumna in range(LICZBA_POL_W_POZIOMIE):
|
||||
pygame.draw.rect(OKNO, BIALY, [(ODSTEP_MIEDZY_POLAMI + BOK_POLA) * kolumna + ODSTEP_MIEDZY_POLAMI,
|
||||
(ODSTEP_MIEDZY_POLAMI + BOK_POLA) * rzad + ODSTEP_MIEDZY_POLAMI,
|
||||
BOK_POLA, BOK_POLA])
|
||||
|
||||
|
||||
def wyswietl_agentow():
|
||||
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)
|
||||
# a.ruszSie(Agenci1)
|
||||
pygame.display.update()
|
||||
|
||||
|
||||
def czy_wylosowane_dla_agenta_pola_sa_puste(pole_lewe_gorne):
|
||||
wynik = True
|
||||
for wiersz in range(pole_lewe_gorne.wiersz, pole_lewe_gorne.wiersz + BOK_AGENTA1_W_POLACH):
|
||||
for kolumna in range(pole_lewe_gorne.kolumna, pole_lewe_gorne.kolumna + BOK_AGENTA1_W_POLACH):
|
||||
if Krata[wiersz][kolumna] != POLE.PUSTE:
|
||||
wynik = False
|
||||
break
|
||||
if wynik == False:
|
||||
break
|
||||
return wynik
|
||||
|
||||
|
||||
def dodaj_agenta1():
|
||||
los = None
|
||||
if len(Agenci1) in range(0, 40):
|
||||
@ -36,17 +60,18 @@ def dodaj_agenta1():
|
||||
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:
|
||||
pole_lewe_gorne = Pole(random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH),
|
||||
random.randint(0, LICZBA_POL_W_POZIOMIE - BOK_AGENTA1_W_POLACH))
|
||||
if len(Agenci1) == 0:
|
||||
pole_lewe_gorne = Pole(0, 0)
|
||||
if czy_wylosowane_dla_agenta_pola_sa_puste(pole_lewe_gorne):
|
||||
pom='test1_ikona.png'
|
||||
ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)),
|
||||
(BOK_AGENTA1, BOK_AGENTA1))
|
||||
Agenci1.append(Agent1(hitbox, ikona, KIERUNEK.GORA, 0))
|
||||
nowy_agent = Agent1(pole_lewe_gorne, ikona, KIERUNEK.GORA, 0)
|
||||
nowy_agent.zaznacz_zajmowane_pola_na_kracie(Krata)
|
||||
Agenci1.append(nowy_agent)
|
||||
# print(Krata)
|
||||
|
||||
|
||||
def main():
|
||||
@ -58,7 +83,8 @@ def main():
|
||||
if event.type == pygame.QUIT:
|
||||
warunek_dzialania = False
|
||||
break
|
||||
wyswietl_okno()
|
||||
wyswietl_krate()
|
||||
wyswietl_agentow()
|
||||
dodaj_agenta1()
|
||||
pygame.quit()
|
||||
|
||||
|
34
stale.py
34
stale.py
@ -1,12 +1,24 @@
|
||||
from enum import Enum
|
||||
|
||||
FPS = 120
|
||||
|
||||
# SZEROKOSC_OKNA = 1500
|
||||
# WYSOKOSC_OKNA = 750
|
||||
|
||||
LICZBA_POL_W_POZIOMIE = 60
|
||||
LICZBA_POL_W_PIONIE = 30
|
||||
BOK_POLA = 20
|
||||
ODSTEP_MIEDZY_POLAMI = 5
|
||||
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
|
||||
SZEROKOSC_OKNA = 1280
|
||||
WYSOKOSC_OKNA = 960
|
||||
BOK_AGENTA1 = 100
|
||||
|
||||
BIALY = (255, 255, 255)
|
||||
JASNOSZARY1 = (200, 200, 200)
|
||||
SZARY1 = (150, 150, 150)
|
||||
ZIELONY1 = (26, 122, 26)
|
||||
|
||||
|
||||
@ -15,3 +27,19 @@ class KIERUNEK(Enum):
|
||||
DOL = 1
|
||||
LEWO = 2
|
||||
PRAWO = 3
|
||||
|
||||
|
||||
class POLE(Enum):
|
||||
PUSTE = 0
|
||||
AGENT = 1
|
||||
LAWA = 2
|
||||
|
||||
|
||||
class Pole():
|
||||
bok = BOK_POLA
|
||||
|
||||
def __init__(self, wiersz, kolumna):
|
||||
self.wiersz = wiersz
|
||||
self.kolumna = kolumna
|
||||
self.x_lewego_boku = (Pole.bok + ODSTEP_MIEDZY_POLAMI) * kolumna + ODSTEP_MIEDZY_POLAMI
|
||||
self.y_gory = (Pole.bok + ODSTEP_MIEDZY_POLAMI) * wiersz + ODSTEP_MIEDZY_POLAMI
|
||||
|
Loading…
Reference in New Issue
Block a user