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

تدرّب بنفسك: Playground لـ Pygame