الفناء
الدرس 1 من 20 في دورة مشروع Pygame: الصمود في القلعة على Coddy.
في هذه الدورة، تبني لعبة كاملة، ميزةً في كل درس. يقف فارس في ساحة قلعة ليلًا. تأتي الوحوش من فوق الأسوار، ويزداد عددها أكثر فأكثر، وتطلق أسلحة الفارس النار من تلقاء نفسها. كل ما عليك هو التحرك. اصمد حتى الفجر، وستُنجى القلعة.
تبدأ اللعبة بالساحة: شبكة من مربعات بحجم 48 بكسل، 15 مربعًا عرضًا و10 مربعات طولًا، أرضية في الداخل وجدار حول الحافة. يمكنك رسم 150 مربعًا في كل إطار، لكنها لا تتغير أبدًا. ارسمها مرة واحدة على Surface بحجم النافذة، ثم اعرض تلك الصورة على الشاشة في كل إطار:
background = pygame.Surface((WIDTH, HEIGHT))
for row in range(HEIGHT // TILE):
for col in range(WIDTH // TILE):
x = col * TILE
y = row * TILE
background.blit(floor_img, (x, y))courtyard هو Rect داخل الجدران. تكون courtyard.collidepoint(x, y) True عندما تكون النقطة (x, y)، وهي هنا الزاوية العلوية اليسرى لمربع، داخلها.
التحدي
سهل- أسفل
# build the courtyard here، كرّر على كل صف وعمود من البلاطات. - ارسم
floor_imgعلىbackgroundحيث تكونcourtyard.collidepoint(x, y)صحيحة، وارسمwall_imgفي كل مكان آخر. - في حلقة اللعبة، استبدل
screen.fill((20, 20, 30))بـscreen.blit(background, (0, 0)).
جرّب بنفسك
import pygame
WIDTH, HEIGHT = 720, 480
TILE = 48
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Hold the Keep")
clock = pygame.time.Clock()
def load(name):
return pygame.image.load("assets/images/" + name).convert_alpha()
floor_img = load("floor.png")
wall_img = load("wall.png")
courtyard = pygame.Rect(TILE, TILE, WIDTH - 2 * TILE, HEIGHT - 2 * TILE)
background = pygame.Surface((WIDTH, HEIGHT))
# أنشئ ساحة القلعة هنا
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((20, 20, 30))
pygame.display.flip()
clock.tick(60)
pygame.quit()
جميع دروس مشروع Pygame: الصمود في القلعة
تدرّب بنفسك: Playground لـ Pygame