Traktowanie wozków jako obiektów. Stworzenie klasy Agent1, wydzielenie jej do osobnego pliku. Wydzielenie stałych do osobnego pliku.

This commit is contained in:
Dominik Jagosz 2022-03-09 12:27:02 +01:00
parent 027e111573
commit e7d28ad14a
3 changed files with 99 additions and 87 deletions

58
agenci.py Normal file
View File

@ -0,0 +1,58 @@
import random
from enum import Enum
from stale import *
class KIERUNEK(Enum):
GORA = 0
DOL = 1
LEWO = 2
PRAWO = 3
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))
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 ruszSie(self):
if self.kierunek == KIERUNEK.GORA:
if self.hitbox.y - KROK_AGENTA1 > 0:
self.hitbox.y -= KROK_AGENTA1
self.droga -= KROK_AGENTA1
else:
self.droga = 0
elif self.kierunek == KIERUNEK.DOL:
if self.hitbox.y + KROK_AGENTA1 < WYSOKOSC_OKNA - self.hitbox.height:
self.hitbox.y += KROK_AGENTA1
self.droga -= KROK_AGENTA1
else:
self.droga = 0
elif self.kierunek == KIERUNEK.LEWO:
if self.hitbox.x - KROK_AGENTA1 > 0:
self.hitbox.x -= KROK_AGENTA1
self.droga -= KROK_AGENTA1
else:
self.droga = 0
elif self.kierunek == KIERUNEK.PRAWO:
if self.hitbox.x + KROK_AGENTA1 < SZEROKOSC_OKNA - self.hitbox.width:
self.hitbox.x += KROK_AGENTA1
self.droga -= KROK_AGENTA1
else:
self.droga = 0

117
main.py
View File

