Menu
CoddyTech

אוכל

חלק מהיחידה פרויקטים במסלול ה-Pygame של Coddy. שיעור 6 מתוך 31.

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

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 אונליין