Menu
CoddyTech

Makanan

Pelajaran 24 dari 40 dalam kursus Buat Game dengan Pygame di Coddy.

Makanan muncul di cell acak, tidak pernah di atas ular. Pilih cell acak dan coba lagi selama cell itu jatuh di tubuh ular:

def new_food(body):
    while True:
        cell = (random.randrange(COLS), random.randrange(ROWS))
        if cell not in body:
            return cell

random.randrange(COLS) adalah bilangan bulat dari 0 hingga COLS - 1: setiap kolom, dan tidak pernah melewati tepinya. return mengakhiri fungsi dan perulangannya begitu cell kosong ditemukan.

cell not in body memeriksa seluruh list sekaligus.

challenge icon

Tantangan

Mudah
  1. Tambahkan import random di bagian atas.
  2. Tulis new_food(body) seperti di atas, di bawah draw_cell.
  3. Setelah direction, atur food = new_food(body).
  4. Setelah pengisian, gambar makanan dengan warna merah (235, 80, 80).

Coba sendiri

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()
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Buat Game dengan Pygame

Latihan sendiri: Playground Pygame