ספינת הסיור
חלק מהיחידה ספרייטים ותמונות במסלול ה-Pygame של Coddy. שיעור 29 מתוך 36.
הגיע הזמן לבנות משחק שלם: Star Patrol. גלים של ספינות אויב טסים מטה מראש המסך. הספינה שלך מסיירת בתחתית החלון, נעה ימינה ושמאלה ויורה לייזרים כלפי מעלה. השמד את כל הגלים כדי לנצח; אם שלושה אויבים יחלפו או שתתנגש בהם, המשחק יסתיים.
כל אובייקט במשחק יהיה ספרייט: השחקן, הלייזרים שלו, האויבים והפיצוצים שלהם. השחקן מופיע ראשון, כמו בפרק 4:
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = ship_image
self.rect = self.image.get_rect(midbottom=(320, 470))טען את ship_image פעם אחת, אחרי החלון. הפונקציה update שלו מזיזה את ה-Rect באמצעות החצים ומשאירה אותו בתוך החלון. הלולאה הראשית קוראת ל-player.update() ומציירת את הספינה.
בפרק הזה נרחיב את אותה תוכנית שיעור אחר שיעור, לכן חשוב לשמור על השמות שניתנו במשימות: הבדיקות מאתרות לפיהם את חלקי המשחק.
אתגר
בינוני- טען את
assets/images/ship.pngאלship_image. - כתוב
class Player(pygame.sprite.Sprite): תמונהship_image, Rect כשהמרכז התחתון שלו נמצא ב-(320, 470), ו-updateשמזיזה אותו 6 פיקסלים בכל פריים בעזרת שמאלה וימינה, ומגבילה אותו לחלון. - צור
player = Player(); בכל פריים קרא ל-player.update()והצג באמצעות blit אתplayer.imageבמיקוםplayer.rectאחרי המילוי.
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Star Patrol")
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((12, 14, 30))
pygame.display.flip()
clock.tick(60)
pygame.quit()
כל השיעורים ביחידה ספרייטים ותמונות
7סיור כוכבים
ספינת הסיורירי בלייזרים5התנגשויות מדויקות ברמת הפיקסל
מלבנים מרגישים לא הוגניםמסכותספרייטים מדויקים ברמת הפיקסלתיבות פגיעה מעגליות3מחלקות לאובייקטים במשחק
המחלקה הראשונה שלךמתודותself הוא האובייקטרשימה של אובייקטיםאובייקטים עם תמונותתת־מחלקהתרגלו בעצמכם: Pygame אונליין