Compare commits

..

93 Commits

Author SHA1 Message Date
d82a3483d9 htretrhj 2022-12-17 10:25:27 +01:00
7c2f48fbfb tfi 2022-12-16 22:21:41 +01:00
1e421bd6cd Update 'main.py' 2022-06-09 09:03:46 +02:00
b7bbc1c317 Cel paczka 2022-06-08 22:54:13 +02:00
10f2235a71 Dodanie paczki na krate 2022-06-08 22:53:31 +02:00
aeb5bf3bc3 Dodanie paczki do style 2022-06-08 22:52:41 +02:00
fbdd2f6ac9 Upload files to 'Ikony' 2022-06-08 22:51:22 +02:00
d9c18a3a67 Modyfikacja lepszej pracy algorytmu (populacji, proby) 2022-06-08 22:20:08 +02:00
d1325ac00e Powrot do magazynu agenta po dostarczeniu wszystkich paczek 2022-06-08 22:10:25 +02:00
0b48f1647a Nadanie wlasciwego celu po kazdej paczce agentowi 2022-06-08 22:04:45 +02:00
610290e7cd Otrzymanie listy poprawnej sciezki 2022-06-08 22:01:24 +02:00
b25ef4a968 Wykorzystanie alg gen dla znalezenia najlepszej sciezki 2022-06-08 21:58:06 +02:00
213f34a0df Add 'algorytmy_genetyczne.py' 2022-06-08 21:56:45 +02:00
5342416278 Stworzenie def najlepsza sciezka 2022-06-08 21:52:46 +02:00
c4112e247b Dodanie listy paczek przed algorytmem genetycznym 2022-06-08 21:51:20 +02:00
eb7b8301fc Update 'main.py' 2022-06-08 21:10:37 +02:00
7b8c8842d8 Zaktualizuj '.idea/Sztuczna_Inteligencja_Gr16.iml'
3.9 a miało był 3.8
2022-06-08 10:00:28 +02:00
a191781465 Zaktualizuj '.idea/misc.xml'
3.9 a mialo byc 3.8
2022-06-08 09:59:48 +02:00
d15203280d zmiana nadaj_cel_agentowi(); ustawienie(); wroc() 2022-06-08 09:56:20 +02:00
Aniela
dc9cfef284 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	neural_network.py
2022-06-01 23:04:39 +02:00
Aniela
82711c4c98 sieci neuronowe, wózek po każdej paczce wraca na początek po kolejną, każdy numer paczki ma przypisana szafkę 2022-06-01 23:03:34 +02:00
1f17a731b2 Zaktualizuj 'neural_network.py' 2022-06-01 17:21:46 +02:00
Aniela
88dd3cf7ab Merge remote-tracking branch 'origin/master' 2022-06-01 17:21:17 +02:00
Aniela
c23fa7f35a dodanie cyfr 2022-06-01 17:21:09 +02:00
1e24b39da3 Zaktualizuj 'neural_network.py' 2022-06-01 17:17:20 +02:00
Aniela
15234836ce Merge remote-tracking branch 'origin/master' 2022-06-01 17:11:05 +02:00
Aniela
bb500aa26d Sieci neuronowe, agent porusza się zgodnie z numerem paczki 2022-06-01 17:08:33 +02:00
a17b2dc80b Prześlij pliki do 'digits' 2022-05-30 18:04:08 +02:00
8f76ea5a76 Dodanie 'digits2' 2022-05-30 18:03:05 +02:00
b61a339f23 Dodanie nowych cyfr 2022-05-30 18:01:38 +02:00
fc4af333dc Usuń 'digit5.png' 2022-05-30 18:01:15 +02:00
4c4ee05cb8 Usuń 'digit4.png' 2022-05-30 18:01:11 +02:00
aada62586b Usuń 'digit3.png' 2022-05-30 18:01:06 +02:00
84a7f06c49 Usuń 'digit2.png' 2022-05-30 18:01:01 +02:00
a301fd3b03 Usuń 'digit1.png' 2022-05-30 18:00:49 +02:00
81d69cc762 Dodatkowe liczby, zmiana 2022-05-30 17:58:23 +02:00
Aniela
7551296681 Losowanie trzech liczb i tworzenie z nich liczby trzycyfrowej 2022-05-30 17:56:30 +02:00
627a6b5ab8 poprawka 2022-05-26 16:06:01 +02:00
32179be076 Zaktualizuj 'neural_network.py'
poprawka sieci neuronowych
2022-05-26 16:05:08 +02:00
Aniela
c959093e38 poprawka zmiany 2022-05-25 20:26:52 +02:00
Aniela
7200dd8e38 sieć neuronowa, rozpoznawanie cyfry z obrazka oraz testowe cyfry 2022-05-25 20:21:27 +02:00
Aniela
4a49e5d829 sieć neuronowa, rozpoznawanie cyfry z obrazka oraz testowe cyfry 2022-05-25 20:20:09 +02:00
08a66b94f4 Merge remote-tracking branch 'origin/master' 2022-05-19 00:08:35 +02:00
17e38605c7 Drzewo decyzyjne - zmiana pliku ze zbiorem do uczenia się 2022-05-19 00:05:24 +02:00
463a21048a dodanie ikon poprawka 2022-05-18 08:46:35 +02:00
86d4793cd7 Merge remote-tracking branch 'origin/master' 2022-05-18 01:11:08 +02:00
457248b9fa Drzewo decyzyjne - uzupełnienie 2022-05-18 01:10:31 +02:00
s464917
e5d6b894bc dodane ikony dywanu i kaluzy, zmieniona ikona wozka 2022-05-16 21:41:38 +02:00
bf0f1a4362 Drzewo decyzyjne - decyzja, czy osoba ma natychmast opuścić magazyn 2022-05-11 17:32:28 +02:00
domjag5
18ab66459c dopasowanie kosztu, obracanie agenta 2022-04-28 16:50:19 +02:00
domjag5
d606f376c9 dopasowanie kosztu 2022-04-21 15:54:58 +02:00
544bda1766 A-gwiazdka. Na podłodze dywany i kałuże. 2022-04-18 23:28:28 +02:00
1c4c851c3d Możliwość zamknięcia okna w każdym momencie. Zmiana sposobu wyświetlania. Zastosowanie wzorca "obserwator". 2022-04-16 16:45:37 +02:00
c8ea93916b Succ używający akcji i stanów; poprawa bfs - tworzenie ciągu akcji; interpretacja ciągu akcji przez agenta. 2022-04-06 14:05:40 +02:00
ccbb743403 algorytm bfs z funkcją następnika, dodatkowo zmieniono wielkość i ilość pól kraty 2022-04-04 16:28:25 +02:00
e4a0f19301 Zaktualizuj 'agent.py' 2022-04-02 14:05:51 +02:00
321ac8490e Szafki z półkami i miejscami na półkach 2022-04-01 18:18:30 +02:00
d3387c820c Szafki z półkami jako ściany 2022-03-27 23:08:35 +02:00
35073809ef Rozszerzenie wiedzy agenta (ram/klas). 2022-03-24 09:01:38 +01:00
ffddbbdf0a Zaktualizuj 'etykieta.py' 2022-03-23 16:09:42 +01:00
416e35b8b5 inna wersja klas szafka i miejsce 2022-03-23 14:59:37 +01:00
c9e4022dba Praca nad ramami (wiedzą agenta). Eksperymenty z kolorami i zawartością pól. 2022-03-22 21:52:05 +01:00
2afda6c7ff Dodanie rysowania kraty liniami z main2.py 2022-03-22 14:32:26 +01:00
e8b5d96263 Scalenie dodana_etykieta_i_paczka do mastera 2022-03-22 14:02:42 +01:00
746745caa0 Merge branch 'dodana_etykieta_i_paczka'
# Conflicts:
#	etykieta.py
#	main.py
2022-03-22 14:01:30 +01:00
ba8339b4b8 Skopiowanie etykieta.py do mastera w celu scalenia gałęzi 2022-03-22 13:59:05 +01:00
33faa91bd7 Ostateczne ręczne scalenie kratownicy1 do mastera
W masterze jest już wszystko z kratownicy.
2022-03-22 13:53:35 +01:00
dd487ac4fc Czwarta próba scalenia kratownicy1 z masterem. 2022-03-22 13:46:29 +01:00
08014b063f Merge remote-tracking branch 'origin/kratownica1'
# Conflicts:
#	agent.py
#	main.py
#	stale.py
2022-03-22 13:45:54 +01:00
a40fb0a8e3 Zaktualizuj 'main.py' 2022-03-22 13:26:51 +01:00
8d43f8abf6 Zaktualizuj 'agent.py' 2022-03-22 13:26:17 +01:00
9523284950 Usuń 'main2.py' 2022-03-22 11:55:05 +01:00
8bccebb6ca Usuń 'agenci.py' 2022-03-22 11:54:59 +01:00
512af7d696 Prześlij pliki do '' 2022-03-22 11:54:07 +01:00
21fccb422f Agent porusza się losowo po kracie zajmując 9 pól. 2022-03-22 11:20:58 +01:00
adece3ebc9 Poprawa struktury kodu. Ograniczenie się do jednego agenta. 2022-03-21 22:13:57 +01:00
2d05a136a0 Wózki nie najeżdżają na siebie. Dodanie funkcjonalności agentom. 2022-03-21 22:12:01 +01:00
90356ec6d8 Wózki nie najeżdżają na siebie. Dodanie funkcjonalności agentom. 2022-03-21 22:05:28 +01:00
e8aa87ff54 Wózki nie najeżdżają na siebie. Dodanie funkcjonalności agentom. 2022-03-21 19:41:34 +01:00
b88ac20618 Prześlij pliki do '' 2022-03-19 15:11:07 +01:00
88a5f17440 Usuń 'agenci.py' 2022-03-19 14:52:22 +01:00
fc58b7dd27 Usuń 'main2.py' 2022-03-19 14:52:19 +01:00
5ab552c7bf Usuń 'stale.py' 2022-03-19 14:52:09 +01:00
Aniela
71cf238e65 m 2022-03-19 14:46:39 +01:00
9ca4f821e1 Stworzenie kraty (prawdziwej, z polami). Losowanie na nią agentów zajmujących nxn pól. 2022-03-10 19:41:05 +01:00
61c8f63437 Wózki nie najeżdżają na siebie. Dodanie funkcjonalności agentom. 2022-03-09 16:08:26 +01:00
e7d28ad14a Traktowanie wozków jako obiektów. Stworzenie klasy Agent1, wydzielenie jej do osobnego pliku. Wydzielenie stałych do osobnego pliku. 2022-03-09 12:27:02 +01:00
027e111573 Poprawa płynności jazdy wózków. 2022-03-09 11:53:39 +01:00
4b57fba82a Losowe generowanie poruszających się losowo wózków. 2022-03-08 23:28:04 +01:00
b558c12612 Losowe generowanie poruszających się losowo wózków. 2022-03-08 23:22:51 +01:00
7818eb4095 Dodanie wózka poruszającego się losowo. 2022-03-08 23:00:42 +01:00
3bbc35e1ac Stworzenie kraty i wygaszacza ekranu na niej. 2022-03-08 23:00:42 +01:00
d5d9b00331 Merge pull request 'Próba scalenia branchy.' (#3) from branch2 into master
Reviewed-on: s452624/Sztuczna_Inteligencja_Gr16#3
2022-03-07 20:54:53 +01:00
10 changed files with 410 additions and 79 deletions

View File

@ -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="jdk" jdkName="Python 3.9 (jakiesvirtualneenv)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
</module> </module>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <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 (jakiesvirtualneenv)" project-jdk-type="Python SDK" />
</project> </project>

BIN
Ikony/auto.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

BIN
Ikony/auto2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

BIN
Ikony/test2_ikona.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

29
enumy_i_slowniki.py Normal file
View File

@ -0,0 +1,29 @@
from enum import Enum
from stale import *
class ZawartoscPola(Enum):
PUSTE = 0
SCIANA = 1
SCIANA2 = 2
SYGNALIZATOR_CZERWONY = 3
SYGNALIZATOR_ZOLTY = 4
SYGNALIZATOR_ZIELONY = 5
class Swiatlo(Enum):
CZERWONE = 0
CZERWONE_Z_ZOLTYM = 1
ZIELONE = 2
ZOLTE = 3
ZawartoscPolaNaKolorPola = {
ZawartoscPola.PUSTE: CZARNY,
ZawartoscPola.SCIANA: JASNOSZARY,
ZawartoscPola.SCIANA2: SZARY,
ZawartoscPola.SYGNALIZATOR_CZERWONY: CZERWONY,
ZawartoscPola.SYGNALIZATOR_ZOLTY: ZOLTY,
ZawartoscPola.SYGNALIZATOR_ZIELONY: ZIELONY
}

433
main.py
View File

@ -1,90 +1,369 @@
import math
import os import os
import random import random
import pygame import pygame
FPS = 1 from enumy_i_slowniki import *
SZEROKOSC_OKNA = 1280 #
WYSOKOSC_OKNA = 960 okno = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
#
LICZBA_POL_W_POZIOMIE = 8 droga_A = [[False, w, 7] for w in range(LICZBA_POL_W_PIONIE)]
LICZBA_POL_W_PIONIE = 6 swiatlo_A = Swiatlo.CZERWONE
pole_postojowe_A = (9, 7)
Krata = [] sygnalizator_A = ((10, 9), (11, 9), (12, 9))
for rzad in range(LICZBA_POL_W_PIONIE): indeks_petli_A = None
Krata.append([]) for i in range(len(droga_A)):
for kolumna in range(LICZBA_POL_W_POZIOMIE): x = droga_A[i]
Krata[rzad].append(random.randint(0, 9)) if x[1] == pole_postojowe_A[0] and x[2] == pole_postojowe_A[1]:
indeks_petli_A = i
bok_pola = min(int(SZEROKOSC_OKNA / LICZBA_POL_W_POZIOMIE), int(WYSOKOSC_OKNA / LICZBA_POL_W_PIONIE)) #
odstep_miedzy_polami = max(1, math.floor(0.0625 * bok_pola)) droga_B = [[False, w, 7] for w in range(0, 7)] + [[False, 7, k] for k in range(7, LICZBA_POL_W_POZIOMIE)]
bok_pola -= odstep_miedzy_polami swiatlo_B = Swiatlo.ZIELONE
pole_postojowe_B = (7, 8)
BIALY = (255, 255, 255) sygnalizator_B = ((3, 10), (4, 10), (5, 10))
JASNOSZARY1 = (180, 180, 180) indeks_petli_B = None
for i in range(len(droga_B)):
OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA)) x = droga_B[i]
pygame.display.set_caption("Okno1") if x[1] == pole_postojowe_B[0] and x[2] == pole_postojowe_B[1]:
indeks_petli_B = i
TEST1_IKONA = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'test1_ikona.png')), (500, 500)) #
TRAKTOR_IKONA = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'traktor_ikona.png')), (100, 100)) krata = [[_ for _ in range(LICZBA_POL_W_POZIOMIE)] for _ in range(LICZBA_POL_W_PIONIE)]
wozek_ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'wozek.png')), #
(bok_pola - odstep_miedzy_polami, bok_pola - odstep_miedzy_polami)) for w in range(LICZBA_POL_W_PIONIE):
wozek_ze_skrzynka_ikona = pygame.image.load(os.path.join('Ikony', 'wozek_ze_skrzynka.png')) for k in range(LICZBA_POL_W_POZIOMIE):
krata[w][k] = ZawartoscPola.SCIANA2
#
for w in range(LICZBA_POL_W_PIONIE):
krata[w][5] = ZawartoscPola.SCIANA
krata[w][6] = ZawartoscPola.PUSTE
krata[w][7] = ZawartoscPola.PUSTE
krata[w][8] = ZawartoscPola.SCIANA
#
krata[7][8] = ZawartoscPola.PUSTE
krata[8][8] = ZawartoscPola.PUSTE
#
for w in [7, 8]:
for k in range(8, LICZBA_POL_W_POZIOMIE):
krata[w][k] = ZawartoscPola.PUSTE
#
for k in range(8, LICZBA_POL_W_POZIOMIE):
krata[6][k] = ZawartoscPola.SCIANA
for k in range(8, LICZBA_POL_W_POZIOMIE):
krata[9][k] = ZawartoscPola.SCIANA
def wyswietl_okno(): def wyswietl_okno():
OKNO.fill(JASNOSZARY1) pygame.time.Clock().tick(FPS)
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])
pygame.display.update()
def wyswietl_wozek():
for rzad in range(LICZBA_POL_W_PIONIE):
for kolumna in range(LICZBA_POL_W_POZIOMIE):
pom = Krata[rzad][kolumna]
if pom == 0:
pom = wozek_ikona
elif pom == 1:
pom = wozek_ze_skrzynka_ikona
elif pom == 2:
pom = TRAKTOR_IKONA
else:
pom = None
if pom != None:
pom = pygame.transform.scale(pom, (bok_pola - odstep_miedzy_polami, bok_pola - odstep_miedzy_polami))
OKNO.blit(pom, (((
odstep_miedzy_polami + bok_pola) * kolumna + odstep_miedzy_polami) + bok_pola / 2 - pom.get_width() / 2,
((
odstep_miedzy_polami + bok_pola) * rzad + odstep_miedzy_polami) + bok_pola / 2 - pom.get_height() / 2))
pygame.display.update()
klatkaz = pygame.time.Clock()
warunek_dzialania = True
while warunek_dzialania:
klatkaz.tick(FPS)
for event in pygame.event.get(): for event in pygame.event.get():
if event.type == pygame.QUIT: if event.type == pygame.QUIT:
warunek_dzialania = False # print("Użytkownik spróbował zamknąć okno.")
break pygame.quit()
narysuj_krate()
narysuj_pojazdy()
pygame.display.update()
def narysuj_krate():
okno.fill(SZARY)
for wiersz in range(LICZBA_POL_W_PIONIE):
for kolumna in range(LICZBA_POL_W_POZIOMIE):
start = (ODSTEP_MIEDZY_POLAMI + BOK_POLA) * kolumna + ODSTEP_MIEDZY_POLAMI
gora = (ODSTEP_MIEDZY_POLAMI + BOK_POLA) * wiersz + ODSTEP_MIEDZY_POLAMI
kolor_pola = ZawartoscPolaNaKolorPola[krata[wiersz][kolumna]]
pygame.draw.rect(okno, kolor_pola, [start, gora, BOK_POLA, BOK_POLA])
def narysuj_pojazdy():
ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'auto.png')), (BOK_AGENTA, BOK_AGENTA))
for x in droga_A:
if x[0]:
okno.blit(ikona, ((BOK_POLA + ODSTEP_MIEDZY_POLAMI) * x[2] + ODSTEP_MIEDZY_POLAMI,
(BOK_POLA + ODSTEP_MIEDZY_POLAMI) * x[1] + ODSTEP_MIEDZY_POLAMI))
ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'auto2.png')), (BOK_AGENTA, BOK_AGENTA))
for x in droga_B:
if x[0]:
okno.blit(ikona, ((BOK_POLA + ODSTEP_MIEDZY_POLAMI) * x[2] + ODSTEP_MIEDZY_POLAMI,
(BOK_POLA + ODSTEP_MIEDZY_POLAMI) * x[1] + ODSTEP_MIEDZY_POLAMI))
def rusz_pojazdy_na_drodze(droga, pole_postojowe, swiatlo):
nowa_droga = [[False, x[1], x[2]] for x in droga]
for i in range(len(droga) - 1, 0, -1):
x = droga[i]
if x[0]:
if x[1] == pole_postojowe[0] and x[2] == pole_postojowe[1] and swiatlo != Swiatlo.ZIELONE:
nowa_droga[i][0] = True
else:
if not droga[i - 1][0]:
nowa_droga[i][0] = False
nowa_droga[i - 1][0] = True
else:
nowa_droga[i][0] = True
return nowa_droga
def ustaw_czerwone(sygnalizator):
krata[sygnalizator[0][0]][sygnalizator[0][1]] = ZawartoscPola.SYGNALIZATOR_CZERWONY
krata[sygnalizator[1][0]][sygnalizator[1][1]] = ZawartoscPola.SCIANA2
krata[sygnalizator[2][0]][sygnalizator[2][1]] = ZawartoscPola.SCIANA2
def ustaw_czerwone_z_zoltym(sygnalizator):
krata[sygnalizator[0][0]][sygnalizator[0][1]] = ZawartoscPola.SYGNALIZATOR_CZERWONY
krata[sygnalizator[1][0]][sygnalizator[1][1]] = ZawartoscPola.SYGNALIZATOR_ZOLTY
krata[sygnalizator[2][0]][sygnalizator[2][1]] = ZawartoscPola.SCIANA2
def ustaw_zolte(sygnalizator):
krata[sygnalizator[0][0]][sygnalizator[0][1]] = ZawartoscPola.SCIANA2
krata[sygnalizator[1][0]][sygnalizator[1][1]] = ZawartoscPola.SYGNALIZATOR_ZOLTY
krata[sygnalizator[2][0]][sygnalizator[2][1]] = ZawartoscPola.SCIANA2
def ustaw_zielone(sygnalizator):
krata[sygnalizator[0][0]][sygnalizator[0][1]] = ZawartoscPola.SCIANA2
krata[sygnalizator[1][0]][sygnalizator[1][1]] = ZawartoscPola.SCIANA2
krata[sygnalizator[2][0]][sygnalizator[2][1]] = ZawartoscPola.SYGNALIZATOR_ZIELONY
def Czerwone_Czerwone_do_Zielone_Czerwone():
return swiatlo_A == Swiatlo.CZERWONE and swiatlo_B == Swiatlo.CZERWONE and poprzednio == "B"
def Czerwone_Czerwone_do_Czerwone_Zielone():
return swiatlo_A == Swiatlo.CZERWONE and swiatlo_B == Swiatlo.CZERWONE and poprzednio == "A"
def CzerwoneZZoltym_Czerwone():
return swiatlo_A == Swiatlo.CZERWONE_Z_ZOLTYM and swiatlo_B == Swiatlo.CZERWONE
def Zielone_Czerwone_1():
return swiatlo_A == Swiatlo.ZIELONE and swiatlo_B == Swiatlo.CZERWONE and poprzednio == "B"
def Zielone_Czerwone_2():
return swiatlo_A == Swiatlo.ZIELONE and swiatlo_B == Swiatlo.CZERWONE and poprzednio == "A"
def Zolte_Czerwone():
return swiatlo_A == Swiatlo.ZOLTE and swiatlo_B == Swiatlo.CZERWONE
def Czerwone_CzerwoneZZoltym():
return swiatlo_A == Swiatlo.CZERWONE and swiatlo_B == Swiatlo.CZERWONE_Z_ZOLTYM
def Czerwone_Zielone():
return swiatlo_A == Swiatlo.CZERWONE and swiatlo_B == Swiatlo.ZIELONE
def Czerwone_Zolte():
return swiatlo_A == Swiatlo.CZERWONE and swiatlo_B == Swiatlo.ZOLTE
def O_O():
return (not droga_A[indeks_petli_A][0]) and (not droga_B[indeks_petli_B][0])
def A_O():
return (droga_A[indeks_petli_A][0]) and (not droga_B[indeks_petli_B][0])
def O_B():
return (not droga_A[indeks_petli_A][0]) and (droga_B[indeks_petli_B][0])
def A_B():
return (droga_A[indeks_petli_A][0]) and (droga_B[indeks_petli_B][0])
def ustaw_Czerwone_Czerwone_do_Czerwone_Zielone():
global swiatlo_A
swiatlo_A = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_B)
global poprzednio
poprzednio = "A"
def ustaw_Czerwone_Czerwone_do_Zielone_Czerwone():
global swiatlo_A
swiatlo_A = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_B)
global poprzednio
poprzednio = "B"
def ustaw_CzerwoneZZoltym_Czerwone():
global swiatlo_A
swiatlo_A = Swiatlo.CZERWONE_Z_ZOLTYM
ustaw_czerwone_z_zoltym(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_B)
def ustaw_Zielone_Czerwone_1():
global swiatlo_A
swiatlo_A = Swiatlo.ZIELONE
ustaw_zielone(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_B)
global poprzednio
poprzednio = "B"
def ustaw_Zielone_Czerwone_2():
global swiatlo_A
swiatlo_A = Swiatlo.ZIELONE
ustaw_zielone(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_B)
global poprzednio
poprzednio = "A"
def ustaw_Zolte_Czerwone():
global swiatlo_A
swiatlo_A = Swiatlo.ZOLTE
ustaw_zolte(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_B)
def ustaw_Czerwone_CzerwoneZZoltym():
global swiatlo_A
swiatlo_A = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.CZERWONE_Z_ZOLTYM
ustaw_czerwone_z_zoltym(sygnalizator_B)
def ustaw_Czerwone_Zielone():
global swiatlo_A
swiatlo_A = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.ZIELONE
ustaw_zielone(sygnalizator_B)
def ustaw_Czerwone_Zolte():
global swiatlo_A
swiatlo_A = Swiatlo.CZERWONE
ustaw_czerwone(sygnalizator_A)
global swiatlo_B
swiatlo_B = Swiatlo.ZOLTE
ustaw_zolte(sygnalizator_B)
droga_A[14][0] = True
droga_A[12][0] = True
droga_A[10][0] = True
droga_A[9][0] = True
droga_B[len(droga_B) - 1][0] = True
droga_B[len(droga_B) - 2][0] = True
droga_B[len(droga_B) - 6][0] = True
droga_B[5][0] = True
czas_ostatniej_zmiany_swiatel = pygame.time.get_ticks()
ustaw_Czerwone_Czerwone_do_Zielone_Czerwone()
poprzednio = "B"
while True:
# print(droga_A[indeks_petli_A][0],droga_B[indeks_petli_B][0])
if O_O():
print("O - O")
elif A_O():
print("A - O")
elif A_B():
print("A - B")
elif O_B():
print("O - B")
czas_od_ostatniej_zmiany_swiatel = pygame.time.get_ticks() - czas_ostatniej_zmiany_swiatel
if Czerwone_Czerwone_do_Zielone_Czerwone():
print("Czerwone - Czerwone do Zielone - Czerwone")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_ZMIANY_NA_SYGNALIZATORZE:
czas_ostatniej_zmiany_swiatel = pygame.time.get_ticks()
if O_O() or A_O() or A_B():
ustaw_CzerwoneZZoltym_Czerwone()
elif O_B():
ustaw_Czerwone_CzerwoneZZoltym()
elif CzerwoneZZoltym_Czerwone():
print("Czerwone z Zoltym - Czerwone")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_ZMIANY_NA_SYGNALIZATORZE:
ustaw_Zielone_Czerwone_1()
elif Zielone_Czerwone_1():
print("Zielone - Czerwone 1")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_CYKLU:
czas_ostatniej_zmiany_swiatel = pygame.time.get_ticks()
if O_O() or A_O() or A_B():
ustaw_Zielone_Czerwone_2()
elif O_B():
ustaw_Zolte_Czerwone()
elif Zielone_Czerwone_2():
print("Zielone - Czerwone 2")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_CYKLU:
czas_ostatniej_zmiany_swiatel = pygame.time.get_ticks()
if O_O() or A_O():
pass
elif O_B() or A_B():
ustaw_Zolte_Czerwone()
elif Zolte_Czerwone():
print("Zolte - Czerwone")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_ZMIANY_NA_SYGNALIZATORZE:
czas_ostatniej_zmiany_swiatel = pygame.time.get_ticks()
ustaw_Czerwone_Czerwone_do_Czerwone_Zielone()
elif Czerwone_CzerwoneZZoltym():
print("Czerwone - Czerwone z Zoltym")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_ZMIANY_NA_SYGNALIZATORZE:
ustaw_Czerwone_Zielone()
elif Czerwone_Zielone():
print("Czerwone - Zielone")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_CYKLU:
czas_ostatniej_zmiany_swiatel = pygame.time.get_ticks()
if O_B():
pass
elif O_O() or A_O() or A_B():
ustaw_Czerwone_Zolte()
elif Czerwone_Zolte():
print("Czerwone - Zolte")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_ZMIANY_NA_SYGNALIZATORZE:
czas_ostatniej_zmiany_swiatel = pygame.time.get_ticks()
ustaw_Czerwone_Czerwone_do_Zielone_Czerwone()
elif Czerwone_Czerwone_do_Czerwone_Zielone():
print("Czerwone - Czerwone do Czerwone - Zielone")
if czas_od_ostatniej_zmiany_swiatel >= CZAS_ZMIANY_NA_SYGNALIZATORZE:
czas_ostatniej_zmiany_swiatel = pygame.time.get_ticks()
if A_O():
ustaw_CzerwoneZZoltym_Czerwone()
elif O_O() or O_B() or A_B():
ustaw_Czerwone_CzerwoneZZoltym()
#
wyswietl_okno() wyswietl_okno()
wyswietl_wozek() droga_A = rusz_pojazdy_na_drodze(droga_A, pole_postojowe_A, swiatlo_A)
droga_B = rusz_pojazdy_na_drodze(droga_B, pole_postojowe_B, swiatlo_B)
pom = Krata[LICZBA_POL_W_PIONIE - 1][LICZBA_POL_W_POZIOMIE - 1] #
for rzad in range(LICZBA_POL_W_PIONIE - 1, -1, -1): los = random.random()
for kolumna in range(LICZBA_POL_W_POZIOMIE - 1, 0, -1): liczba_samochodow = len([x for x in droga_A if x[0]])
Krata[rzad][kolumna] = Krata[rzad][(kolumna - 1)] maks_samochodow = 7
Krata[rzad][0] = Krata[rzad - 1][LICZBA_POL_W_POZIOMIE - 1] szansa = (maks_samochodow - liczba_samochodow) / maks_samochodow -0.7
Krata[0][0] = pom if los < szansa:
print(Krata) droga_A[len(droga_A) - 1][0] = True
#
pygame.quit() liczba_samochodow = len([x for x in droga_B if x[0]])
maks_samochodow = 6
szansa = (maks_samochodow - liczba_samochodow) / maks_samochodow - 0.4
if los < szansa:
droga_B[len(droga_B) - 1][0] = True

23
stale.py Normal file
View File

@ -0,0 +1,23 @@
FPS = 2
#
LICZBA_POL_W_POZIOMIE = 30
LICZBA_POL_W_PIONIE = 15
BOK_POLA = 45
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_AGENTA_W_POLACH = 1
BOK_AGENTA = BOK_AGENTA_W_POLACH * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) - ODSTEP_MIEDZY_POLAMI
#
BIALY = (255, 255, 255)
JASNOSZARY = (200, 200, 200)
SZARY = (150, 150, 150)
CZARNY = (0, 0, 0)
#
CZERWONY = (255, 0, 0)
ZOLTY = (255, 255, 0)
ZIELONY = (0, 255, 0)
#
CZAS_ZMIANY_NA_SYGNALIZATORZE = 1500
CZAS_CYKLU = 6000