Yemek
Coddy'nin Pygame ile Oyun Yap kursunda ders 24 / 40.
Yemek rastgele bir hücrede belirir, asla yılanın üzerinde olmaz. Rastgele bir hücre seç ve yılanın gövdesine denk geldiği sürece tekrar dene:
def new_food(body):
while True:
cell = (random.randrange(COLS), random.randrange(ROWS))
if cell not in body:
return cellrandom.randrange(COLS), 0'dan COLS - 1'e kadar bir tam sayıdır: her sütunu kapsar ve asla sınırın bir ötesine geçmez. Boş bir hücre bulunduğu anda return işlevi ve onunla birlikte döngüyü sona erdirir.
cell not in body listenin tamamını tek seferde kontrol eder.
Görev
Kolay- En üste
import randomekle. - Yukarıdaki gibi,
draw_cellişlevinin altınanew_food(body)yaz. directionsatırından sonrafood = new_food(body)değerini ayarla.- Ekranı doldurduktan sonra yiyeceği kırmızı renkte
(235, 80, 80)çiz.
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))
body = [(5, 9), (4, 9), (3, 9)]
direction = (1, 0)
running = True
while running:
moving = direction
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN and event.key in TURNS:
turn = TURNS[event.key]
if turn != (-moving[0], -moving[1]):
direction = turn
x = body[0][0] + direction[0]
y = body[0][1] + direction[1]
body.insert(0, (x, y))
body.pop()
screen.fill((30, 30, 46))
for cell in body[1:]:
draw_cell(cell, (120, 220, 120))
draw_cell(body[0], (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
Kendi başına pratik yap: Pygame playground