Haz clic en la gema
Parte de la sección El bucle del juego del Journey de Pygame de Coddy. Lección 14 de 32.
get_pos indica dónde está el puntero. Un clic es un evento: cuando se presiona un botón del ratón, el bucle de eventos recibe un evento pygame.MOUSEBUTTONDOWN en ese fotograma. Su event.pos indica dónde se hizo clic.
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 += 1La gema cabe en un cuadrado de 30 por 30 desde (gx, gy). El clic cae sobre ella cuando x está entre los lados izquierdo y derecho del cuadrado, e y entre su parte superior e inferior. Python te permite escribir gx <= x <= gx + 30 para decir «x está entre gx y gx + 30».
Una gema recogida salta a un lugar nuevo con random.randint, y un bucle for dibuja la puntuación como una fila de pequeños cuadrados rosas, uno por punto.
Desafío
Fácil- Añade
import randomen la parte superior yscore = 0antes del bucle. - Al producirse
MOUSEBUTTONDOWN, cuandoevent.posesté dentro del cuadrado desde(gx, gy)hasta(gx + 30, gy + 30): suma 1 ascore, establecegxenrandom.randint(15, 435)ygyenrandom.randint(55, 315). - Después de la gema, dibuja la puntuación: para cada
ienrange(score), un rectángulo rosa(240, 110, 180)en(10 + 10 * i, 14, 8, 8).
Pruébalo tú mismo
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()
Todas las lecciones de El bucle del juego
1Mueve un cuadrado
Abre una ventanaRellena el fondo4Movimiento basado en el tiempo
Tiempo deltaPíxeles por segundoVector2Aceleración y fricciónReaparecer al otro lado de la pantalla3El ratón
Sigue el punteroHaz clic en la gemaPractica por tu cuenta: Playground de Pygame