diff --git a/agenci.py b/agenci.py new file mode 100644 index 0000000..5e9f3ac --- /dev/null +++ b/agenci.py @@ -0,0 +1,95 @@ +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 diff --git a/main2.py b/main2.py new file mode 100644 index 0000000..7544f98 --- /dev/null +++ b/main2.py @@ -0,0 +1,79 @@ +import os + +import pygame +from agenci import * +from stale import * +import stale + +OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA)) +pygame.display.set_caption("Okno1") +Agenci1 = [] + +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 + if len(Agenci1) in range(0, 1): + los = random.randint(1, 15) + if los != None: + 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)), + (BOK_AGENTA1, BOK_AGENTA1)) + Agenci1.append(Agent1(hitbox, ikona, KIERUNEK.GORA, 0)) + +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(): + klatkaz = pygame.time.Clock() + warunek_dzialania = True + while warunek_dzialania: + klatkaz.tick(FPS) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + warunek_dzialania = False + break + wyswietl_okno() + dodaj_agenta1() + pygame.quit() + + +main() diff --git a/stale.py b/stale.py new file mode 100644 index 0000000..9ec458f --- /dev/null +++ b/stale.py @@ -0,0 +1,33 @@ +from enum import Enum + +FPS = 120 +KROK_AGENTA1 = 2 +SZEROKOSC_OKNA = 1080 +WYSOKOSC_OKNA = 760 +BOK_AGENTA1 = 100 +BIALY = (255, 255, 255) +JASNOSZARY1 = (200, 200, 200) +ZIELONY1 = (26, 122, 26) +GREY =(150,150,150) +RED =(255,0,0) +BLUE=(55,55,255) +BLACK =(0,0,0) +GREEN =(0,200,0) +DARKGREY=(150,150,150) +UGLY_PINK=(255,0,255) +BROWN=(153,76,0) +GOLD=(153,153,0) +DARKGREEN=(0,102,0) +DARKORANGE=(255,128,0) +NUMBER_OF_BLOCKS_WIDE=8 +NUMBER_OF_BLOCKS_HIGH=8 +BLOCK_HEIGHT=round(SZEROKOSC_OKNA/NUMBER_OF_BLOCKS_HIGH) +BLOCK_WIDTH=round(WYSOKOSC_OKNA/NUMBER_OF_BLOCKS_WIDE) +MAPFILE="map.txt" +TITLE ="Gierka" + +class KIERUNEK(Enum): + GORA = 0 + DOL = 1 + LEWO = 2 + PRAWO = 3