Menu
CoddyTech
flag He iconעבריתdown icon

אוכל

שיעור 24 מתוך 40 בקורס יוצרים משחקים עם Pygame של Coddy.

האוכל מופיע בתא אקראי, אף פעם לא על הנחש. בוחרים תא אקראי ומנסים שוב כל עוד הוא נופל על הגוף:

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

random.randrange(COLS) הוא מספר שלם מ-0 ועד COLS - 1: כל עמודה, ולעולם לא אחת מעבר לקצה. return מסיים את הפונקציה ואת הלולאה יחד איתה, ברגע שמתפנה תא.

cell not in body בודק את הרשימה כולה בבת אחת.

challenge icon

אתגר

קל
  1. הוסף import random בתחילת הקובץ.
  2. כתוב את new_food(body) כמו למעלה, מתחת ל־draw_cell.
  3. אחרי direction, הגדר food = new_food(body).
  4. אחרי המילוי, צייר את האוכל באדום (235, 80, 80).

נסו בעצמכם

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 iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יוצרים משחקים עם Pygame

תרגלו בעצמכם: Pygame אונליין