diff --git a/starfield.py b/starfield.py index 091bd5d5b97c3c5ccd85baef66d01c24c59d1c72..a98aad198c4f0cc4c45ab90e4a1861590cc23bf4 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