Ressources
(Contenu à venir ; cette section sera complétée plus tard.)
(Contenu à venir ; cette section sera complétée plus tard.)
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.
.wav. Aucun souci de licence : c’est toi qui le génères.pygame.font.Font).Tous les assets « gratuits » ne se valent pas. Voici les trois licences que tu rencontres le plus souvent :
| Licence | Tu peux l’utiliser ? | Attribution obligatoire ? | Usage commercial ? |
|---|---|---|---|
| CC0 | Oui | Non | Oui |
| CC-BY | Oui | Oui, cite l’auteur | Oui |
| CC-BY-NC | Oui | Oui | Non |
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.
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.
| Fichier | Source | Licence | Auteur | Date de téléchargement |
|---|---|---|---|---|
basket.png | Kenney Space Shooter Redux | CC0 | Kenney (kenney.nl) | 2026-05-11 |
star.png | Kenney Space Shooter Redux | CC0 | Kenney (kenney.nl) | 2026-05-11 |
ship.png | Kenney Space Shooter Redux | CC0 | Kenney (kenney.nl) | 2026-05-11 |
challenges/01-snake/fruits/*.png (9 fichiers) | Kenney Food Kit | CC0 | Kenney (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>.
| Fichier | Source | Licence | Auteur | Date de téléchargement |
|---|---|---|---|---|
shoot.wav | CC0 | 2026-05-11 | ||
hit.wav | CC0 | 2026-05-11 | ||
explosion.wav | CC0 | 2026-05-11 | ||
pickup.wav | CC0 | 2026-05-11 | ||
jump.wav | CC0 | 2026-05-11 | ||
music.ogg | incompetech.com | CC-BY 4.0 | Kevin MacLeod | 2026-05-17 |
music.ogg“Ethereal Relaxation” Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0
creativecommons.org/licenses/by/4.0
Creative Commons 0).static/_shared/images/ ou static/_shared/sounds/.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 !
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.
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 :
threading ni multiprocessing.Dans un projet uv :
uv add pygbagOu dans Thonny via le gestionnaire de paquets :
pip install pygbagPygbag 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.
Dans ton terminal, va dans le dossier avec main.py et lance :
uv run python -m pygbag --build main.pyLe résultat apparaît dans le dossier build/web/. Ce dossier contient tout ce qu’il faut pour héberger ton jeu.
Tu veux d’abord voir si ça marche avant de publier ? Utilise la même commande sans --build :
uv run python -m pygbag main.pyPygbag 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.
Si tout fonctionne, il y a deux façons de partager ton jeu :
build/web/ et donne le fichier zip à ton coach. C’est lui qui s’occupe de l’hébergement.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. 🎮
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.
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/sessions/...), le français et l’anglais sous
/fr/ et /en/ avec le même chemin.title, weight, hidden et description doivent figurer dans chaque langue ;
weight et hidden restent identiques.basket, star, ship, score) restent en
anglais, parce qu’ils sont dans le fichier Python.star.png, boom.wav, starter.zip) restent
neutres en langue.description.| Néerlandais | Anglais | Français |
|---|---|---|
| sessie | session | session |
| uitdaging | challenge | défi |
| werkblad | worksheet | fiche de travail |
| oplossing | solution | solution |
| bronnen | resources | ressources |
| installeren | setup | installation |
| coach-notities | coach notes | notes du coach |
| Wat je vandaag leert | What you’ll learn today | Ce que tu vas apprendre aujourd’hui |
| Neem mee naar huis | Take 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.
{{% relref "/sessions/python/01-catch-the-stars" %}},
pour qu’ils suivent automatiquement la bonne langue.static/ (images, JS des démos, ZIP) sont
absolus et neutres en 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.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.
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.
make buildLe 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.