الطعام
الدرس 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 من القائمة بأكملها دفعة واحدة.
التحدي
سهل- أضف
import randomفي الأعلى. - اكتب
new_food(body)كما سبق، أسفلdraw_cell. - بعد
direction، عيّنfood = new_food(body). - بعد التعبئة، ارسم الطعام باللون الأحمر
(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