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.
Desafio
FácilFinalize seu jogo.
- Adicione algo que se mova sozinho.
- Mostre um texto na tela, como uma pontuação ou um cronômetro.
- 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()
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