Advertisement
drakon-firestone

Untitled

May 21st, 2023
528
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.73 KB | None | 0 0
  1. # ------------------------ program.py --------------------
  2. # 1. potrzebne biblioteki:
  3. # - pygame
  4. import pygame
  5.  
  6. # 2a. tworzymy plik game_settings.py i dodajemy tam wartosci SCREEN_WIDTH oraz SCREEN_HEIGHT
  7. # 2b. importujemy wartości SCREEN_WIDTH oraz SCREEN_HEIGHT z game_settings
  8. # --- 1 sposób ---
  9. '''
  10. import game_settings
  11. game_settings.SCREEN_WIDTH
  12. '''
  13. # -- 2 sposób
  14. from game_settings import SCREEN_WIDTH, SCREEN_HEIGHT
  15.  
  16. # 32. importujemy klase Paddle z pliku paddle.py
  17. from paddle import Paddle
  18.  
  19. pygame.init()
  20. # 3. zmienna screen na ekran o wymiarach [SCREEN_WIDTH, SCREEN_HEIGHT]
  21. screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
  22. # 4. zmienna clock na zegar gry
  23. clock = pygame.time.Clock()
  24.  
  25. # 5. zmienna background_image z tłem gry
  26. # załadowanym z pliku 'images/background.png'
  27. background_image = pygame.image.load('images/background.png')
  28.  
  29. # 33. obiekt Paddle
  30. paddle = Paddle()
  31.  
  32. # 6. glowna petla programu - tak dlugo jak zmienna game_running jest True
  33. game_running = True
  34. while game_running:
  35.     # 7. przejście po wszystkich wydarzeniach z pygame.event.get()
  36.     for event in pygame.event.get():
  37.         # 8. zdarzenie naciśnięcia klawisza pygame.KEYDOWN
  38.         if event.type == pygame.KEYDOWN:
  39.             # 9. sprawdzamy klawisz pygame.K_ESCAPE
  40.             if event.key == pygame.K_ESCAPE:
  41.                 # 10. zatrzymujemy grę (zmienna game_running)
  42.                 game_running = False
  43.         # 11. zdarzenie nacisnięcia klawisza X
  44.         if event.type == pygame.QUIT:
  45.             # zatrzymanie gry (game_runing)
  46.             game_running = False
  47.  
  48.     # UWAGA: do zrobienia z nauczycielem
  49.     # 34. sterowanie paletką - używamy metody pygame.key.get_pressed()
  50.     keys = pygame.key.get_pressed()
  51.    
  52.     if keys[pygame.K_a] or keys[pygame.K_LEFT]:
  53.         paddle.move_paddle(-1)
  54.     if keys[pygame.K_d] or keys[pygame.K_RIGHT]:
  55.         paddle.move_paddle(1)
  56.  
  57.  
  58.     # 12. wyświetl tło
  59.     screen.blit(background_image, (0,0))
  60.  
  61.     # 35. wyświetl paletkę (paddle.image, paddle.position)
  62.     screen.blit(paddle.image, paddle.position)
  63.  
  64.     # 13. czyszczenie ekranu (2-buffer)
  65.     pygame.display.flip()
  66.     # 14. ustawienie zegara - 30 FPS
  67.     clock.tick(30)
  68.  
  69. # 15. zamkniecie aplikacji
  70. pygame.quit()
  71.  
  72.  
  73.  
  74. # ------------------------ paddle.py ------------------------
  75. # 16. importujemy biblioteki
  76. # - pygame
  77. import pygame
  78.  
  79. # 17. importujemy wartości SCREEN_WIDTH oraz SCREEN_HEIGHT z game_settings
  80. from game_settings import SCREEN_WIDTH, SCREEN_HEIGHT
  81.  
  82. # 19. klasa Paddle - nasza paletka
  83. # dziedziczy z klasy Sprite z modułu sprite biblioteki pygame
  84. class Paddle(pygame.sprite.Sprite):
  85.     # 20a. konstruktor klasy Paddle
  86.     def __init__(self):
  87.         # 20b. uruchomienie konstruktora klasy nadrzednej
  88.         super().__init__()
  89.         # 21. wczytanie i zapisanie obrazka do zmiennej image
  90.         # ścieżka to: 'images/pad.png'
  91.         self.image = pygame.image.load('images/pad.png')
  92.         # zmienna zapamiętująca kierunek poruszania paletki
  93.         # -1 -> lewa strona; 1 -> prawa strona
  94.         self.is_moving = 0
  95.         # 22. resetowanie pozycji - uruchomienie funkcji reset_position
  96.         # bedzie ona stworzona ponizej konstruktora
  97.         self.reset_position()
  98.  
  99.     # 23. definicja funkcji reset_position()
  100.     def reset_position(self):
  101.         # 24. ustawienie pozycji (obiekt klasy Rect z biblioteki pygame)
  102.         # 25. wspołrzędne położenia: SCREEN_WIDTH/2-70, SCREEN_HEIGHT - 100
  103.         # 26. wymiary: 140 x 30
  104.         paddle_width = 140
  105.         paddle_height = 30
  106.         paddle_offset_from_bottom = 100
  107.         self.position = pygame.Rect(SCREEN_WIDTH/2 - paddle_width/2, SCREEN_HEIGHT - paddle_offset_from_bottom,
  108.                                     paddle_width, paddle_height)
  109.  
  110.     # 27. funkcja move_paddle
  111.     def move_paddle(self, direction):
  112.         # direction: -1 -> lewo, 1 -> prawo
  113.         self.is_moving = direction
  114.         # 28. predkosc poruszania sie
  115.         speed = 10
  116.         # 29. przesuniecie pozycji (funkcji move_ip klasy Rect)
  117.         self.position.move_ip(direction * speed, 0)
  118.         # 30. ograniczenie z lewej strony
  119.         # jesli pozycja position.left <= 0 ustawiamy position.x = 0
  120.         if self.position.left <= 0:
  121.             self.position.x = 0
  122.         # 31. ograniczenie z prawej strony
  123.         # jesli pozycja position.right >= SCREEN_WIDTH ustawiamy position.x = SCREEN_WIDTH - 140
  124.         if self.position.right >= SCREEN_WIDTH:
  125.             self.position.x = SCREEN_WIDTH - 140
  126.  
  127.  
  128.     def update(self):
  129.         self.is_moving = 0
  130.  
  131. # ----------------------- game_settings.py -----------------
  132. # 2. wymiary ekranu 1024x800, zmienne SCREEN_WIDTH oraz SCREEN_HEIGHT
  133. SCREEN_WIDTH = 1024
  134. SCREEN_HEIGHT = 800
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement