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