Menu
CoddyTech

Finalize seu jogo

Lição 41 de 41 do curso Crie jogos com Pygame da Coddy.

Agora, etapas 3 a 5: um desafio, um final e texto. Rock Dodge mantém suas rochas em uma lista de Rects: uma nova rocha a cada 400 ms, com várias na tela ao mesmo tempo.

rocks = []

# quando ocorrer um evento do temporizador NEW_ROCK:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))

# a cada quadro:
for rock in rocks:
    rock.y += 5
    if rock.colliderect(player):
        state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]

A última linha é uma compreensão de lista: uma nova lista contendo apenas as rochas que ainda estão na tela, para que a lista não cresça para sempre.

Uma string state, "playing", "lost" ou "won", decide o que cada quadro faz, como em Sky Runner. E pygame.time.get_ticks() fornece os milissegundos desde o início do jogo, o que cria um cronômetro: sobreviva por 20 segundos para vencer.

Seu jogo pode usar tudo deste curso, e a jornada pelo Pygame mostra ainda mais: sprites, imagens, som, menus, recordes e mapas.

Faça o jogo ficar com a sua cara: mude as cores, as velocidades e as regras. Depois, jogue. Se estiver difícil demais vencer ou fácil demais perder, mude os números até ficar divertido.

challenge icon

Desafio

Fácil

Finalize seu jogo.

  1. Adicione algo que se mova sozinho.
  2. Mostre um texto na tela, como uma pontuação ou um cronômetro.
  3. Dê um final ao jogo: uma maneira de vencer, de perder ou ambas.

Pressione “Jogar”: algo se move sozinho e seu texto aparece. Depois, “Verificar”.

Experimente você mesmo

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()

player = pygame.Rect(220, 320, 40, 20)

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player.x -= 7
    if keys[pygame.K_RIGHT]:
        player.x += 7
    player.clamp_ip(screen.get_rect())

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), player)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Crie jogos com Pygame

Pratique por conta própria: Playground de Pygame