Menu
CoddyTech

Clique na Joia

Parte da seção O loop do jogo do Journey de Pygame da Coddy. Lição 14 de 32.

get_pos informa onde o ponteiro está. Um clique é um evento: quando um botão do mouse é pressionado, o loop de eventos recebe um evento pygame.MOUSEBUTTONDOWN naquele quadro. O event.pos indica onde o clique aconteceu.

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

A gema cabe em um quadrado de 30 por 30, a partir de (gx, gy). O clique acerta a gema quando x está entre os lados esquerdo e direito do quadrado e y entre a parte de cima e a de baixo. Python permite escrever gx <= x <= gx + 30 para dizer que "x está entre gx e gx + 30".

Uma gema coletada salta para outro lugar com random.randint, e um loop for desenha a pontuação como uma fileira de pequenos quadrados rosas, um por ponto.

challenge icon

Desafio

Fácil
  1. Adicione import random no início e score = 0 antes do loop.
  2. Quando ocorrer MOUSEBUTTONDOWN, se event.pos estiver dentro do quadrado de (gx, gy) a (gx + 30, gy + 30): some 1 a score, defina gx como random.randint(15, 435) e gy como random.randint(55, 315).
  3. Depois da gema, desenhe a pontuação: para cada i em range(score), desenhe um retângulo rosa (240, 110, 180) em (10 + 10 * i, 14, 8, 8).

Experimente você mesmo

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 as lições de O loop do jogo

Pratique por conta própria: Playground de Pygame