Menu
CoddyTech

Kliknij klejnot

Część sekcji Pętla gry ścieżki Pygame w Coddy. Lekcja 14 z 32.

get_pos wskazuje, gdzie znajduje się wskaźnik. Kliknięcie jest zdarzeniem: gdy przycisk myszy zostaje naciśnięty, pętla zdarzeń odbiera jedno zdarzenie pygame.MOUSEBUTTONDOWN w tej klatce. Jego event.pos wskazuje, gdzie nastąpiło kliknięcie.

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:
            score += 1

Klejnot mieści się w kwadracie o wymiarach 30 na 30, zaczynającym się w punkcie (gx, gy). Kliknięcie trafia w niego, gdy x znajduje się między lewą i prawą krawędzią kwadratu, a y między jego górną i dolną krawędzią. W Pythonie możesz zapisać gx <= x <= gx + 30, co oznacza „x mieści się w zakresie od gx do gx + 30”.

Zebrany klejnot pojawia się w nowym miejscu dzięki random.randint, a pętla for rysuje wynik jako rząd małych różowych kwadratów, po jednym na każdy punkt.

challenge icon

Wyzwanie

Łatwy
  1. Dodaj import random na początku oraz score = 0 przed pętlą.
  2. Po wystąpieniu MOUSEBUTTONDOWN, gdy event.pos znajduje się wewnątrz kwadratu od (gx, gy) do (gx + 30, gy + 30): zwiększ score o 1, ustaw gx na random.randint(15, 435), a gy na random.randint(55, 315).
  3. Po narysowaniu klejnotu narysuj wynik: dla każdego i w range(score) narysuj różowy prostokąt (240, 110, 180) w pozycji (10 + 10 * i, 14, 8, 8).

Spróbuj swoich sił

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

    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()

Wszystkie lekcje w sekcji Pętla gry

Poćwicz samodzielnie: Edytor online Pygame