Écriture et exécution Pygame 100% en ligne.
Le code pygame standard est automatiquement converti en version compatible navigateur au moment du Run. Vous n'avez rien à faire — écrivez du pygame normal et cliquez Lancer.
Conversions effectuées en arrière-plan : encapsulation de la boucle principale dans async def main() avec injection de await asyncio.sleep(0), remplacement de sys.exit() par running = False, conversion de pygame.image.load() vers load_image(), extraction des dimensions depuis pygame.display.set_mode() pour définir la taille du canvas, injection des déclarations global manquantes dans les fonctions auxiliaires.
Le navigateur ne peut pas bloquer son thread principal. Un while True sans pause gèle la page immédiatement. Chaque frame doit céder le contrôle au navigateur avec await asyncio.sleep(0). Cette ligne est injectée automatiquement.
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.display.flip()
clock.tick(60)
async def main():
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
clock.tick(60)
await asyncio.sleep(0)
asyncio.run(main())
Vous n'avez pas besoin d'écrire cette structure vous-même — l'éditeur la génère automatiquement à partir de votre boucle while True: standard.
Le code s'exécute dans un iframe isolé sans accès au système de fichiers local. Les images passent par la galerie (icône grille dans la barre latérale) et sont injectées en base64 avant le code.
img = pygame.image.load("images/hero.png")
img = load_image("hero.png")
Importez le fichier via l'icône Galerie, puis utilisez load_image("nom_exact.png") dans votre code. La casse du nom de fichier est ignorée. L'éditeur remplace automatiquement pygame.image.load() par load_image() avant chaque exécution.
Les polices Windows (Impact, Arial, Calibri…) ne sont pas installées dans le navigateur. pygame.font.SysFont() ne plante pas, mais la police demandée est silencieusement remplacée par la police intégrée de pygame.
f = pygame.font.SysFont("impact", 48)
# Demande Impact, obtient la police
# par défaut — le rendu change
f = pygame.font.Font(None, 48) # Police intégrée pygame, identique # sur toutes les plateformes
sys.exit() lève une SystemExit non interceptée par le runtime WASM — le jeu plante avec une erreur au lieu de s'arrêter proprement. L'éditeur gère cette conversion automatiquement — vous pouvez écrire sys.exit() normalement dans votre code.
pygame.quit() sys.exit()
running = False
pygame.FULLSCREEN ne fonctionne pas. Le canvas est limité à la zone d'affichage de l'iframe. pygame.display.set_mode((W, H)) fonctionne normalement pour définir une taille fixe. Le flag FULLSCREEN est retiré automatiquement lors de la conversion.
L'icône Bibliothèques dans la barre latérale permet de gérer les paquets à installer automatiquement avant chaque exécution. Les packages sont persistés dans le navigateur.
Les packages sont installés via micropip au moment du Lancer. Seuls les packages Python purs disponibles sur PyPI sont supportés — les extensions C non compilées pour WebAssembly ne fonctionneront pas.
import noise pygame.init() ... n = noise.pnoise2(x, y)
async def main():
import pyodide_js
await pyodide_js.loadPackage("micropip")
import micropip
await micropip.install(["noise"])
import noise
pygame.init()
...
n = noise.pnoise2(x, y)
Les bibliothèques suivantes sont également accessibles directement via pyodide.loadPackage() sans passer par micropip :
numpy scipy pandas matplotlib Pillow regex networkx scikit-learn sympy statsmodels openpyxl cryptography
pygame.mixer s'initialise (un warning ScriptProcessorNode deprecated apparaît dans la console — c'est inoffensif). Le chargement de fichiers audio depuis le disque ne fonctionne pas : il n'y a pas d'accès au système de fichiers. pygame.mixer.Sound("son.wav") plantera.
La génération audio programmatique via des buffers numpy fonctionne, mais le chargement de fichiers est bloqué.
Ces messages apparaissent à chaque exécution et ne représentent aucun problème :
ScriptProcessorNode is deprecated no fc_cache font cache file at /tmp/fc_cache The system font 'X' couldn't be found. Using the default font instead.
Ce site est en cours de développement. Certaines fonctionnalités peuvent être incomplètes ou évoluer.
Cet outil permet d'écrire et d'exécuter du code Python avec pygame directement dans le navigateur, sans installation. Le code s'exécute dans un environnement WebAssembly via Pyodide.
Collez du code pygame standard dans l'éditeur et cliquez sur Lancer. La conversion est automatique : boucle principale, sys.exit, chemins d'images — le code dans l'éditeur n'est jamais modifié.
L'accès aux fichiers locaux n'est pas possible depuis le navigateur. Importez vos images via la galerie, puis utilisez load_image("nom.png") dans le code.
La bibliothèque standard Python est entièrement disponible. pygame-ce est chargé automatiquement.
Les bibliothèques suivantes sont accessibles via Pyodide :
numpy, scipy, pandas, matplotlib, Pillow, regex, networkx, scikit-learn, sympy, statsmodels, openpyxl, cryptography
Tout paquet Python pur peut être installé avec micropip.install().
Le plein écran n'est pas supporté. Les polices Windows (Impact, Arial, Calibri...) ne sont pas disponibles dans le navigateur. sys.exit() est remplacé automatiquement par la traduction. L'accès au système de fichiers local est bloqué.