@ -1,87 +1,45 @@
import os import os
import random
from enum import Enum
import pygame import pygame
from agenci import *
class KIERUNEK(Enum): from stale import *
GORA = 0
DOL = 1
LEWO = 2
PRAWO = 3
FPS = 120
SZEROKOSC_OKNA = 1280
WYSOKOSC_OKNA = 960
BOK_AGENTA1 = 100
BIALY = (255, 255, 255)
JASNOSZARY1 = (180, 180, 180)
ZIELONY1 = (26, 122, 26)
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")
TEST1_IKONA = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'test1_ikona.png')), (500, 500)) Agenci1 = []
TRAKTOR_IKONA = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'traktor_ikona.png')), (100, 100))
wozek_ikona = pygame.image.load(os.path.join('Ikony', 'wozek.png'))
wozek_ze_skrzynka_ikona = pygame.image.load(os.path.join('Ikony', 'wozek_ze_skrzynka.png'))
agent1 = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'wozek_ze_skrzynka.png')),
(BOK_AGENTA1, BOK_AGENTA1))
Agenci = []
HitboxyAgentow = []
DrogiAgentow = []
KierunkiAgentow = []
def wyswietl_okno(): def wyswietl_okno():
OKNO.fill(ZIELONY1) OKNO.fill(JASNOSZARY1)
KROK_WOZKA = 2 for a in Agenci1:
for a in range(len(Agenci)): OKNO.blit(a.tekstura, (a.hitbox.x, a.hitbox.y))
OKNO.blit(Agenci[a], (HitboxyAgentow[a].x, HitboxyAgentow[a].y)) if a.droga == 0:
if DrogiAgentow[a] == 0: a.obierzNowyKierunek()
KierunkiAgentow[a] = KIERUNEK(random.randint(0, 3)) a.ruszSie()
losowa_droga = None
if KierunkiAgentow[a] == KIERUNEK.GORA:
losowa_droga = random.randint(0, HitboxyAgentow[a].y)
elif KierunkiAgentow[a] == KIERUNEK.DOL:
losowa_droga = random.randint(0, WYSOKOSC_OKNA - HitboxyAgentow[a].y)
elif KierunkiAgentow[a] == KIERUNEK.LEWO:
losowa_droga = random.randint(0, HitboxyAgentow[a].x)
elif KierunkiAgentow[a] == KIERUNEK.PRAWO:
losowa_droga = random.randint(0, SZEROKOSC_OKNA - HitboxyAgentow[a].x)
DrogiAgentow[a] = losowa_droga - losowa_droga % KROK_WOZKA
if KierunkiAgentow[a] == KIERUNEK.GORA:
if HitboxyAgentow[a].y - KROK_WOZKA > 0:
HitboxyAgentow[a].y -= KROK_WOZKA
DrogiAgentow[a] -= KROK_WOZKA
else:
DrogiAgentow[a] = 0
elif KierunkiAgentow[a] == KIERUNEK.DOL:
if HitboxyAgentow[a].y + KROK_WOZKA < WYSOKOSC_OKNA - HitboxyAgentow[a].height:
HitboxyAgentow[a].y += KROK_WOZKA
DrogiAgentow[a] -= KROK_WOZKA
else:
DrogiAgentow[a] = 0
elif KierunkiAgentow[a] == KIERUNEK.LEWO:
if HitboxyAgentow[a].x - KROK_WOZKA > 0:
HitboxyAgentow[a].x -= KROK_WOZKA
DrogiAgentow[a] -= KROK_WOZKA
else:
DrogiAgentow[a] = 0
elif KierunkiAgentow[a] == KIERUNEK.PRAWO:
if HitboxyAgentow[a].x + KROK_WOZKA < SZEROKOSC_OKNA - HitboxyAgentow[a].width:
HitboxyAgentow[a].x += KROK_WOZKA
DrogiAgentow[a] -= KROK_WOZKA
else:
DrogiAgentow[a] = 0
pygame.display.update() pygame.display.update()
def dodaj_agenta1():
los = random.randint(1, 240)
if len(Agenci1) < 50:
pom = None
if los in (1, 2) or len(Agenci1) == 0:
pom = 'wozek.png'
elif los in (2, 3):
pom = 'wozek_ze_skrzynka.png'
elif los == 4 and len(Agenci1) > 6:
pom = 'traktor_ikona.png'
if pom != None:
hitbox = pygame.Rect(random.randint(0, SZEROKOSC_OKNA - BOK_AGENTA1),
random.randint(0, WYSOKOSC_OKNA - BOK_AGENTA1), BOK_AGENTA1,
BOK_AGENTA1)
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 main(): def main():
klatkaz = pygame.time.Clock() klatkaz = pygame.time.Clock()
warunek_dzialania = True warunek_dzialania = True
@ -93,25 +51,10 @@ def main():
break break
wyswietl_okno() wyswietl_okno()
los = random.randint(1, 240) dodaj_agenta1()
if len(Agenci) < 50:
pom = None
if los in (1, 2) or len(Agenci) == 0:
pom = 'wozek.png'
elif los in (2, 3):
pom = 'wozek_ze_skrzynka.png'
elif los == 4 and len(Agenci) > 6:
pom = 'traktor_ikona.png'
if pom != None:
Agenci.append(pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)),
(BOK_AGENTA1, BOK_AGENTA1)))
HitboxyAgentow.append(pygame.Rect(random.randint(0, SZEROKOSC_OKNA - BOK_AGENTA1),
random.randint(0, WYSOKOSC_OKNA - BOK_AGENTA1), BOK_AGENTA1,
BOK_AGENTA1))
DrogiAgentow.append(0)
KierunkiAgentow.append(KIERUNEK.GORA)
pygame.quit() pygame.quit()
main() main()
pygame.quit()

11
stale.py Normal file
View File

@ -0,0 +1,11 @@
FPS = 120
KROK_AGENTA1 = 2
SZEROKOSC_OKNA = 1280
WYSOKOSC_OKNA = 960
BOK_AGENTA1 = 100
BIALY = (255, 255, 255)
JASNOSZARY1 = (200, 200, 200)
ZIELONY1 = (26, 122, 26)