Avlu
Coddy'nin Pygame Projesi: Kale Avlusunu Savun kursunda ders 1 / 20.
Bu kursta her derste bir özellik ekleyerek baştan sona tek bir oyun oluşturacaksın. Bir şövalye, gece vakti bir kale avlusunda duruyor. Duvarların üzerinden giderek daha fazla canavar geliyor ve şövalyenin silahları kendiliğinden ateş ediyor. Sen yalnızca hareket ediyorsun. Şafak sökene kadar dayan ve kale kurtulsun.
Oyun avluyla başlıyor: 48 piksellik karolardan oluşan, yatayda 15 ve dikeyde 10 karo genişliğinde bir ızgara; içeride zemin, kenarlarında duvar var. Her karede 150 karoyu çizebilirsin ama bunlar hiç değişmiyor. Bunları pencere boyutlarında bir Surface üzerine bir kez çiz, sonra her karede bu resmi ekrana koy:
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, duvarların içindeki Rect'tir. courtyard.collidepoint(x, y), nokta (x, y) — burada bir karonun sol üst köşesi — bu alanın içindeyse True değerini verir.
Görev
Kolay# build the courtyard heresatırının altında, karo satırlarının ve sütunlarının her biri üzerinde döngü kur.courtyard.collidepoint(x, y)True olduğundafloor_imgöğesinibackgroundüzerine, diğer tüm yerlerde isewall_imgöğesini çiz.- Oyun döngüsünde
screen.fill((20, 20, 30))ifadesiniscreen.blit(background, (0, 0))ile değiştir.
Kendin dene
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))
# avluyu burada oluştur
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 Projesi: Kale Avlusunu Savun bölümündeki tüm dersler
Kendi başına pratik yap: Pygame playground