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اختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المشاريع

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