רשימה של אובייקטים
חלק מהיחידה ספרייטים ותמונות במסלול ה-Pygame של Coddy. שיעור 13 מתוך 36.
שני כוכבים בעלי שם אינם שמיים. ארבעים כוכבים דורשים רשימה: יוצרים את האובייקטים בלולאה ומוסיפים כל אחד מהם.
stars = []
for i in range(40):
x = random.randint(0, 639)
y = random.randint(0, 479)
speed = random.randint(1, 3)
stars.append(Star(x, y, speed))לאחר מכן לולאה אחת מעדכנת את כולם, ולולאה נוספת מציירת את כולם:
for star in stars:
star.update()בתוך for, star הוא כל אחד מהאובייקטים בתורו, ולכן star.update() מזיז את הכוכב הזה במהירות שלו. הוספת עוד מאה כוכבים משנה מספר אחד; קוד העדכון והציור נשאר זהה.
יוצרים את הרשימה פעם אחת, לפני לולאת המשחק. רשימה שנוצרת בתוך הלולאה היא רשימה חדשה של כוכבים חדשים בכל פריים, כולם שוב במקומות ההתחלתיים שלהם, ולכן שום דבר לא זז לעולם.
אתגר
בינוני- הוסף
import randomבראש הקובץ. - לפני הלולאה, צור את
stars: רשימה של 40 אובייקטים מסוג Star, שלכל אחד מהם ערך x אקראי בין 0 ל־639, ערך y אקראי בין 0 ל־479 ומהירות אקראית בין 1 ל־3. - בלולאה, עדכן כל כוכב ב־
stars, וצייר כל כוכב אחרי פעולת המילוי. הסר אתslowואתfast.
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Stars")
clock = pygame.time.Clock()
class Star:
def __init__(self, x, y, speed):
self.x = x
self.y = y
self.speed = speed
def update(self):
self.y += self.speed
if self.y > 480:
self.y = 0
def draw(self, screen):
pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), 4)
slow = Star(200, 0, 1)
fast = Star(440, 0, 3)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
slow.update()
fast.update()
screen.fill((20, 22, 40))
slow.draw(screen)
fast.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה ספרייטים ותמונות
5התנגשויות מדויקות ברמת הפיקסל
מלבנים מרגישים לא הוגניםמסכותספרייטים מדויקים ברמת הפיקסלתיבות פגיעה מעגליות3מחלקות לאובייקטים במשחק
המחלקה הראשונה שלךמתודותself הוא האובייקטרשימה של אובייקטיםאובייקטים עם תמונותתת־מחלקהתרגלו בעצמכם: Pygame אונליין