وجّهها في اتجاه الطيران
جزء من قسم الكائنات والصور في رحلة Pygame على Coddy. الدرس 7 من 36.
تتجه السفينة إلى الأعلى في ملفها. عند تدويرها باستخدام rotate(ship, -90) تصبح متجهة إلى اليمين، وهذا يناسب سفينة تطير جانبياً. وعندما تطير إلى اليسار، ينبغي أن تتجه إلى اليسار.
تعطيك pygame.transform.flip(image, flip_x, flip_y) نسخة معكوسة. تعكسها True, False من اليسار إلى اليمين؛ وتعكسها False, True من الأعلى إلى الأسفل.
ship_right = pygame.transform.rotate(ship, -90)
ship_left = pygame.transform.flip(ship_right, True, False)تُنشأ الصورتان مرة واحدة، قبل الحلقة. ثم تتذكر اللعبة أيّ صورة تعرض في متغير، وتغيّر المفاتيح هذه الصورة:
if keys[pygame.K_LEFT]:
ship_rect.x -= 5
image = ship_leftارسم image في كل إطار. عندما لا يكون أي مفتاح مضغوطاً، تحتفظ image بآخر قيمة لها، لذا تواصل السفينة التوجه إلى الجهة التي طارت إليها آخر مرة.
التحدي
متوسط- قبل الحلقة، أنشئ
ship_left: اقلبship_rightمن اليسار إلى اليمين. - اجعل
image = ship_rightقبل الحلقة. - عند الضغط على مفتاح السهم الأيسر، عيّن
image = ship_left؛ وعند الضغط على مفتاح السهم الأيمن، عيّنimage = ship_right. تبقى الحركة كما هي. - ارسم
imageعندship_rect.
جرّب بنفسك
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Face the Way You Fly")
clock = pygame.time.Clock()
ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_right = pygame.transform.rotate(ship, -90)
ship_rect = ship_right.get_rect(center=(320, 240))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
ship_rect.x -= 5
if keys[pygame.K_RIGHT]:
ship_rect.x += 5
ship_rect.clamp_ip(screen.get_rect())
screen.fill((20, 22, 40))
screen.blit(ship_right, ship_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الكائنات والصور
4الكائنات الرسومية والمجموعات
صنف Spriteالمجموعاتالإزالة باستخدام kill()الالتقاط باستخدام spritecollideمجموعة ضد مجموعة2دوّر واقلب وغيّر الحجم
التدوير حول المركزوجّهها في اتجاه الطيرانغيّر حجم الصورةدوّر انطلاقًا من الصورة الأصلية5تصادمات مثالية على مستوى البكسل
المستطيلات تبدو غير منصفةالأقنعةكائنات Sprite مثالية على مستوى البكسلمناطق التصادم الدائرية6التحريك باستخدام أوراق الرسوم المتحركة
قصّ ورقة الرسوم المتحركةعداد الإطاراتالتحريك باستخدام الوقتانفجار لمرة واحدةتدرّب بنفسك: Playground لـ Pygame