السقوط بفعل الجاذبية
جزء من قسم العوالم في رحلة Pygame على Coddy. الدرس 10 من 35.
يهبط البطل في النافذة بمعدل ثابت قدره 4 بكسلات في كل إطار، كأنه في مصعد. تتسارع الأجسام الحقيقية أثناء سقوطها. احتفظ بسرعة اللاعب الرأسية في متغير، وزِدها في كل إطار:
vel_y += GRAVITY
player.y += vel_y
if player.bottom > FLOOR:
player.bottom = FLOOR
vel_y = 0vel_y هي السرعة بالبكسل لكل إطار؛ والقيم الموجبة تعني الاتجاه إلى الأسفل. تضيف GRAVITY = 1 واحدًا إليها في كل إطار، لذا يسقط اللاعب بمقدار 1، ثم 2، ثم 3 بكسلات، وهكذا.
الأرضية هنا خط عند FLOOR = 324، وهو أعلى العشب. عندما يتجاوزه اللاعب، ضع أسفله على الخط وأوقف السقوط. يستبدل الفصل التالي هذا الخط بمنصات حقيقية.
اللاعب هو مستطيل الصورة: player_img.get_rect(topleft=(264, 40)) هو مستطيل أبعاده 48 × 48 في ذلك الموضع، وscreen.blit(player_img, player) يرسم الصورة هناك.
التحدي
سهل- أضف
GRAVITY = 1في الأعلى وvel_y = 0قبل حلقة اللعبة. - في كل إطار، أضف
GRAVITYإلىvel_y، ثم أضفvel_yإلىplayer.y، بدلًا منplayer.y += 4. - عندما يتجاوز
player.bottomقيمةFLOOR، عيّنplayer.bottom = FLOORوvel_y = 0.
جرّب بنفسك
import pygame
TILE = 36
FLOOR = 324
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Gravity")
clock = pygame.time.Clock()
background = pygame.image.load("assets/backgrounds/clouds.png").convert_alpha()
grass_img = pygame.image.load("assets/images/grass.png").convert_alpha()
player_img = pygame.image.load("assets/images/player.png").convert_alpha()
player = player_img.get_rect(topleft=(264, 40))
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 -= 4
if keys[pygame.K_RIGHT]:
player.x += 4
player.y += 4
if player.bottom > FLOOR:
player.bottom = FLOOR
for y in range(0, 360, 72):
for x in range(0, 576, 72):
screen.blit(background, (x, y))
for x in range(0, 576, TILE):
screen.blit(grass_img, (x, FLOOR))
screen.blit(player_img, player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس العوالم
تدرّب بنفسك: Playground لـ Pygame