czemu gdy zeruje atrybut score w lini 73 a on nie zeruje się?
import pygame
from random import randint
pygame.init()
window = pygame.display.set_mode((600, 800))
background = pygame.image.load("tło.png")
class Player:
def __init__(self):
self.x = 0
self.y = 600
self.speed = 5
self.max_bullets = 1
self.image = pygame.image.load("Gracz.png")
self.bullets = []
def tick(self, keys):
if keys[pygame.K_a]:
self.x -= self.speed
if keys[pygame.K_d]:
self.x += self.speed
if keys[pygame.K_RIGHT]:
self.x += self.speed
if keys[pygame.K_LEFT]:
self.x -= self.speed
if keys[pygame.K_SPACE] and len(self.bullets) < self.max_bullets:
self.shoot_up()
for bullet in self.bullets[:]:
if bullet.y < 0:
self.bullets.remove(bullet)
def draw(self):
window.blit(self.image, (self.x, self.y))
for bullet in self.bullets:
bullet.draw()
pygame.display.update()
def shoot_up(self):
bullet = Bullet(self.x, self.y)
self.bullets.append(bullet)
class Bullet:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
self.speed = 5
self.image = pygame.image.load("pocisk.png")
self.height = self.image.get_height()
self.width = self.image.get_width()
self.hitbox = pygame.rect.Rect(self.x, self.y, self.width, self.height)
def tick(self):
self.y -= self.speed
self.hitbox = pygame.rect.Rect(self.x, self.y, self.width, self.height)
def draw(self):
window.blit(self.image, (self.x, self.y))
class Asteroid:
def __init__(self):
self.x = randint(0, 400)
self.y = -150
self.speed = 2
self.image = pygame.image.load("meteor.png")
self.height = self.image.get_height()
self.width = self.image.get_width()
self.hitbox = pygame.rect.Rect(self.x, self.y, self.width, self.height)
self.score = 0
def reset(self):
self.score = 0
self.y = -150
def tick(self):
self.hitbox = pygame.rect.Rect(self.x, self.y, self.width, self.height)
self.y += 1
if self.y >= 500:
self.reset()
def draw(self):
window.blit(self.image, (self.x, self.y))
def main():
run = True
clock = 0
asteroids = []
player = Player()
bullet = Bullet()
while run:
clock += pygame.time.Clock().tick(60) / 1000
print(clock)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if clock >= 1:
clock = 0
asteroids.append(Asteroid())
player.tick(keys)
for asteroid in asteroids:
asteroid.tick()
for asteroid in asteroids:
if bullet.hitbox.colliderect(asteroid.hitbox):
asteroid.y = -500
bullet.y = -550
asteroid.score += 1
window.blit(background, (0, 0))
teksiciorek2 = pygame.font.Font.render(pygame.font.SysFont("Kenney Mini Square", 48), f"Punkty: {sum(asteroid.score for asteroid in asteroids)}",True, (255, 213, 0))
window.blit(teksiciorek2, (0, 0))
player.draw()
for asteroid in asteroids:
asteroid.draw()
for bullet in player.bullets:
bullet.tick()
pygame.display.update()
if __name__ == "__main__":
main()