U Dönüşü Yok
Coddy'nin Pygame ile Oyun Yap kursunda ders 22 / 40.
Bir yılan düz bir şekilde geriye dönemez: başı kendi boynuna girer. Bu yüzden ters yöndeki dönüş yok sayılır.
(dx, dy) değerinin tersi (-dx, -dy) değeridir. Sağa hareket ederken (1, 0), tersi sola hareket etmektir: (-1, 0).
En yeni tuşla değil, yılanın son hareket ettiği yönle karşılaştır. İki hızlı tuş basışı aynı kareye denk gelebilir: sağa hareket ederken, önce Yukarı sonra Sola basılır. Yukarı yönüne izin verilir ve Sola basışı Yukarı yönüne göre kontrol edilseydi ona da izin verilirdi; böylece yılan kendi üzerine dönerdi. Bu yüzden her karenin başlangıcındaki yönü hatırla:
while running:
moving = direction
for event in pygame.event.get():
# ...
turn = TURNS[event.key]
if turn != (-moving[0], -moving[1]):
direction = turnZaten ilerlediğin yöne basmak da dâhil, diğer tüm dönüşlere izin verilir; bu hiçbir şeyi değiştirmez.
Görev
Kolay- Oyun döngüsünün içindeki ilk satır olarak
moving = directionifadesini ayarla. - Dönüş işlemini,
movingyönünün tersini gösteren bir tuşun hiçbir şey yapmayacağı şekilde değiştir. Diğer tüm ok tuşları yılanı döndürmeye devam eder.
Kendin dene
import pygame
CELL = 20
COLS, ROWS = 24, 18
TURNS = {
pygame.K_LEFT: (-1, 0),
pygame.K_RIGHT: (1, 0),
pygame.K_UP: (0, -1),
pygame.K_DOWN: (0, 1),
}
pygame.init()
screen = pygame.display.set_mode((COLS * CELL, ROWS * CELL))
pygame.display.set_caption("Snake")
clock = pygame.time.Clock()
def draw_cell(cell, color):
col, row = cell
pygame.draw.rect(screen, color, (col * CELL + 1, row * CELL + 1, CELL - 2, CELL - 2))
head = (5, 9)
direction = (1, 0)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN and event.key in TURNS:
direction = TURNS[event.key]
head = (head[0] + direction[0], head[1] + direction[1])
screen.fill((30, 30, 46))
draw_cell(head, (180, 255, 160))
pygame.display.flip()
clock.tick(10)
pygame.quit()
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Pygame ile Oyun Yap bölümündeki tüm dersler
3Izgaralar ve Listeler
Hücrelerden Oluşan Bir IzgaraAdım AdımKendi başına pratik yap: Pygame playground