Menu
CoddyTech

לחצו על אבן החן

חלק מהיחידה לולאת המשחק במסלול ה-Pygame של Coddy. שיעור 14 מתוך 32.

get_pos אומר היכן נמצא הסמן. לחיצה היא אירוע: כשלוחצים על כפתור בעכבר, לולאת האירועים מקבלת אירוע אחד מסוג pygame.MOUSEBUTTONDOWN באותה מסגרת. event.pos מציין היכן נחתה הלחיצה.

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

היהלום נכנס בריבוע בגודל 30 על 30, החל מ-(gx, gy). לחיצה פוגעת בו כאשר x נמצא בין הצד השמאלי לצד הימני של הריבוע, ו-y נמצא בין הצד העליון לצד התחתון שלו. ב-Python אפשר לכתוב gx <= x <= gx + 30 כדי לומר "x נמצא בין gx ל-gx + 30".

יהלום שנאסף קופץ למקום חדש בעזרת random.randint, ולולאת for מציירת את הניקוד כשורה של ריבועים ורודים קטנים, אחד לכל נקודה.

challenge icon

אתגר

קל
  1. הוסף import random בתחילת הקוד ואת score = 0 לפני הלולאה.
  2. בעת MOUSEBUTTONDOWN, כאשר event.pos נמצא בתוך הריבוע שבין (gx, gy) ל־(gx + 30, gy + 30): הוסף 1 ל־score, הגדר את gx ל־random.randint(15, 435) ואת gy ל־random.randint(55, 315).
  3. אחרי אבן החן, צייר את הניקוד: עבור כל i ב־range(score), מלבן ורוד (240, 110, 180) במיקום (10 + 10 * i, 14, 8, 8).

נסו בעצמכם

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

כל השיעורים ביחידה לולאת המשחק

תרגלו בעצמכם: Pygame אונליין