Advertisement
plarmi

Rain Simulator

Sep 9th, 2023
1,169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.28 KB | None | 0 0
  1. import pygame
  2. import random
  3.  
  4. class RainSimulator:
  5.     def __init__(self):
  6.         pygame.init()
  7.         self.screen_width = 500
  8.         self.screen_height = 700
  9.         self.screen = pygame.display.set_mode((self.screen_width, self.screen_height))
  10.         pygame.display.set_caption("Дождь")
  11.         self.font = pygame.font.SysFont("Consolas", 20)
  12.         self.background_color = (0, 0, 0)
  13.         self.blue = (173, 216, 230)
  14.  
  15.         # параметры дождевых капель
  16.         self.drops = []
  17.         self.drops_landed = 0
  18.         self.drops_per_pixel = 100
  19.         self.level_height = 0
  20.  
  21.         self.clock = pygame.time.Clock()
  22.  
  23.     # добавляем капли дождя
  24.     def add_drop(self):
  25.         self.drops.append([random.randint(0, self.screen_width), 0])
  26.  
  27.     # рисуем дождь
  28.     def draw_drops(self):
  29.         for drop in self.drops:
  30.             pygame.draw.line(self.screen, self.blue, (drop[0], drop[1]), (drop[0], drop[1] + 5), 2)
  31.  
  32.     # подсчитываем капли, поднимаем уровень воды
  33.     def update_drops(self):
  34.         for drop in self.drops:
  35.             drop[1] += 5
  36.             if drop[1] >= self.screen_height:
  37.                 self.drops.remove(drop)
  38.                 self.drops_landed += 1
  39.                 if self.drops_landed % self.drops_per_pixel == 0:
  40.                     self.level_height += 1
  41.  
  42.     # выводим количество капель
  43.     def draw_score(self):
  44.         score_text = self.font.render(f"Капель дождя: {str(self.drops_landed)}", True, (255, 255, 255))
  45.         self.screen.blit(score_text, (10, 10))
  46.         pygame.draw.rect(self.screen, self.blue, (0, self.screen_height-self.level_height, self.screen_width, self.level_height))
  47.  
  48.     def run_rain(self):
  49.         running = True
  50.         while running:
  51.             for event in pygame.event.get():
  52.                 if event.type == pygame.QUIT:
  53.                     running = False
  54.             self.add_drop()
  55.             self.update_drops()
  56.             self.screen.fill(self.background_color)
  57.             self.draw_drops()
  58.             self.draw_score()
  59.             pygame.display.update()
  60.             self.clock.tick(60)
  61.  
  62.         pygame.quit()
  63.  
  64.  
  65. app = RainSimulator()
  66. app.run_rain()
  67.  
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement