Ressources

(Contenu à venir ; cette section sera complétée plus tard.)

30 octobre 2026, 15:59

Sous-sections de Ressources

Assets gratuits

Avec de bons sprites, des effets sonores et de la musique, ton jeu a tout de suite l’air plus pro, et ça ne doit rien te coûter. Ci-dessous, tu trouves les meilleurs endroits pour chercher des assets gratuits, bien rangés par catégorie.

Sprites & tilesets

  • Kenney.nl : Le conseil par excellence. Kenney crée des centaines de packs de sprites, de tilesets et d’éléments d’interface, tous publiés en CC0 (domaine public). Tu n’as pas besoin d’attribution et tu peux tout utiliser, même dans des projets commerciaux. Commence ici.
  • OpenGameArt.org : Grande communauté avec des sprites, des tilesets et des animations dans tous les styles. Fais quand même attention à la licence de chaque asset : certains sont en CC0, d’autres en CC-BY ou CC-BY-SA. Filtre sur la licence pour éviter les surprises.
  • itch.io assets de jeux gratuits : Beaucoup d’artistes indé mettent des packs gratuits sur itch.io. La qualité varie, mais il y a de vraies pépites. Regarde toujours le texte de licence sur la page de l’auteur.

Effets sonores

  • Freesound.org : Énorme bibliothèque d’effets sonores du monde entier. Filtre les résultats sur « Creative Commons 0 » pour ne voir que les sons CC0 : là, tu n’as personne à créditer.
  • Kenney audio packs : Pour le son aussi, Kenney livre des packs CC0 prêts à l’emploi : sons rétro, clics d’interface, explosions, tout en un seul téléchargement.
  • sfxr.me : Génère tes propres effets sonores 8 bits dans le navigateur. Clique sur une catégorie (laser, explosion, powerup…), règle les curseurs comme tu veux et télécharge le .wav. Aucun souci de licence : c’est toi qui le génères.

Musique

  • Incompetech : Kevin MacLeod a composé des centaines de morceaux dans tous les genres, du chiptune à l’orchestre. La musique est gratuite sous CC-BY : tu mentionnes simplement « Music by Kevin MacLeod (incompetech.com) » quelque part dans tes crédits ou dans ton README.
  • Pixabay music : Des morceaux publiés en CC0 ou sous leur propre licence libre. Tu n’as personne à créditer et tu peux les utiliser dans n’importe quel projet.

Polices

  • Google Fonts : Des milliers de polices open source que tu peux télécharger et utiliser gratuitement, aussi dans des jeux. Tu cherches un look rétro ? Cherche « pixel » ou « monospace » pour des polices qui marchent bien dans Pygame (pygame.font.Font).

Les licences expliquées

Tous les assets « gratuits » ne se valent pas. Voici les trois licences que tu rencontres le plus souvent :

LicenceTu peux l’utiliser ?Attribution obligatoire ?Usage commercial ?
CC0OuiNonOui
CC-BYOuiOui, cite l’auteurOui
CC-BY-NCOuiOuiNon

Conseil pratique : en cas de doute, prends du CC0. Tu n’as pas besoin d’autorisation, tu n’as personne à créditer et tu ne risques jamais d’enfreindre les règles sans le vouloir. Kenney.nl est ton meilleur ami.


Regarde comment nous documentons les assets dans ce projet sur la page Licences des assets.

30 octobre 2026, 15:59

Licences des assets (ce projet)

La plupart des assets sont en CC0 (domaine public). Les exceptions sont indiquées dans le tableau avec la licence et le texte de crédit obligatoire.

Images

