אוכל
שיעור 24 מתוך 40 בקורס יוצרים משחקים עם Pygame של Coddy.
האוכל מופיע בתא אקראי, אף פעם לא על הנחש. בוחרים תא אקראי ומנסים שוב כל עוד הוא נופל על הגוף:
def new_food(body):
while True:
cell = (random.randrange(COLS), random.randrange(ROWS))
if cell not in body:
return cellrandom.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
תרגלו בעצמכם: Pygame אונליין