Menu
CoddyTech

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

La 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.

challenge icon

Desafío

Fácil
  1. Añade import random en la parte superior y score = 0 antes del bucle.
  2. Al producirse MOUSEBUTTONDOWN, cuando event.pos esté dentro del cuadrado desde (gx, gy) hasta (gx + 30, gy + 30): suma 1 a score, establece gx en random.randint(15, 435) y gy en random.randint(55, 315).
  3. Después de la gema, dibuja la puntuación: para cada i en range(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

Practica por tu cuenta: Playground de Pygame