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

جميع دروس حلقة اللعبة

تدرّب بنفسك: Playground لـ Pygame