Menu
CoddyTech
flag Pt iconPortuguêsdown icon

Finalize seu jogo

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

Agora, as etapas 3 a 5: um desafio, um final e texto. Rock Dodge usa uma ideia que você ainda não viu: uma lista de Rects: uma nova pedra a cada 400 ms, muitas na tela ao mesmo tempo.

rocks = []

# em 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 pedras que ainda estão na tela, para que a lista não cresça para sempre.

Uma string state, "playing", "lost" ou "won", substitui várias sinalizações. E pygame.time.get_ticks() retorna os milissegundos desde que o jogo começou, o que permite criar um cronômetro: sobreviva por 20 segundos para vencer.

Personalize seu jogo: mude as cores, as velocidades, 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 para que ele tenha:

  1. Algo que se mova sozinho.
  2. Texto na tela, como uma pontuação ou um cronômetro.
  3. Um desfecho: uma forma de vencer, uma forma de perder ou ambos.

As verificações procuram texto, algo que se mova sem nenhuma tecla pressionada, um jogo que funcione por 30 segundos sem erros e uma janela que se feche. Todo o resto fica a seu critério.

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