Menu
CoddyTech

Mücevhere Tıkla

Coddy'nin Pygame Journey'sinin Oyun Döngüsü bölümünün bir parçası. Ders 14 / 32.

get_pos, işaretçinin nerede olduğunu söyler. Tıklama bir olaydır: fare düğmesine basıldığında, olay döngüsü o karede bir pygame.MOUSEBUTTONDOWN olayı alır. event.pos, tıklamanın gerçekleştiği yerdir.

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

Mücevher, (gx, gy) noktasından başlayan 30'a 30'luk bir kareye sığar. x karenin sol ve sağ kenarları arasında, y ise üst ve alt kenarları arasındaysa tıklama mücevherin üzerindedir. Python'da "x, gx ile gx + 30 arasındadır" ifadesini gx <= x <= gx + 30 şeklinde yazabilirsin.

Toplanan bir mücevher, random.randint ile yeni bir yere sıçrar ve bir for döngüsü, her puan için bir tane olacak şekilde, puanı küçük pembe karelerden oluşan bir sıra olarak çizer.

challenge icon

Görev

Kolay
  1. En üste import random ve döngüden önce score = 0 ekle.
  2. MOUSEBUTTONDOWN olduğunda, event.pos noktası (gx, gy) ile (gx + 30, gy + 30) arasındaki karenin içindeyse: score değerini 1 artır, gx değerini random.randint(15, 435) olarak ve gy değerini random.randint(55, 315) olarak ayarla.
  3. Değerli taştan sonra skoru çiz: range(score) içindeki her i için (10 + 10 * i, 14, 8, 8) konumunda pembe (240, 110, 180) bir dikdörtgen çiz.

Kendin dene

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

Oyun Döngüsü bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground