أكمل لعبتك
جزء من قسم المشاريع في رحلة Pygame على Coddy. الدرس 31 من 31.
والآن الخطوات من 3 إلى 5: تحدٍّ ونهاية ونص. تحتفظ لعبة Rock Dodge بصخورها في قائمة من Rects: صخرة جديدة كل 400 ms، وعديد من الصخور على الشاشة في الوقت نفسه.
rocks = []
# عند وقوع حدث المؤقت NEW_ROCK:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))
# في كل إطار:
for rock in rocks:
rock.y += 5
if rock.colliderect(player):
state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]السطر الأخير هو استيعاب قائمة: قائمة جديدة لا تحتوي إلا على الصخور التي ما زالت على الشاشة، حتى لا تكبر القائمة إلى الأبد.
تحدد سلسلة state، وهي "playing" أو "lost" أو "won"، ما تفعله كل لقطة، كما في Sky Runner. وتُعيد pygame.time.get_ticks() عدد المللي ثانية منذ بدء اللعبة، ما يتيح إنشاء مؤقّت: اصمد 20 ثانية لتفوز.
يمكن أن تستخدم لعبتك كل ما تعلّمته خلال الرحلة: مجموعة sprites بدلًا من القائمة، وصورًا، وصوتًا عند الاصطدام، وموسيقى، وقائمة قبل اللعبة، وأعلى نتيجة، وغرفًا مُنشأة من خرائط نصية.
اجعل لعبتك خاصة بك: غيّر الألوان والسرعات والقواعد. ثم العبها. إذا كان الفوز صعبًا جدًا أو الخسارة سريعة جدًا، فغيّر الأرقام حتى تصبح اللعبة ممتعة.
التحدي
سهلأكمل لعبتك بحيث تتضمن ما يلي:
- شيئًا يتحرك من تلقاء نفسه.
- نصًا على الشاشة، مثل النتيجة أو مؤقّت.
- نهاية: طريقة للفوز أو طريقة للخسارة أو كليهما.
تتحقق الاختبارات من وجود نص، وشيء يتحرك دون الضغط على أي مفتاح، ومن أن اللعبة تعمل لمدة 30 ثانية دون حدوث خطأ، ومن إمكانية إغلاق النافذة. أما كل ما عدا ذلك فهو متروك لك: الأشكال أو الصور، والأصوات، والموسيقى، والحالات والخرائط كلها مناسبة.
جرّب بنفسك
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()
player = pygame.Rect(220, 320, 40, 20)
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]:
player.x -= 7
if keys[pygame.K_RIGHT]:
player.x += 7
player.clamp_ip(screen.get_rect())
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المشاريع
تدرّب بنفسك: Playground لـ Pygame