From bbe2b865eac8d3e308702b7aa3a9c2dde71ad74e Mon Sep 17 00:00:00 2001 From: Erkki Kaila <ertaka@utu.fi> Date: Fri, 21 Feb 2025 19:10:24 +0200 Subject: [PATCH] refactored starfield to it's own class --- starfield.py | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/starfield.py b/starfield.py index 091bd5d..a98aad1 100644 --- a/starfield.py +++ b/starfield.py @@ -216,7 +216,27 @@ class Floor: if self.offset == 64: self.offset = 0 + +class StarField: + """ Mallintaa kokonaista skrollaavaa tähtikenttää """ + def __init__(self): + self.stars = [] + ri = random.randint + rc = random.choice + direct = (-1,1) + for i in range(1, 9): + for j in range(20): + self.stars.append(Star(ri(0,640), ri(5,475), i)) + + def draw(self, screen): + for star in self.stars: + star.draw(screen) + + def move(self): + for star in self.stars: + star.move() + # Tarkistaa onko joku luodeista osunut viholliseen def check_bullet_hits(bullets: list, enemies: list): @@ -245,19 +265,13 @@ high = 0 lives = 3 score = 0 - +ri = random.randint # Silmukka, jossa peli pyörii uudelleen ja uudelleen while True: # Lista, jossa ovat kaikki taustalla rulllavat tähdet - stars = [] - ri = random.randint - rc = random.choice - direct = (-1,1) - for i in range(1, 9): - for j in range(20): - stars.append(Star(ri(0,640), ri(5,475), i)) + stars = StarField() # Kaikki ruudulla näkyvät ammukset bullets = [] @@ -335,8 +349,7 @@ while True: # Piirretään kaikki tähdet - kaikki muu piirretään tähtien päälle, # siksi tämän pitää olla ensin - for star in stars: - star.draw(scr) + stars.draw(scr) # Piirretään lattia floor.draw(scr) @@ -400,10 +413,8 @@ while True: # Tämä piirtää muutokset ruudulle pygame.display.flip() - # Liikutetaan tähtiä listassa - for star in stars: - star.move() - + # Liikutetaan tähtiä listassa ja lattiaa + stars.move() floor.move() # Tämä määrää pelin nopeuden - kokeile pienentää tai suurentaa arvoa -- GitLab