أكمل لعبتك
الدرس 40 من 40 في دورة اصنع ألعابًا باستخدام Pygame على Coddy.
والآن الخطوات من 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"، محل عدة علامات. وتعطيك pygame.time.get_ticks() عدد المللي ثانية منذ بدء اللعبة، مما يتيح إنشاء مؤقّت: ابقَ على قيد الحياة 20 ثانية لتفوز.
اجعل لعبتك خاصة بك: غيّر الألوان والسرعات والقواعد. ثم العبها. إذا كان الفوز صعبًا جدًا أو الخسارة سريعة جدًا، فغيّر الأرقام حتى تصبح اللعبة ممتعة.
التحدي
سهلأكمل لعبتك بحيث تتضمن ما يلي:
- شيئًا يتحرك من تلقاء نفسه.
- نصًا على الشاشة، مثل النتيجة أو المؤقت.
- نهاية: طريقة للفوز أو طريقة للخسارة أو كلتيهما.
تتحقق الاختبارات من وجود نص، وشيء يتحرك دون الضغط على أي مفتاح، ولعبة تعمل لمدة 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()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس اصنع ألعابًا باستخدام Pygame
تدرّب بنفسك: Playground لـ Pygame