FichierSourceLicenceAuteurDate de téléchargement
basket.pngKenney Space Shooter ReduxCC0Kenney (kenney.nl)2026-05-11
star.pngKenney Space Shooter ReduxCC0Kenney (kenney.nl)2026-05-11
ship.pngKenney Space Shooter ReduxCC0Kenney (kenney.nl)2026-05-11
challenges/01-snake/fruits/*.png (9 fichiers)Kenney Food KitCC0Kenney (kenney.nl)2026-05-24

Les fichiers se trouvent dans static/_shared/images/ et sont disponibles sur le chemin d’URL publié /_shared/images/<nom-de-fichier>.

Sons

FichierSourceLicenceAuteurDate de téléchargement
shoot.wavCC02026-05-11
hit.wavCC02026-05-11
explosion.wavCC02026-05-11
pickup.wavCC02026-05-11
jump.wavCC02026-05-11
music.oggincompetech.comCC-BY 4.0Kevin MacLeod2026-05-17

Crédit obligatoire pour music.ogg

“Ethereal Relaxation” Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0
creativecommons.org/licenses/by/4.0

Comment ajouter des assets

  1. Télécharge depuis une source CC0 (kenney.nl, freesound.org avec le filtre Creative Commons 0).
  2. Place le fichier dans static/_shared/images/ ou static/_shared/sounds/.
  3. Mets à jour une ligne dans le tableau ci-dessus avec la source, la licence, l’auteur et la date.
  4. Pour un asset non CC0 (par ex. CC-BY) : mets le texte de crédit sous le tableau.
30 octobre 2026, 15:59

Publier avec pygbag

Tu as fait un jeu sympa et maintenant tu veux le partager avec le reste du monde. Avec pygbag, tu transformes ton jeu Pygame en une page web que tout le monde peut jouer dans le navigateur. Pas d’installation, pas d’embêtements. Tu envoies un lien et c’est tout !

Qu’est-ce que pygbag ?

Pygbag compile ton code Python en WebAssembly et l’emballe avec un petit runtime Pygame qui tourne dans le navigateur. Le joueur n’a rien à installer : il ouvre la page et il joue. C’est donc parfait pour partager ton jeu avec tes amis, ta famille ou sur itch.io.

Limitations

Pygbag ne fonctionne pas avec Pgzero (la bibliothèque simplifiée des premières sessions). Il te faut du vrai Pygame, donc c’est disponible à partir de la session 4 et après.

En plus, quelques choses ne marchent pas dans le navigateur :

  • Pas d’accès au disque : tu ne peux pas lire ni écrire de fichiers depuis le jeu.
  • Pas de threads : n’utilise pas threading ni multiprocessing.
  • Pas d’appels bloquants : tout doit se passer en asynchrone (voir ci-dessous).

Installation

Dans un projet uv :

uv add pygbag

Ou dans Thonny via le gestionnaire de paquets :

pip install pygbag

Préparer ton projet

Pygbag exige que ta boucle principale soit asynchrone. Ça veut dire : ta fonction main devient async def main(), et à chaque itération de frame tu ajoutes await asyncio.sleep(0). Cette seule ligne donne au navigateur la chance de respirer entre les frames.

Ci-dessous, tu trouves une structure de base prête à l’emploi : structure de main.py prête pour pygbag :

import asyncio
import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()

async def main():
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
        screen.fill((30, 30, 60))
        pygame.display.flip()
        clock.tick(60)
        await asyncio.sleep(0)  # requis pour pygbag

asyncio.run(main())

Adapte le code de ton propre jeu pour que tout se trouve dans async def main(), et n’oublie pas await asyncio.sleep(0) en bas de la boucle while.

Compiler

Dans ton terminal, va dans le dossier avec main.py et lance :

uv run python -m pygbag --build main.py

Le résultat apparaît dans le dossier build/web/. Ce dossier contient tout ce qu’il faut pour héberger ton jeu.

Tester en local

Tu veux d’abord voir si ça marche avant de publier ? Utilise la même commande sans --build :

uv run python -m pygbag main.py

Pygbag démarre un serveur web local sur http://localhost:8000. Ouvre ce lien dans ton navigateur et tu joues à ton propre jeu, exactement comme les autres le verront.

Publier

Si tout fonctionne, il y a deux façons de partager ton jeu :

  1. Via le coach : zippe le dossier build/web/ et donne le fichier zip à ton coach. C’est lui qui s’occupe de l’hébergement.
  2. Via itch.io : crée un compte gratuit sur itch.io, crée un nouveau projet en jeu HTML et téléverse le zip de build/web/. En quelques minutes, ton jeu a sa propre page que tout le monde peut visiter !

Félicitations ! Tu viens de publier un vrai jeu web. 🎮

30 octobre 2026, 15:59

Guide de traduction

Ce site existe en néerlandais, en français et en anglais. Cette page explique comment les traductions sont organisées, pour que tu puisses les entretenir sans casser la structure.

Comment les langues sont enregistrées

Chaque page a un fichier par langue, dans le même dossier :

content/sessions/python/01-catch-the-stars/_index.md      ← Nederlands (standaardtaal)
content/sessions/python/01-catch-the-stars/_index.en.md   ← Engels
content/sessions/python/01-catch-the-stars/_index.fr.md   ← Frans
  • Le néerlandais est à la racine (/sessions/...), le français et l’anglais sous /fr/ et /en/ avec le même chemin.
  • S’il manque une traduction, le sélecteur de langue affiche quand même cette langue, mais il mène à la page d’accueil de cette langue. Jamais de lien mort.
  • Tu ajoutes une nouvelle page ? Crée alors tout de suite les trois fichiers. title, weight, hidden et description doivent figurer dans chaque langue ; weight et hidden restent identiques.

Ce que tu ne traduis pas

  • Les identifiants de code (basket, star, ship, score) restent en anglais, parce qu’ils sont dans le fichier Python.
  • Les noms de fichiers (star.png, boom.wav, starter.zip) restent neutres en langue.
  • Les noms de produits : Pygame, Pgzéro/Pgzero, Thonny, PyCharm, VS Code, uv, Python, Git, GitHub, pygbag.
  • Les termes dojo que nous utilisons comme emprunts : ninja, coach, dojo, cheatsheet, cliffhanger, starter, checkpoint, Dojo Defender.

Ce que tu traduis, par contre

  • Tout le texte en prose, les intertitres, les titres et les champs description.
  • Les commentaires et les docstrings dans les blocs de code ; les identifiants et les chaînes dont le programme a vraiment besoin restent tels quels.
  • Les libellés des démos interactives (curseurs, textes sur le canvas).
  • Les notes du coach et les suggestions « à emporter chez toi ».

Termes fixes

NéerlandaisAnglaisFrançais
sessiesessionsession
uitdagingchallengedéfi
werkbladworksheetfiche de travail
oplossingsolutionsolution
bronnenresourcesressources
installerensetupinstallation
coach-notitiescoach notesnotes du coach
Wat je vandaag leertWhat you’ll learn todayCe que tu vas apprendre aujourd’hui
Neem mee naar huisTake it homeÀ emporter chez toi
Vastgelopen?Stuck?Bloqué ?
Tot de volgende keer!See you next time!À la prochaine !

Ton : le néerlandais utilise « je », l’anglais « you », le français « tu » (tutoiement) — les textes sont pour des ninjas de 10 à 17 ans.

Liens et téléchargements

  • Pour les liens vers d’autres pages, tu utilises {{% relref "/sessions/python/01-catch-the-stars" %}}, pour qu’ils suivent automatiquement la bonne langue.
  • Les liens vers des fichiers dans static/ (images, JS des démos, ZIP) sont absolus et neutres en langue.
  • Les ZIP avec du code existent par langue : starter.zip (néerlandais), starter.en.zip et starter.fr.zip. Chaque page de langue renvoie vers son propre ZIP. Les packs d’assets sans code (images.zip, fruits.zip) n’ont pas de variante par langue.

Code par langue

Le code source se trouve dans code/. Les commentaires sont en néerlandais ; les traductions se trouvent à côté de l’original sous main.en.py et main.fr.py. Lors de la création des ZIP, <naam>.<taal>.py est renommé en <naam>.py et les variantes des autres langues sont retirées. make zips s’en occupe.

Démos interactives

Chaque démo JS dans static/sessions/ a en haut une table STRINGS avec le néerlandais, l’anglais et le français. La langue vient de l’attribut lang de la page ; sans table ou avec une langue inconnue, la démo retombe sur le néerlandais.

Vérification avant de pusher

make build

Le build échoue sur un relref cassé. Ensuite, vérifie les trois langues de la page modifiée : le titre, les intertitres, les liens et les téléchargements doivent fonctionner de la même façon dans les trois.