Menu
CoddyTech

אוכל

שיעור 24 מתוך 41 בקורס צרו משחקים עם 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 בחלק העליון, ואת new_food(body) כמו למעלה, מתחת ל־draw_cell.
  2. אחרי direction, הגדירו food = new_food(body).
  3. אחרי המילוי, ציירו את האוכל באדום (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()

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

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