Finalize Seu Jogo
Parte da seção Projetos do Journey de Pygame da Coddy. Lição 31 de 31.
Agora, as etapas 3 a 5: um desafio, um encerramento e texto. Rock Dodge mantém suas pedras em uma lista de Rects: uma nova pedra a cada 400 ms, várias 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", decide o que cada quadro faz, como em Sky Runner. 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.
Seu jogo pode usar tudo o que você aprendeu ao longo da jornada: um grupo de sprites no lugar da lista, imagens, um som ao sofrer um impacto, música, um menu antes do jogo, uma pontuação recorde, salas criadas a partir de mapas de texto.
Deixe o jogo com a sua cara: mude as cores, as velocidades e as regras. Depois, jogue. Se for difícil demais vencer ou fácil demais perder, mude os números até ficar divertido.
Desafio
FácilTermine seu jogo para que ele tenha:
- Algo que se mova sozinho.
- Texto na tela, como uma pontuação ou um cronômetro.
- Um desfecho: uma forma de vencer, uma forma de perder ou ambas.
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 feche. Todo o resto fica a seu critério: formas ou imagens, sons, música, estados e mapas — tudo funciona.
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()
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Projetos
Pratique por conta própria: Playground de Pygame