המחלקה הראשונה שלך
חלק מהיחידה ספרייטים ותמונות במסלול ה-Pygame של Coddy. שיעור 10 מתוך 36.
הכוכב מיוצג באמצעות שלושה משתנים: star_x, star_y ו-star_speed. זה מספיק לכוכב אחד; בשביל שמיים מלאים בכוכבים צריך דרך טובה יותר לשמור את המספרים של כל כוכב יחד.
מחלקה היא תוכנית לסוג של אובייקט. כל אובייקט שנוצר ממנה נושא ערכים משלו, שנקראים מאפיינים:
class Star:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 2
star = Star(320, 0)Star(320, 0) יוצר אובייקט Star חדש. לאחר מכן Python מריצה עליו את __init__, הפונקציה בתוך המחלקה שמגדירה כל אובייקט חדש (זהו השם ש-Python מחפשת, עם שני קווים תחתונים בכל צד), עם x = 320 ו-y = 0. בפנים, self הוא האובייקט החדש, ולכן self.x = x שומר בו את הערך 320. מחוץ למחלקה אפשר לגשת לאותו ערך באמצעות star.x, ולשנות אותו באותה הדרך: star.y += star.speed.
שמות של מחלקות מתחילים באות גדולה: Star היא התוכנית, ו-star הוא כוכב אחד שנוצר ממנה.
אתגר
קל- כתבו מחלקה
Starשבה__init__(self, x, y)מאתחלת אתself.x, אתself.yואתself.speed = 2. - החליפו את שלושת המשתנים ב־
star = Star(320, 0). - בלולאה, השתמשו ב־
star.y, ב־star.speedוב־star.xבמקומות שבהם הופיעו המשתנים הישנים.
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Star")
clock = pygame.time.Clock()
star_x = 320
star_y = 0
star_speed = 2
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
star_y += star_speed
if star_y > 480:
star_y = 0
screen.fill((20, 22, 40))
pygame.draw.circle(screen, (255, 255, 255), (star_x, star_y), 4)
pygame.display.flip()
clock.tick(60)
pygame.quit()
כל השיעורים ביחידה ספרייטים ותמונות
5התנגשויות מדויקות ברמת הפיקסל
מלבנים מרגישים לא הוגניםמסכותספרייטים מדויקים ברמת הפיקסלתיבות פגיעה מעגליות3מחלקות לאובייקטים במשחק
המחלקה הראשונה שלךמתודותself הוא האובייקטרשימה של אובייקטיםאובייקטים עם תמונותתת־מחלקהתרגלו בעצמכם: Pygame אונליין