Punkte für Edelsteine
Teil des Abschnitts Die Spielschleife der Pygame-Journey von Coddy. Lektion 15 von 35.
Ein Spiel braucht einen Punktestand. Speichere ihn in einer vor der Schleife erstellten Variable, score = 0, und addiere jedes Mal, wenn der Spieler ein Juwel fängt, 1 mit score += 1.
Dieses Spiel zeigt den Punktestand als Reihe kleiner Quadrate an, eines pro Punkt. Eine for-Schleife zeichnet eine Reihe von beliebigen Dingen: hier drei Kreise im Abstand von 30 Pixeln.
for i in range(3):
pygame.draw.circle(screen, (255, 200, 0), (20 + 30 * i, 20), 10)Beim ersten Durchlauf ist i 0, dann 1, dann 2, sodass jeder Kreis 30 Pixel weiter rechts liegt. Mit range(score) wächst die Reihe jedes Mal um einen Kreis, wenn der Punktestand steigt.
Aufgabe
EinfachZähle die Edelsteine und zeige die Anzahl oben an.
- Füge vor der Schleife
score = 0hinzu und erhöhe den Wert um 1, wenn ein Klick den Edelstein trifft. - Zeichne nach dem Zeichnen des Edelsteins für jedes
iinrange(score)ein pinkes(240, 110, 180)-Rechteck an der Position(10 + 10 * i, 14, 8, 8).
Drücke auf „Spielen“ und fange drei Edelsteine: Oben links reihen sich drei pinke Markierungen aneinander. Drücke dann auf „Prüfen“.
Probier es selbst
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Gem Hunt")
clock = pygame.time.Clock()
gx, gy = 225, 165
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
if gx <= x <= gx + 30 and gy <= y <= gy + 30:
gx = random.randint(15, 435)
gy = random.randint(55, 315)
screen.fill((30, 30, 46))
gem_points = [(gx + 15, gy), (gx + 30, gy + 15), (gx + 15, gy + 30), (gx, gy + 15)]
pygame.draw.polygon(screen, (80, 220, 255), gem_points)
mouse_x, mouse_y = pygame.mouse.get_pos()
pygame.draw.circle(screen, (240, 240, 240), (mouse_x, mouse_y), 10, 2)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Alle Lektionen in Die Spielschleife
Übe selbstständig: Pygame-Playground