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