Poprawa płynności jazdy wózków.

This commit is contained in:
Dominik Jagosz 2022-03-09 11:53:39 +01:00
parent 4b57fba82a
commit 027e111573

93
main.py
View File

@ -1,9 +1,18 @@
import os import os
import random import random
from enum import Enum
import pygame import pygame
FPS = 10
class KIERUNEK(Enum):
GORA = 0
DOL = 1
LEWO = 2
PRAWO = 3
FPS = 120
SZEROKOSC_OKNA = 1280 SZEROKOSC_OKNA = 1280
WYSOKOSC_OKNA = 960 WYSOKOSC_OKNA = 960
@ -12,6 +21,7 @@ BOK_AGENTA1 = 100
BIALY = (255, 255, 255) BIALY = (255, 255, 255)
JASNOSZARY1 = (180, 180, 180) 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")
@ -22,33 +32,58 @@ 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')) 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')), agent1 = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', 'wozek_ze_skrzynka.png')),
(BOK_AGENTA1, BOK_AGENTA1)) (BOK_AGENTA1, BOK_AGENTA1))
lista_agentow = [] Agenci = []
lista_hitboxow_agentow = [] HitboxyAgentow = []
DrogiAgentow = []
KierunkiAgentow = []
def wyswietl_okno(): def wyswietl_okno():
OKNO.fill(JASNOSZARY1) OKNO.fill(ZIELONY1)
for a in range(len(lista_agentow)): KROK_WOZKA = 2
OKNO.blit(lista_agentow[a], (lista_hitboxow_agentow[a].x, lista_hitboxow_agentow[a].y)) for a in range(len(Agenci)):
os = random.randint(0, 1) OKNO.blit(Agenci[a], (HitboxyAgentow[a].x, HitboxyAgentow[a].y))
odleglosc = random.randint(20, 100) if DrogiAgentow[a] == 0:
znak = random.randint(0, 1) KierunkiAgentow[a] = KIERUNEK(random.randint(0, 3))
if znak == 1: losowa_droga = None
odleglosc = 0 - odleglosc if KierunkiAgentow[a] == KIERUNEK.GORA:
if os == 0: losowa_droga = random.randint(0, HitboxyAgentow[a].y)
if SZEROKOSC_OKNA - lista_hitboxow_agentow[a].width > lista_hitboxow_agentow[a].x + odleglosc > 0: elif KierunkiAgentow[a] == KIERUNEK.DOL:
lista_hitboxow_agentow[a].x += odleglosc 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: else:
if WYSOKOSC_OKNA - lista_hitboxow_agentow[a].height > lista_hitboxow_agentow[a].y + odleglosc > 0: DrogiAgentow[a] = 0
lista_hitboxow_agentow[a].y += odleglosc 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 main(): def main():
klatkaz = pygame.time.Clock() klatkaz = pygame.time.Clock()
agent1_hitbox = pygame.Rect(SZEROKOSC_OKNA / 2 - BOK_AGENTA1 / 2,
WYSOKOSC_OKNA / 2 - BOK_AGENTA1 / 2, BOK_AGENTA1,
BOK_AGENTA1)
warunek_dzialania = True warunek_dzialania = True
while warunek_dzialania: while warunek_dzialania:
klatkaz.tick(FPS) klatkaz.tick(FPS)
@ -58,23 +93,23 @@ def main():
break break
wyswietl_okno() wyswietl_okno()
print(agent1_hitbox.x, agent1_hitbox.y) los = random.randint(1, 240)
# wyswietl_agenta1(agent1_hitbox) if len(Agenci) < 50:
los = random.randint(1, 30)
if len(lista_agentow) < 30:
pom = None pom = None
if los == 1: if los in (1, 2) or len(Agenci) == 0:
pom = 'wozek_ze_skrzynka.png'
elif los == 2:
pom = 'wozek.png' pom = 'wozek.png'
elif los == 3 and len(lista_agentow) > 6: elif los in (2, 3):
pom = 'wozek_ze_skrzynka.png'
elif los == 4 and len(Agenci) > 6:
pom = 'traktor_ikona.png' pom = 'traktor_ikona.png'
if pom != None: if pom != None:
lista_agentow.append(pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)), Agenci.append(pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)),
(BOK_AGENTA1, BOK_AGENTA1))) (BOK_AGENTA1, BOK_AGENTA1)))
lista_hitboxow_agentow.append(pygame.Rect(random.randint(0, SZEROKOSC_OKNA - BOK_AGENTA1), HitboxyAgentow.append(pygame.Rect(random.randint(0, SZEROKOSC_OKNA - BOK_AGENTA1),
random.randint(0, WYSOKOSC_OKNA - BOK_AGENTA1), BOK_AGENTA1, random.randint(0, WYSOKOSC_OKNA - BOK_AGENTA1), BOK_AGENTA1,
BOK_AGENTA1)) BOK_AGENTA1))
DrogiAgentow.append(0)
KierunkiAgentow.append(KIERUNEK.GORA)
pygame.quit() pygame.quit()