Menu
CoddyTech

Klik Permata

Termasuk bagian Perulangan Game dalam perjalanan Pygame di Coddy. Pelajaran 14 dari 32.

get_pos menunjukkan posisi penunjuk. Klik adalah sebuah peristiwa: saat tombol mouse ditekan, perulangan peristiwa menerima satu peristiwa pygame.MOUSEBUTTONDOWN dalam frame tersebut. event.pos menunjukkan lokasi klik.

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

Permata itu muat dalam persegi berukuran 30 kali 30, mulai dari (gx, gy). Klik mengenai permata jika x berada di antara sisi kiri dan kanan persegi, dan y berada di antara sisi atas dan bawahnya. Python memungkinkan kamu menulis gx <= x <= gx + 30 untuk menyatakan "x berada dari gx hingga gx + 30".

Permata yang dikumpulkan berpindah ke lokasi baru dengan random.randint, lalu perulangan for menggambar skor sebagai deretan persegi kecil berwarna merah muda, satu persegi untuk setiap poin.

challenge icon

Tantangan

Mudah
  1. Tambahkan import random di bagian atas dan score = 0 sebelum perulangan.
  2. Saat MOUSEBUTTONDOWN, jika event.pos berada di dalam persegi dari (gx, gy) hingga (gx + 30, gy + 30): tambahkan 1 ke score, atur gx ke random.randint(15, 435) dan gy ke random.randint(55, 315).
  3. Setelah permata, gambar skor: untuk setiap i dalam range(score), gambar rect berwarna merah muda (240, 110, 180) di (10 + 10 * i, 14, 8, 8).

Coba sendiri

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

Semua pelajaran di Perulangan Game

Latihan sendiri: Playground Pygame