Menu
CoddyTech

Tenir le score

Leçon 13 sur 41 du cours Créer des jeux avec Pygame de Coddy.

Le texte dans pygame est une image des mots. Un pygame.font.Font transforme une chaîne de caractères en surface, puis tu dessines cette surface avec 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) est la police intégrée de pygame, d'une hauteur de 32 pixels. Crée-la une seule fois, avant la boucle. render(text, True, color) dessine les mots ; True lisse leurs contours. blit(surface, (x, y)) copie l'image sur l'écran, son coin supérieur gauche étant placé en (x, y).

Rends le texte à l'intérieur de la boucle, après le remplissage. Le score change, et une image créée une seule fois continue d'afficher l'ancien nombre.

challenge icon

Défi

Facile

Compte les blocs attrapés à l’écran.

  1. Avant la boucle, crée font = pygame.font.Font(None, 32) et score = 0.
  2. Ajoute 1 à score lorsque le panier attrape un bloc.
  3. Après avoir dessiné le bloc, affiche f"Score: {score}" dans (240, 240, 240) et affiche-le à (10, 10).

Appuie sur « Jouer » et attrape un bloc : Score: 1 s’affiche. Puis appuie sur « Vérifier ».

Essayez vous-même

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()

Toutes les leçons de Créer des jeux avec Pygame

Entraînez-vous par vous-même : Playground Pygame