Anlam Taşıyan Harfler
Coddy'nin Pygame Journey'sinin Dünyalar bölümünün bir parçası. Ders 3 / 35.
Bir harita duvarlardan fazlasını içerebilir. Her nesne türüne kendine özgü bir karakter verin. Burada C bir madeni paradır.
LEVEL = [
"################",
"#..............#",
"#.C..####...C..#",
...
]Duvarları bulan döngüler madeni paraları da bulur: her karakteri if ve elif ile kontrol edin ve her nesneyi kendi listesine ekleyin.
elif char == "C":
coins.append(pygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16))Bir madeni para, bulunduğu kareden daha küçüktür. 36 piksellik bir karede 16 piksellik bir madeni parayı ortalamak için, kare'nin solundan ve üstünden 10 piksel içeride başlayın: (36 - 16) / 2 = 10.
Kontrol etmediğiniz karakterler hiçbir şey oluşturmaz, bu nedenle . kareleri boş kalır.
Görev
Kolaywallsöğesinin yanınacoinsadlı bir liste oluştur.- Harita döngülerinde, her
Ciçinpygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16)değerinicoinslistesine ekle. - Oyun döngüsünde, duvarlardan sonra her madeni parayı sarı
COIN,(255, 196, 0)rengiyle çiz.
Kendin dene
import pygame
TILE = 36
WALL = (120, 90, 60)
PLAYER = (80, 200, 120)
LEVEL = [
"################",
"#..............#",
"#.C..####...C..#",
"#..............#",
"#....C....##...#",
"#..##.....##.C.#",
"#..##..........#",
"#.C.......###..#",
"#..............#",
"####..####..####",
]
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Map from Text")
clock = pygame.time.Clock()
walls = []
for row, line in enumerate(LEVEL):
for col, char in enumerate(line):
if char == "#":
walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))
player = pygame.Rect(40, 40, 28, 28)
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
if keys[pygame.K_UP]:
player.y -= 4
if keys[pygame.K_DOWN]:
player.y += 4
screen.fill((30, 30, 46))
for wall in walls:
pygame.draw.rect(screen, WALL, wall)
pygame.draw.rect(screen, PLAYER, player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Dünyalar bölümündeki tüm dersler
1Metinden Haritalar
Metinde Bir SeviyeSatırlar ve SütunlarAnlam Taşıyan HarflerOyuncunun Başladığı YerHer Seferinde Bir Ekran3Yerçekimi ve Zıplama
Yerçekimiyle DüşmeYerden ZıplamaKısa SıçrayışlarEn Yüksek Düşme HızıZıplama Tamponu6Devriye Gezen Düşmanlar
Devriye Gezen Bir BlobÜzerine Bas ya da Darbe AlYürüme DöngüsüHaritadaki DüşmanlarKendi başına pratik yap: Pygame playground