< Zpět na seznam úloh

D3 Bludiště

var names = ["pygame"]

Z minula máte na obrazovce raketu, která se otáčí. Vaším úkolem je vytvořit hru s bludištěm, které má hráč za úkol proletět pokud možno bez kolizí.

Použijte vzorový kód níže na téhle stránce. Očekávám, že z něj zkopírujete části do programu, který jste za uplynulé týdny napsali. Na některé podrobnosti by jinak bylo těžké přijít -- jak se vytváří Sprite, jak ho umístit a jak ho vykreslit na obrazovku.

Spouštění tady na webu zatím nefunguje, musíte si nainstalovat python atd. přímo na počítač.

Odevzdat můžete do gitu, když vám to půjde, anebo klasicky přes Teams.

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()
running = True

player = pygame.sprite.Sprite()
player.image = pygame.image.load("raketa.png").convert_alpha()
player.rect = player.image.get_rect()
player.speed = pygame.Vector2((0, 0))
player.position = pygame.Vector2((30, 30))

wall = pygame.sprite.Sprite()
wall.image = pygame.Surface((10, 20))
wall.image.fill("red")
wall.rect = wall.image.get_rect().move((500, 100))

everything = pygame.sprite.Group([player, wall])

while running:
    dt = clock.tick(60) / 1000

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    player.speed.x += 25.0 * dt * (keys[pygame.K_d] - keys[pygame.K_a])
    player.speed.y += 25.0 * dt * (keys[pygame.K_w] - keys[pygame.K_s])
    player.position += player.speed * dt
    player.rect.topleft = player.position  # tím se pozice zaokrouhlí na celé pixely

    screen.fill("white")
    everything.draw(screen)

    pygame.display.flip()