Seviyeler
Coddy'nin Pygame ile Oyun Yap kursunda ders 28 / 40.
Her 5 yiyecekte yılan yeni bir seviyeye ulaşır ve daha hızlı hareket eder. Seviye, puana göre belirlenir: tam bölme score // 5, 0 ile 4 arasındaki puanlar için 0, 5 ile 9 arasındaki puanlar için 1 olur ve bu şekilde devam eder.
level = score // 5 + 1
clock.tick(8 + 2 * level)Yılan kare başına bir hücre hareket eder; bu nedenle saniyedeki kare sayısı arttıkça yılan hızlanır: 1. seviyede saniyede 10 adım, 2. seviyede 12, 3. seviyede 14 adım.
15 yiyeceğe ulaşmak oyunu kazandırır. alive and score < 15 yanlış olduğunda oyun durur ve You win! gösterilir.
Görev
Zor- Her karede
level = score // 5 + 1değerini ayarla vef"Level: {level}"metnini(370, 6)konumunda göster. - Saniyede
8 + 2 * levelkare hızında çalıştır. - Yalnızca
alive and score < 15koşulu sağlanırken hareket et ve skor 15 olduğundaYou win!metnini(240, 180)konumunda ortalanmış olarak göster.
Kendin dene
import random
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()
font = pygame.font.Font(None, 32)
def draw_cell(cell, color):
col, row = cell
pygame.draw.rect(screen, color, (col * CELL + 1, row * CELL + 1, CELL - 2, CELL - 2))
def new_food(body):
while True:
cell = (random.randrange(COLS), random.randrange(ROWS))
if cell not in body:
return cell
body = [(5, 9), (4, 9), (3, 9)]
direction = (1, 0)
food = new_food(body)
score = 0
alive = True
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
if alive:
x = body[0][0] + direction[0]
y = body[0][1] + direction[1]
if x < 0 or x >= COLS or y < 0 or y >= ROWS or (x, y) in body[:-1]:
alive = False
else:
body.insert(0, (x, y))
if (x, y) == food:
score += 1
food = new_food(body)
else:
body.pop()
screen.fill((30, 30, 46))
draw_cell(food, (235, 80, 80))
for cell in body[1:]:
draw_cell(cell, (120, 220, 120))
draw_cell(body[0], (180, 255, 160))
score_text = font.render(f"Score: {score}", True, (240, 240, 240))
screen.blit(score_text, (8, 6))
if not alive:
message = font.render("Game over", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(240, 180)))
pygame.display.flip()
clock.tick(10)
pygame.quit()
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Pygame ile Oyun Yap bölümündeki tüm dersler
3Izgaralar ve Listeler
Hücrelerden Oluşan Bir IzgaraAdım AdımKendi başına pratik yap: Pygame playground