Advertisement
giganciprogramowania

lekcja 12 - Kulka.py

Mar 4th, 2022
573
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.60 KB | None | 0 0
  1. import pygame
  2. import random
  3.  
  4. SZEROKOSC_EKRANU = 1024
  5. WYSOKOSC_EKRANU = 800
  6. vec = pygame.math.Vector2
  7.  
  8. class Kulka(pygame.sprite.Sprite):
  9.     def __init__(self):
  10.         super(Kulka, self).__init__()
  11.         self.obraz = pygame.image.load("images/ball.png")
  12.         self.zresetuj_pozycje()
  13.         self.r = 16
  14.         self.przegrana = False
  15.  
  16.     #resetowanie pozycji
  17.     def zresetuj_pozycje(self):
  18.         self.wspolrzedne = vec(SZEROKOSC_EKRANU/2, WYSOKOSC_EKRANU-140)
  19.         self.pozycja = self.obraz.get_rect(center=self.wspolrzedne)
  20.         self.wektor = vec(0, -10)
  21.         self.kat_nachylenia = random.randrange(-30, 30)
  22.         self.wektor.rotate_ip(self.kat_nachylenia)
  23.         self.przegrana = False
  24.    
  25.     #aktualizacja
  26.     def aktualizuj(self, platforma):
  27.         self.wspolrzedne += self.wektor
  28.         self.pozycja.center = self.wspolrzedne
  29.         self.sprawdz_kolizje(platforma)
  30.  
  31.     #sprawdz wszystkie mozliwe kolizje
  32.     def sprawdz_kolizje(self, platforma):
  33.         #krawędzie ekranu
  34.         if self.pozycja.x <= 0:
  35.             self.wektor.x *= -1
  36.         if self.pozycja.right >= SZEROKOSC_EKRANU:
  37.             self.wektor.x *= -1
  38.         if self.pozycja.top <= 0:
  39.             self.wektor.y *= -1
  40.         if self.pozycja.bottom >= WYSOKOSC_EKRANU:
  41.             self.przegrana = True
  42.  
  43.         #kolizja z platformą
  44.         if self.pozycja.colliderect(platforma.pozycja):
  45.             self.wektor.y *= -1
  46.             self.wektor.x += platforma.porusza_sie*5
  47.             if self.wektor.x < -10: self.wektor.x = -10
  48.             if self.wektor.x > 10: self.wektor.x = 10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement