Krok 8: wybuch
Meteorytowy deszcz - Gry w Pythonie - przykłady (Python)
Wybuch: `Spark` pojawia się w miejscu trafionego meteoru, rośnie co tick i usuwa się, gdy urośnie do 40. To krótka animacja, która działa w każdym stanie gry.
import random
class Game(Sprite):
def __init__(self):
self.size = 10
self.color = (99, 102, 241)
self.position = (0, 90)
self.points = 0
self.lives = 3
self.level = 1
self.state = "play"
def update(self):
if self.state == "play":
self.text = f"Punkty: {self.points} Życia: {self.lives} Poziom: {self.level}"
if self.lives <= 0:
self.state = "over"
if self.state == "over":
self.text = f"Koniec gry! Punkty: {self.points}"
class Rocket(Sprite):
def __init__(self):
self.image = 12
self.color = (234, 88, 12)
self.size = 20
self.position = (0, -80)
self.was_down = False
def update(self):
if game.state != "play":
return
self.x = world.mouse.x
down = world.key('space')
if down and not self.was_down:
shot = Bullet()
shot.position = (self.x, -70)
world.add(shot)
self.was_down = down
class Meteor(Sprite):
def __init__(self):
self.image = 40
self.color = (120, 72, 40)
self.size = 20
self.reset()
def reset(self):
self.position = (random.randint(-90, 90), 100)
def update(self):
if game.state != "play":
return
self.y = self.y - game.level - 1
if self.y <= -100:
game.lives = game.lives - 1
self.reset()
if self.touches(rocket):
game.lives = game.lives - 1
self.reset()
class Bullet(Sprite):
def __init__(self):
self.image = 4
self.color = (250, 204, 21)
self.size = 8
def update(self):
if game.state != "play":
return
self.y = self.y + 6
if self.y >= 95:
self.remove()
return
for meteor in meteors:
if self.touches(meteor):
game.points = game.points + 1
game.level = 1 + game.points // 10
spark = Spark()
spark.position = (meteor.x, meteor.y)
world.add(spark)
meteor.reset()
self.remove()
return
class Spark(Sprite):
def __init__(self):
self.image = 38
self.color = (249, 115, 22)
self.size = 10
def update(self):
self.size = self.size + 3
if self.size >= 40:
self.remove()
game = Game()
rocket = Rocket()
meteors = [Meteor(), Meteor(), Meteor()]
world.add(game)
world.add(rocket)
for item in meteors:
world.add(item)
world.start()Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Gry w Pythonie - przykłady·Zaloguj się, aby zapisać postęp na koncie.