Untitled
unknown
python
2 years ago
3.1 kB
2
Indexable
import pygame, sys class Player(pygame.sprite.Sprite) : def __init__(self): super().__init__() self.image = pygame.Surface((40,40)) self.image.fill((240,240,240)) self.rect = self.image.get_rect(center = (400,400)) self.current_health = 200 self.target_health = 500 self.maximum_health = 1000 self.health_bar_length = 400 self.health_ratio = self.maximum_health / self.health_bar_length self.health_change_speed = 5 def update(self): # self.basic_health() self.advanced_health() def get_damage(self, amount): if self.target_health > 0: self.target_health -= amount if self.target_health <= 0: self.target_health = 0 def get_health(self, amount): if self.target_health < self.maximum_health: self.target_health += amount if self.target_health >= self.maximum_health: self.target_health = self.maximum_health def basic_health(self): pygame.draw.rect(screen, (255, 0, 0),(10,10,self.target_health/self.health_ratio, 25)) # surface, color, rect, stroke width pygame.draw.rect(screen, (255, 255, 255),(10,10,self.health_bar_length,25), 4) def advanced_health(self): transition_width = 0 #make it invisible transition_color = (255,0,0) # second health bar is always technically on screen if self.current_health < self.target_health: transition_color = (0, 255, 0) self.current_health += self.health_change_speed transition_width = int((self.target_health - self.current_health)/self.health_ratio) if self.current_health > self.target_health: transition_color = (255, 255, 0) self.current_health -= self.health_change_speed transition_width = int((self.current_health - self.target_health)/self.health_ratio) health_bar_rect = pygame.Rect(10,45,self.current_health/self.health_ratio,25) transition_bar_rect = pygame.Rect(health_bar_rect.right,45,transition_width,25) pygame.draw.rect(screen,(255,0,0),health_bar_rect) pygame.draw.rect(screen,transition_color,transition_bar_rect) pygame.draw.rect(screen,(255,255,255),(10,45, self.health_bar_length,25),4) pygame.init() screen = pygame.display.set_mode((800, 800)) clock = pygame.time.Clock() player = pygame.sprite.GroupSingle(Player()) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: player.sprite.get_health(200) if event.type == pygame.KEYDOWN: if event.key == pygame.K_DOWN: player.sprite.get_damage(200) screen.fill((30,30,30)) player.draw(screen) player.update() pygame.display.update() clock.tick(60)
Editor is loading...