Menu
CoddyTech

צבור נקודות על היהלומים

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

במשחק צריך להיות ניקוד. שמרו אותו במשתנה שנוצר לפני הלולאה, score = 0, והוסיפו 1 באמצעות score += 1 בכל פעם שהשחקן תופס אבן חן.

במשחק הזה הניקוד מוצג כשורה של ריבועים קטנים, אחד לכל נקודה. לולאת for מציירת שורה של כל דבר: כאן, שלושה עיגולים במרחק של 30 פיקסלים זה מזה.

for i in range(3):
    pygame.draw.circle(screen, (255, 200, 0), (20 + 30 * i, 20), 10)

במעבר הראשון i הוא 0, אחר כך 1 ואז 2, כך שכל עיגול ממוקם 30 פיקסלים ימינה מקודמו. באמצעות range(score) השורה מתארכת בעיגול אחד בכל פעם שהניקוד עולה.

challenge icon

אתגר

קל

ספרו את אבני החן והציגו את הספירה למעלה.

  1. הוסיפו score = 0 לפני הלולאה, והוסיפו לו 1 כאשר לחיצה פוגעת באבן החן.
  2. לאחר ציור אבן החן, עבור כל i ב-range(score), ציירו מלבן ורוד בצבע (240, 110, 180) במיקום (10 + 10 * i, 14, 8, 8).

לחצו על "שחק" ותפסו שלוש אבני חן: שלושה סימנים ורודים מסתדרים בפינה השמאלית העליונה. ואז לחצו על "בדיקה".

נסו בעצמכם

import random
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
        elif event.type == pygame.MOUSEBUTTONDOWN:
            x, y = event.pos
            if gx <= x <= gx + 30 and gy <= y <= gy + 30:
                gx = random.randint(15, 435)
                gy = random.randint(55, 315)

    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 אונליין