Lleva la cuenta
Lección 13 de 41 del curso Crea juegos con Pygame de Coddy.
El texto en pygame es una imagen de las palabras. Un objeto pygame.font.Font convierte una cadena en una superficie, y dibujas esa superficie con screen.blit.
font = pygame.font.Font(None, 32)
text = font.render(f"Score: {score}", True, (240, 240, 240))
screen.blit(text, (10, 10))Font(None, 32) es la fuente integrada de pygame, de 32 píxeles de alto. Créala una vez, antes del bucle. render(text, True, color) dibuja las palabras; True suaviza sus bordes. blit(surface, (x, y)) copia la imagen en la pantalla con la esquina superior izquierda en (x, y).
Representa el texto dentro del bucle, después del relleno. La puntuación cambia, y una imagen creada una sola vez sigue mostrando el número anterior.
Desafío
FácilCuenta las capturas en pantalla.
- Antes del bucle, crea
font = pygame.font.Font(None, 32)yscore = 0. - Suma 1 a
scorecuando la cesta atrape un bloque. - Después de dibujar el bloque, renderiza
f"Score: {score}"en(240, 240, 240)y dibújalo en(10, 10).
Pulsa «Jugar» y atrapa un bloque: aparece Score: 1. Después, pulsa «Comprobar».
Pruébalo tú mismo
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 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]:
basket.x -= 8
if keys[pygame.K_RIGHT]:
basket.x += 8
basket.clamp_ip(screen.get_rect())
block.y += 3
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)
if block.colliderect(basket):
block.y = -20
block.x = random.randint(0, 460)
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.draw.rect(screen, (235, 80, 80), block)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Todas las lecciones de Crea juegos con Pygame
Practica por tu cuenta: Playground de Pygame