<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Série: Création d'un Space Invaders on Créer un jeu vidéo</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/</link><description>Recent content in Série: Création d'un Space Invaders on Créer un jeu vidéo</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Wed, 22 May 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://creerunjeuvideo.fr/pico-8/space-invaders/index.xml" rel="self" type="application/rss+xml"/><item><title>1. Créer et déplacer son premier personnage sur PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-deplacer-personnage-pico-8-tuto-1/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-deplacer-personnage-pico-8-tuto-1/</guid><description>&lt;p&gt;Bienvenue dans cette série dédiée à l&amp;rsquo;apprentissage de &lt;strong&gt;PICO-8&lt;/strong&gt;, la console virtuelle &amp;ldquo;fantasy&amp;rdquo; qui fait battre le cœur des développeurs indépendants. Dans ce premier épisode, nous posons les bases indispensables : la création de votre premier sprite et la mise en place du système de déplacement.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/glutCcmZlcY" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/glutCcmZlcY?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/glutCcmZlcY/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gestion du projet&lt;/strong&gt; : Importance de sauvegarder régulièrement ses fichiers (ex: &lt;code&gt;tuto_0&lt;/code&gt;, &lt;code&gt;tuto_1&lt;/code&gt;) pour garder un historique de progression.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Éditeur de Sprite&lt;/strong&gt; : Création du visuel du vaisseau et compréhension de la transparence (couleur noire).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structure du code&lt;/strong&gt; : Utilisation des trois fonctions vitales :
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;_init()&lt;/code&gt; : Initialisation des variables.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_update()&lt;/code&gt; : Logique du jeu (déplacements, entrées clavier).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_draw()&lt;/code&gt; : Rendu graphique à l&amp;rsquo;écran.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Déplacement&lt;/strong&gt; : Utilisation de la fonction &lt;code&gt;btn()&lt;/code&gt; pour détecter les touches et modifier les coordonnées &lt;code&gt;PX&lt;/code&gt; (position X) du joueur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nettoyage&lt;/strong&gt; : Utilisation de &lt;code&gt;cls()&lt;/code&gt; dans la fonction &lt;code&gt;_draw()&lt;/code&gt; pour éviter les traînées visuelles à chaque frame.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Même si PICO-8 évolue, les fondamentaux abordés ici sont le socle de tout développement sur cette plateforme :&lt;/p&gt;</description></item><item><title>2. Création dynamique d''ennemis sur PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-dynamique-ennemis-pico8/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-dynamique-ennemis-pico8/</guid><description>&lt;p&gt;Dans ce deuxième épisode de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invaders&lt;/em&gt; sur PICO-8, nous passons à la vitesse supérieure. Fini le placement manuel des ennemis ligne par ligne : nous allons apprendre à structurer notre code pour qu&amp;rsquo;il soit évolutif et professionnel.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/eEjfqfYCkqE" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/eEjfqfYCkqE?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/eEjfqfYCkqE/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Abandon du code répétitif :&lt;/strong&gt; On supprime les lignes de code redondantes pour adopter une approche basée sur les données.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Utilisation des tableaux (Tables) :&lt;/strong&gt; Introduction à la structure de données centrale en Lua pour stocker nos ennemis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boucles &lt;code&gt;for&lt;/code&gt; :&lt;/strong&gt; Automatisation de la création des ennemis pour rendre le jeu redimensionnable (passer de 4 à 40 ennemis en une ligne).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notions de POO simplifiée :&lt;/strong&gt; Création d&amp;rsquo;objets &amp;ldquo;ennemi&amp;rdquo; contenant leurs propres coordonnées (X, Y) et propriétés.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le Modulo (%) :&lt;/strong&gt; Utilisation de l&amp;rsquo;opérateur modulo pour gérer intelligemment le passage à la ligne des ennemis sur l&amp;rsquo;écran.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Débogage :&lt;/strong&gt; Affichage dynamique du nombre d&amp;rsquo;ennemis présents dans notre tableau via la fonction &lt;code&gt;print&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La puissance des tables :&lt;/strong&gt; En PICO-8, tout repose sur les tables. Maîtriser leur manipulation est indispensable pour gérer des projectiles, des particules ou des vagues d&amp;rsquo;ennemis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;importance du &lt;code&gt;draw&lt;/code&gt; épuré :&lt;/strong&gt; Une fois la boucle d&amp;rsquo;affichage (&lt;code&gt;for e in all(ennemis)&lt;/code&gt;) mise en place, vous n&amp;rsquo;avez plus besoin de toucher à la fonction &lt;code&gt;_draw()&lt;/code&gt;, quel que soit le nombre d&amp;rsquo;ennemis. C&amp;rsquo;est la clé d&amp;rsquo;un code propre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le Modulo comme outil de mise en page :&lt;/strong&gt; Que ce soit pour créer une grille d&amp;rsquo;ennemis, un inventaire ou un menu, le modulo reste l&amp;rsquo;outil le plus efficace pour calculer des positions relatives sans multiplier les variables inutiles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La modularité :&lt;/strong&gt; En séparant la logique de création (dans &lt;code&gt;_init&lt;/code&gt;) de la logique d&amp;rsquo;affichage (dans &lt;code&gt;_draw&lt;/code&gt;), vous préparez votre projet à devenir un vrai jeu complet plutôt qu&amp;rsquo;un simple script de test.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>3. Création des projectiles et gestion des objets dans PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-projectiles-pico-8-tuto-3/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-projectiles-pico-8-tuto-3/</guid><description>&lt;p&gt;Dans ce troisième épisode de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invaders&lt;/em&gt; sur PICO-8, nous passons à l&amp;rsquo;étape cruciale de l&amp;rsquo;armement : le tir. Apprendre à gérer des projectiles, c&amp;rsquo;est comprendre comment manipuler des tableaux (tables) et nettoyer la mémoire pour éviter que votre jeu ne ralentisse.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/3mIlj0iII7U" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/3mIlj0iII7U?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/3mIlj0iII7U/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="au-programme-de-cet-épisode-"&gt;Au programme de cet épisode :&lt;a class="anchor" href="#au-programme-de-cet-%c3%a9pisode-"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Initialisation des tirs :&lt;/strong&gt; Création d&amp;rsquo;une structure d&amp;rsquo;objet pour nos lasers (position X, Y et vitesse).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des entrées :&lt;/strong&gt; Utilisation de &lt;code&gt;btn()&lt;/code&gt; pour déclencher la création d&amp;rsquo;un projectile lors de l&amp;rsquo;appui sur une touche.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manipulation de tables :&lt;/strong&gt; Ajout des projectiles dans une liste (&lt;code&gt;add&lt;/code&gt;) et affichage via une boucle &lt;code&gt;for&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimisation mémoire :&lt;/strong&gt; Mise en place d&amp;rsquo;un système de suppression (&lt;code&gt;del&lt;/code&gt;) pour les projectiles sortant de l&amp;rsquo;écran afin de ne pas saturer le processeur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correction de bugs :&lt;/strong&gt; Ajustement de l&amp;rsquo;ordre d&amp;rsquo;exécution dans la fonction &lt;code&gt;update()&lt;/code&gt; pour éviter que les tirs ne soient décalés dès leur apparition.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La gestion des tables :&lt;/strong&gt; Le principe de &lt;code&gt;add(table, objet)&lt;/code&gt; et &lt;code&gt;del(table, objet)&lt;/code&gt; reste la méthode standard et la plus efficace pour gérer des entités dynamiques (balles, ennemis, particules) dans PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le nettoyage (Garbage Collection) :&lt;/strong&gt; Supprimer les objets qui sortent du champ de vision est une règle d&amp;rsquo;or en développement sur console virtuelle. Cela permet de maintenir un framerate stable à 30 ou 60 FPS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La structure &lt;code&gt;update/draw&lt;/code&gt; :&lt;/strong&gt; Séparer la logique de mouvement (calculs) de l&amp;rsquo;affichage (rendu) est indispensable pour garder un code propre et maintenable, même sur un projet aussi simple qu&amp;rsquo;un &lt;em&gt;Space Invaders&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le versioning manuel :&lt;/strong&gt; Bien que PICO-8 possède des outils, la méthode de l&amp;rsquo;auteur (sauvegarder des versions incrémentales &lt;code&gt;projet_01&lt;/code&gt;, &lt;code&gt;projet_02&lt;/code&gt;, etc.) reste une excellente pratique pour les débutants afin de pouvoir revenir en arrière en cas de corruption de fichier ou d&amp;rsquo;erreur critique.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>4. Nettoyer et structurer son code sur PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/nettoyer-structurer-code-pico8/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/nettoyer-structurer-code-pico8/</guid><description>&lt;p&gt;Dans ce quatrième épisode, nous faisons une pause dans le développement pur de notre &lt;em&gt;shoot &amp;rsquo;em up&lt;/em&gt; pour nous concentrer sur une étape cruciale : l&amp;rsquo;organisation. Au fur et à mesure que le projet grandit, le code devient plus complexe à lire. Apprendre à cloisonner ses fonctionnalités est essentiel pour maintenir un projet propre et évolutif.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/f1reGPqWtjU" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/f1reGPqWtjU?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/f1reGPqWtjU/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Utilisation des onglets :&lt;/strong&gt; Découverte du système d&amp;rsquo;onglets de PICO-8 pour séparer le code par entités (Joueur, Ennemis, Tirs).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nommage des onglets :&lt;/strong&gt; Astuce pour renommer ses onglets en utilisant un commentaire (&lt;code&gt;-- nom&lt;/code&gt;) sur la première ligne de chaque page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modularisation :&lt;/strong&gt; Déplacement des fonctions &lt;code&gt;init&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt; et &lt;code&gt;draw&lt;/code&gt; spécifiques au joueur dans son propre onglet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Appel des fonctions :&lt;/strong&gt; Rappel indispensable : PICO-8 ne connaît que les fonctions &lt;code&gt;_init&lt;/code&gt;, &lt;code&gt;_update&lt;/code&gt; et &lt;code&gt;_draw&lt;/code&gt; globales. Il faut donc appeler manuellement nos fonctions personnalisées (ex: &lt;code&gt;update_player()&lt;/code&gt;) à l&amp;rsquo;intérieur de ces boucles principales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bonnes pratiques :&lt;/strong&gt; Importance de commenter son code et de garder une structure cohérente pour éviter les bugs de logique (comme l&amp;rsquo;ordre d&amp;rsquo;exécution des tirs).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La lisibilité avant tout :&lt;/strong&gt; Même sur une console limitée comme la PICO-8, la séparation des préoccupations (&lt;em&gt;Separation of Concerns&lt;/em&gt;) facilite grandement le débogage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La gestion des onglets :&lt;/strong&gt; C&amp;rsquo;est la méthode standard pour gérer la taille limitée de l&amp;rsquo;éditeur de code. Bien nommer ses onglets permet de naviguer instantanément dans un projet complexe.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La boucle principale :&lt;/strong&gt; Comprendre que PICO-8 exécute uniquement les fonctions systèmes (&lt;code&gt;_update&lt;/code&gt;, &lt;code&gt;_draw&lt;/code&gt;) reste la base fondamentale pour tout développeur débutant sur cette plateforme.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;ordre d&amp;rsquo;exécution :&lt;/strong&gt; L&amp;rsquo;importance de l&amp;rsquo;ordre des appels dans &lt;code&gt;_update&lt;/code&gt; et &lt;code&gt;_draw&lt;/code&gt; (ex: effacer l&amp;rsquo;écran avant de redessiner, traiter les entrées avant les collisions) est une règle d&amp;rsquo;or immuable en GameDev.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>5. Implémenter les collisions AABB sur PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/implanter-collisions-aabb-pico8-tuto-5/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/implanter-collisions-aabb-pico8-tuto-5/</guid><description>&lt;p&gt;Bienvenue dans ce cinquième volet de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invaders-like&lt;/em&gt; sur PICO-8. Après avoir structuré notre moteur de jeu, géré les tirs et les déplacements, il est temps d&amp;rsquo;aborder un pilier fondamental du développement de jeux vidéo : &lt;strong&gt;la détection de collisions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Dans cet épisode, nous allons mettre en place un système de collision &amp;ldquo;AABB&amp;rdquo; (Axis-Aligned Bounding Box). C&amp;rsquo;est la méthode la plus efficace et la plus simple pour gérer les interactions entre les entités de votre jeu sans surcharger le processeur de la console virtuelle.&lt;/p&gt;</description></item><item><title>6. Gérer la cadence de tir dans PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/gestion-cadence-tir-pico8/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/gestion-cadence-tir-pico8/</guid><description>&lt;p&gt;Dans ce sixième épisode de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invaders-like&lt;/em&gt; sur PICO-8, nous allons nous attaquer à un aspect crucial du gameplay : la cadence de tir. Jusqu&amp;rsquo;à présent, notre vaisseau tirait à chaque frame, ce qui sature rapidement la mémoire et rend le jeu trop facile. Apprenons à réguler cela grâce à un système de timer simple.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/4Ef4Drbp6nk" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/4Ef4Drbp6nk?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/4Ef4Drbp6nk/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Refactorisation :&lt;/strong&gt; Création d&amp;rsquo;une fonction dédiée &lt;code&gt;tirer()&lt;/code&gt; pour isoler la logique de création des projectiles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion du temps :&lt;/strong&gt; Introduction d&amp;rsquo;une variable &lt;code&gt;temps&lt;/code&gt; qui s&amp;rsquo;incrémente à chaque frame dans la boucle &lt;code&gt;_update()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logique de cadence :&lt;/strong&gt; Utilisation d&amp;rsquo;un calcul basé sur le framerate (30 FPS) pour déclencher le tir uniquement lorsque le compteur atteint un seuil défini par une variable &lt;code&gt;cadence&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexibilité :&lt;/strong&gt; Mise en place d&amp;rsquo;une structure permettant de régler facilement la vitesse de tir entre 1 et 30 tirs par seconde.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La séparation des responsabilités :&lt;/strong&gt; Créer des fonctions spécifiques (comme &lt;code&gt;tirer()&lt;/code&gt;) est une bonne pratique indispensable pour garder un code lisible, même dans un projet aussi restreint que PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Les timers basés sur les frames :&lt;/strong&gt; La méthode utilisée ici (incrémenter un compteur et le réinitialiser) est le standard pour gérer des événements temporels dans les jeux 2D rétro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adaptabilité au framerate :&lt;/strong&gt; Bien que nous travaillions en 30 FPS, comprendre que la logique de tir dépend du nombre d&amp;rsquo;images par seconde est essentiel si vous décidez un jour de passer votre jeu en 60 FPS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimisation mémoire :&lt;/strong&gt; En limitant la cadence, on évite de créer trop d&amp;rsquo;objets simultanément, ce qui préserve les ressources limitées de la console virtuelle.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>7. Gestion de l''interface utilisateur (UI) et du score</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/gestion-ui-score-pico8-tuto-7/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/gestion-ui-score-pico8-tuto-7/</guid><description>&lt;p&gt;Dans ce septième épisode de notre série sur Pico-8, nous délaissons temporairement la musique pour nous concentrer sur un élément crucial de tout jeu : l&amp;rsquo;interface utilisateur (UI). Nous allons apprendre à afficher un score dynamique et à créer une barre d&amp;rsquo;interface simple pour rendre notre &lt;em&gt;Space Invaders-like&lt;/em&gt; plus professionnel.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/MFsvSsqe6Jc" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/MFsvSsqe6Jc?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/MFsvSsqe6Jc/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-la-mise-en-place"&gt;Résumé de la mise en place&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-la-mise-en-place"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Structure du code :&lt;/strong&gt; Création d&amp;rsquo;un nouvel onglet &lt;code&gt;UI&lt;/code&gt; avec ses propres fonctions &lt;code&gt;init_ui()&lt;/code&gt;, &lt;code&gt;update_ui()&lt;/code&gt; et &lt;code&gt;draw_ui()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logique de mise à jour :&lt;/strong&gt; Appel de &lt;code&gt;update_ui()&lt;/code&gt; à la fin de la fonction &lt;code&gt;_update()&lt;/code&gt; principale pour s&amp;rsquo;assurer que toutes les données (score, vie) sont bien à jour avant l&amp;rsquo;affichage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Affichage graphique :&lt;/strong&gt; Utilisation de &lt;code&gt;rectfill()&lt;/code&gt; pour dessiner une barre de fond et de la fonction &lt;code&gt;print()&lt;/code&gt; pour afficher le texte et la valeur du score.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des variables :&lt;/strong&gt; Le score est stocké dans la table &lt;code&gt;player&lt;/code&gt; pour une meilleure organisation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Astuce de debug :&lt;/strong&gt; Attention à l&amp;rsquo;utilisation de &lt;code&gt;print()&lt;/code&gt; sans paramètres de position, qui peut hériter des couleurs et coordonnées des appels précédents.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modularité :&lt;/strong&gt; Séparer son code par onglets (ou fichiers) reste la meilleure pratique pour ne pas se perdre dans un projet qui grandit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ordre d&amp;rsquo;exécution :&lt;/strong&gt; L&amp;rsquo;ordre &lt;code&gt;init&lt;/code&gt; -&amp;gt; &lt;code&gt;update&lt;/code&gt; -&amp;gt; &lt;code&gt;draw&lt;/code&gt; est le pilier fondamental de la boucle de jeu sur Pico-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversion de type :&lt;/strong&gt; L&amp;rsquo;utilisation de &lt;code&gt;tostr()&lt;/code&gt; est indispensable pour convertir des variables numériques en chaînes de caractères afin de les afficher à l&amp;rsquo;écran.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplicité avant tout :&lt;/strong&gt; Comme le montre l&amp;rsquo;exemple, des formes géométriques simples (&lt;code&gt;rectfill&lt;/code&gt;) suffisent souvent à créer une interface lisible et efficace avant de passer à des sprites complexes.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>8. Création sonore et musicale sur PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-sonore-musicale-pico-8/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-sonore-musicale-pico-8/</guid><description>&lt;p&gt;Bienvenue dans ce huitième épisode de notre série dédiée à l&amp;rsquo;apprentissage de PICO-8. Après avoir exploré le code et les sprites, il est temps de s&amp;rsquo;attaquer à un pilier fondamental de l&amp;rsquo;immersion : le son et la musique. Si, comme moi, vous n&amp;rsquo;êtes pas musicien, ne paniquez pas : PICO-8 propose des outils accessibles qui permettent de faire illusion rapidement.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/ouRhGNG-TuE" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/ouRhGNG-TuE?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/ouRhGNG-TuE/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mise à jour :&lt;/strong&gt; Pensez à vérifier votre version de PICO-8 (actuellement 0.2.7) pour profiter des dernières fonctionnalités, notamment sur la gestion des textes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;éditeur SFX :&lt;/strong&gt; C&amp;rsquo;est ici que tout commence. On y définit les formes d&amp;rsquo;ondes, la vitesse et la hauteur des notes pour créer des effets sonores (tirs, collisions) ou des boucles mélodiques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;éditeur de musique :&lt;/strong&gt; Il permet d&amp;rsquo;assembler vos différents SFX sur 4 canaux simultanés (batterie, basse, mélodie, etc.) pour composer vos morceaux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des boucles :&lt;/strong&gt; Apprenez à utiliser les icônes de contrôle (Stop, Boucle) pour gérer l&amp;rsquo;enchaînement et la répétition de vos pistes musicales.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intégration dans le code :&lt;/strong&gt; Utilisation des fonctions &lt;code&gt;sfx(n)&lt;/code&gt; pour déclencher un effet sonore et &lt;code&gt;music(n)&lt;/code&gt; pour lancer une composition.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;importance de la communauté :&lt;/strong&gt; La musique reste le défi numéro 1 pour les développeurs solo. N&amp;rsquo;hésitez pas à consulter les ressources communautaires (tutoriels YouTube spécialisés) pour approfondir la théorie musicale appliquée au tracker de PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La logique des 64 slots :&lt;/strong&gt; PICO-8 offre 64 emplacements pour les SFX et 64 pour les patterns musicaux. Cette limite est une contrainte créative qui force à l&amp;rsquo;optimisation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow :&lt;/strong&gt; La méthode consistant à créer des &amp;ldquo;ingrédients&amp;rdquo; (SFX) avant de les assembler (Musique) reste la manière la plus efficace de travailler sur la console virtuelle.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>9. Créer un système de menus avec les Game States</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-un-systeme-de-menus-pico8-game-states/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-un-systeme-de-menus-pico8-game-states/</guid><description>&lt;p&gt;Dans ce neuvième épisode de notre série dédiée à PICO-8, nous passons à une étape cruciale pour structurer votre jeu : la création d&amp;rsquo;un menu principal. Pour gérer la transition entre l&amp;rsquo;écran de titre et le gameplay, nous allons mettre en place un système de &amp;ldquo;Game States&amp;rdquo; (états de jeu).&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/aYTscEZzhwo" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/aYTscEZzhwo?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/aYTscEZzhwo/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nettoyage :&lt;/strong&gt; Mise en commentaire des tests audio précédents pour libérer de l&amp;rsquo;espace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Architecture :&lt;/strong&gt; Création d&amp;rsquo;un nouvel onglet &lt;code&gt;menu&lt;/code&gt; avec ses fonctions &lt;code&gt;init_menu&lt;/code&gt;, &lt;code&gt;update_menu&lt;/code&gt; et &lt;code&gt;draw_menu&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Game States :&lt;/strong&gt; Utilisation d&amp;rsquo;une variable globale (&lt;code&gt;game_state&lt;/code&gt;) pour basculer entre l&amp;rsquo;état &amp;ldquo;Menu&amp;rdquo; (0) et l&amp;rsquo;état &amp;ldquo;Jeu&amp;rdquo; (1).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logique de contrôle :&lt;/strong&gt; Implémentation d&amp;rsquo;une condition dans les fonctions &lt;code&gt;_update()&lt;/code&gt; et &lt;code&gt;_draw()&lt;/code&gt; principales pour n&amp;rsquo;exécuter que le code correspondant à l&amp;rsquo;état actuel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interaction :&lt;/strong&gt; Utilisation de la touche &lt;code&gt;btn(4)&lt;/code&gt; (bouton Z/O) pour déclencher le passage du menu vers le jeu.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La gestion des états :&lt;/strong&gt; La méthode des &lt;code&gt;game_state&lt;/code&gt; reste la manière la plus simple et efficace pour gérer des écrans (menu, pause, game over, jeu) sans alourdir votre code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimisation des tokens :&lt;/strong&gt; Garder vos conditions &lt;code&gt;if&lt;/code&gt; sur une seule ligne quand c&amp;rsquo;est possible est une excellente habitude pour rester sous la limite des 8192 tokens de PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modularité :&lt;/strong&gt; Séparer votre code dans des onglets distincts (menu, joueur, ennemis) est indispensable pour maintenir un projet propre à mesure qu&amp;rsquo;il grandit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Évolutivité :&lt;/strong&gt; Ce système de &lt;code&gt;game_state&lt;/code&gt; est facilement extensible. Si vous souhaitez ajouter un écran de &amp;ldquo;Game Over&amp;rdquo; ou un menu &amp;ldquo;Options&amp;rdquo; plus tard, il suffira d&amp;rsquo;ajouter une nouvelle valeur à votre variable et une nouvelle condition &lt;code&gt;elseif&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>10. Tirer avec les ennemis et gestion des projectiles</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/tutoriel-pico-8-tir-ennemis-gestion-projectiles/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/tutoriel-pico-8-tir-ennemis-gestion-projectiles/</guid><description>&lt;p&gt;Dans cet épisode, nous passons à une étape cruciale pour donner du dynamisme à notre jeu de type &lt;em&gt;space shooter&lt;/em&gt; : permettre aux ennemis de riposter ! Nous allons aborder la centralisation du code de tir, la gestion des projectiles par &amp;ldquo;parentalité&amp;rdquo; et l&amp;rsquo;optimisation de nos boucles de mise à jour.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/XpDhbc151tA" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/XpDhbc151tA?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/XpDhbc151tA/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optimisation du flux :&lt;/strong&gt; Modification du &lt;code&gt;game_state&lt;/code&gt; pour démarrer directement en jeu et gagner du temps lors des tests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Centralisation :&lt;/strong&gt; Déplacement de la logique de tir (&lt;code&gt;update_shoot&lt;/code&gt;) dans un onglet dédié pour éviter la duplication de code entre le joueur et les ennemis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Système de &amp;ldquo;Parentalité&amp;rdquo; :&lt;/strong&gt; Ajout d&amp;rsquo;une propriété &lt;code&gt;parent&lt;/code&gt; aux projectiles pour identifier leur origine (joueur ou ennemi) et gérer dynamiquement leur direction et leurs collisions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des ennemis :&lt;/strong&gt; Ajout d&amp;rsquo;une cadence de tir (&lt;code&gt;cd_ennemis&lt;/code&gt;) et d&amp;rsquo;un timer individuel pour chaque ennemi afin qu&amp;rsquo;ils puissent tirer de manière autonome.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nettoyage mémoire :&lt;/strong&gt; Mise en place d&amp;rsquo;une condition pour supprimer les projectiles lorsqu&amp;rsquo;ils sortent de l&amp;rsquo;écran (vers le haut ou vers le bas) afin d&amp;rsquo;éviter les fuites de mémoire.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La modularité :&lt;/strong&gt; Utiliser des fonctions centralisées pour les mécaniques répétitives (comme le tir) est une règle d&amp;rsquo;or pour maintenir un projet propre sur Pico-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La gestion des objets :&lt;/strong&gt; L&amp;rsquo;utilisation de tables pour stocker les entités (joueur, ennemis, tirs) et leurs propriétés (&lt;code&gt;x&lt;/code&gt;, &lt;code&gt;y&lt;/code&gt;, &lt;code&gt;w&lt;/code&gt;, &lt;code&gt;h&lt;/code&gt;) permet une évolutivité simple du code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le débogage :&lt;/strong&gt; Apprendre à lire les messages d&amp;rsquo;erreur (ex: &lt;code&gt;attempt to perform arithmetic on field 'w' (a nil value)&lt;/code&gt;) est indispensable pour identifier rapidement les variables non initialisées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prochaines étapes :&lt;/strong&gt; Le système de &amp;ldquo;parentalité&amp;rdquo; est la base parfaite pour implémenter prochainement la gestion des points de vie (HP) et les écrans de Game Over.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>11. Gestion des tirs ennemis et préparation du Game Over</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/gestion-tirs-ennemis-pico8-tuto-11/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/gestion-tirs-ennemis-pico8-tuto-11/</guid><description>&lt;p&gt;Dans cet épisode, nous poursuivons le développement de notre &lt;em&gt;Space Invaders&lt;/em&gt; sur PICO-8. Après avoir implémenté les tirs du joueur, il est temps d&amp;rsquo;équilibrer le jeu en permettant aux ennemis de riposter. Nous allons voir comment gérer l&amp;rsquo;apparition des projectiles ennemis, ajuster leur positionnement et préparer la logique pour la défaite du joueur.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/9DPgyq75ufk" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/9DPgyq75ufk?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/9DPgyq75ufk/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-des-points-abordés"&gt;Résumé des points abordés&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-des-points-abord%c3%a9s"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Création des assets :&lt;/strong&gt; Mise en place d&amp;rsquo;un nouveau sprite (n°4) pour représenter les projectiles ennemis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Système de spawn dynamique :&lt;/strong&gt; Utilisation d&amp;rsquo;un objet intermédiaire (&lt;code&gt;spawn&lt;/code&gt;) pour calculer intelligemment la position d&amp;rsquo;apparition des tirs selon qu&amp;rsquo;ils proviennent du joueur ou d&amp;rsquo;un ennemi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des sprites par type de tir :&lt;/strong&gt; Modification de la fonction &lt;code&gt;add&lt;/code&gt; pour assigner dynamiquement le numéro de sprite au projectile lors de sa création.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refactorisation de &lt;code&gt;draw&lt;/code&gt; :&lt;/strong&gt; Mise à jour de la boucle d&amp;rsquo;affichage pour que chaque tir utilise son propre sprite défini lors de son instanciation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Préparation à la défaite :&lt;/strong&gt; Mise en place des bases structurelles pour gérer les points de vie du joueur et l&amp;rsquo;écran de Game Over.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La modularité :&lt;/strong&gt; L&amp;rsquo;utilisation d&amp;rsquo;objets intermédiaires pour gérer les propriétés d&amp;rsquo;apparition (spawn) est une excellente pratique pour garder un code propre et évolutif.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La maintenance du code :&lt;/strong&gt; Centraliser la logique de création des tirs dans une seule fonction &lt;code&gt;add&lt;/code&gt; permet d&amp;rsquo;éviter les bugs de duplication et facilite l&amp;rsquo;ajout futur de nouveaux types d&amp;rsquo;armes ou d&amp;rsquo;ennemis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La gestion des sprites :&lt;/strong&gt; Associer les données visuelles (numéro de sprite) directement à l&amp;rsquo;objet dans la table des tirs est la méthode standard pour gérer des entités variées dans PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;importance de l&amp;rsquo;anticipation :&lt;/strong&gt; Prévoir des variables de décalage (offset) dès le début permet d&amp;rsquo;ajuster le &amp;ldquo;feeling&amp;rdquo; du jeu sans avoir à réécrire toute la logique de collision ou d&amp;rsquo;affichage.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>12. Gestion des points de vie et interface utilisateur</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/gestion-points-vie-pico-8-tuto-12/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/gestion-points-vie-pico-8-tuto-12/</guid><description>&lt;p&gt;Bienvenue dans ce douzième épisode de notre série dédiée à l&amp;rsquo;apprentissage de Pico-8 ! Après avoir corrigé nos exercices précédents, nous entrons dans le vif du sujet : la survie. Dans cet épisode, nous allons implémenter un système de points de vie pour notre joueur et apprendre à les afficher dynamiquement sur notre interface (HUD).&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/YVv5SAG7z_4" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/YVv5SAG7z_4?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/YVv5SAG7z_4/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="ce-que-nous-avons-appris-dans-cet-épisode-"&gt;Ce que nous avons appris dans cet épisode :&lt;a class="anchor" href="#ce-que-nous-avons-appris-dans-cet-%c3%a9pisode-"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Initialisation des PV :&lt;/strong&gt; Ajout d&amp;rsquo;une variable &lt;code&gt;vie&lt;/code&gt; directement dans l&amp;rsquo;objet &lt;code&gt;player&lt;/code&gt; (fixée à 3 par défaut).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logique de dégâts :&lt;/strong&gt; Modification de la fonction de collision pour décrémenter les points de vie lors d&amp;rsquo;un impact avec un tir ennemi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sécurité du code :&lt;/strong&gt; Mise en place d&amp;rsquo;une condition pour éviter que les points de vie ne deviennent négatifs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Affichage HUD :&lt;/strong&gt; Création d&amp;rsquo;une interface simple utilisant des rectangles (&lt;code&gt;rectfill&lt;/code&gt;) pour représenter visuellement les points de vie restants.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Débogage :&lt;/strong&gt; Utilisation de la console pour vérifier en temps réel l&amp;rsquo;état de nos variables avant de passer à l&amp;rsquo;affichage graphique.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La simplicité avant tout :&lt;/strong&gt; Bien que l&amp;rsquo;utilisation de conditions &lt;code&gt;if&lt;/code&gt; successives ne soit pas la méthode la plus &amp;ldquo;évolutive&amp;rdquo; (comparée à une boucle &lt;code&gt;for&lt;/code&gt; ou à une gestion par tableau), elle reste une excellente approche pédagogique pour débuter sans complexifier inutilement le code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modularité :&lt;/strong&gt; Séparer la gestion des points de vie de la logique du &amp;ldquo;Game Over&amp;rdquo; permet de garder un code propre et facile à maintenir.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexibilité visuelle :&lt;/strong&gt; L&amp;rsquo;utilisation de &lt;code&gt;rectfill&lt;/code&gt; peut être facilement remplacée par des &lt;code&gt;spr()&lt;/code&gt; (sprites) pour donner un aspect plus rétro et soigné à votre interface sans changer la logique sous-jacente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prochaine étape :&lt;/strong&gt; La gestion des états de jeu (&lt;code&gt;Game State&lt;/code&gt;) pour déclencher un écran de &amp;ldquo;Game Over&amp;rdquo; propre lorsque les points de vie atteignent zéro.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>13. Création de l''écran Game Over</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-ecran-game-over-pico8/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-ecran-game-over-pico8/</guid><description>&lt;p&gt;Dans cet épisode, nous finalisons la boucle de gameplay en ajoutant l&amp;rsquo;écran de &amp;ldquo;Game Over&amp;rdquo;. C&amp;rsquo;est une étape cruciale pour rendre votre jeu complet, permettant au joueur de comprendre qu&amp;rsquo;il a perdu et de relancer une partie proprement.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/3YG6W5Yrgac" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/3YG6W5Yrgac?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/3YG6W5Yrgac/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Structure du Game Over :&lt;/strong&gt; Création d&amp;rsquo;un nouvel onglet dédié avec ses propres fonctions &lt;code&gt;init_go&lt;/code&gt;, &lt;code&gt;update_go&lt;/code&gt; et &lt;code&gt;draw_go&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des Game States :&lt;/strong&gt; Utilisation d&amp;rsquo;une variable &lt;code&gt;game_state&lt;/code&gt; (0 pour le menu, 1 pour le jeu, 2 pour le Game Over) pour basculer entre les écrans.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Réinitialisation complète :&lt;/strong&gt; Nettoyage des tableaux (&lt;code&gt;bullets&lt;/code&gt;, &lt;code&gt;enemies&lt;/code&gt;), remise à zéro du score et réinitialisation des points de vie du joueur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refactorisation :&lt;/strong&gt; Création d&amp;rsquo;une fonction &lt;code&gt;create_enemies()&lt;/code&gt; pour pouvoir générer une nouvelle vague d&amp;rsquo;ennemis à chaque nouvelle partie sans accumuler d&amp;rsquo;erreurs de positionnement.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La machine à états (State Machine) :&lt;/strong&gt; Utiliser une variable d&amp;rsquo;état reste la méthode la plus propre et la plus simple pour gérer les différents écrans dans PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le nettoyage des données :&lt;/strong&gt; Il est fondamental de vider vos tableaux d&amp;rsquo;objets (&lt;code&gt;bullets = {}&lt;/code&gt;) avant de relancer une partie pour éviter les comportements erratiques ou les fuites de mémoire.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modularité du code :&lt;/strong&gt; Déplacer la logique de création d&amp;rsquo;objets dans des fonctions dédiées (comme &lt;code&gt;create_enemies&lt;/code&gt;) facilite grandement la maintenance et la réutilisation du code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des variables globales :&lt;/strong&gt; N&amp;rsquo;oubliez jamais de réinitialiser vos variables de position (comme &lt;code&gt;ex&lt;/code&gt; et &lt;code&gt;ey&lt;/code&gt; dans l&amp;rsquo;exemple) à chaque nouvelle initialisation, sinon vos objets apparaîtront à des endroits décalés à chaque nouvelle partie.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>14. Gestion des vagues et types d''ennemis</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/pico-8-tuto-14-gestion-vagues-ennemis/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/pico-8-tuto-14-gestion-vagues-ennemis/</guid><description>&lt;p&gt;Dans ce nouvel épisode de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invader&lt;/em&gt; sur Pico-8, nous allons passer à la vitesse supérieure. Fini le placement statique des ennemis : nous allons mettre en place un système de &lt;strong&gt;vagues&lt;/strong&gt; modulable. L&amp;rsquo;objectif est de pouvoir définir des patterns d&amp;rsquo;ennemis variés, mélanger les types de vaisseaux (bleus, rouges, etc.) et gérer leurs comportements spécifiques, comme la capacité de tir.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/xPdKfs4jkSw" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/xPdKfs4jkSw?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/xPdKfs4jkSw/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Édition des sprites :&lt;/strong&gt; Création d&amp;rsquo;un second type d&amp;rsquo;ennemi (vaisseau rouge) via un simple &lt;em&gt;color swap&lt;/em&gt; pour diversifier le visuel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structure de données :&lt;/strong&gt; Utilisation de tableaux (matrices) pour définir les vagues. Chaque chiffre dans le tableau correspond à un type d&amp;rsquo;ennemi (0 pour vide, 1 pour bleu, 2 pour rouge).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logique de boucle :&lt;/strong&gt; Remplacement de la création manuelle par une boucle &lt;code&gt;for&lt;/code&gt; qui parcourt le tableau de la vague et positionne les ennemis dynamiquement en fonction de leur index (modulo 6 pour le retour à la ligne).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comportement différencié :&lt;/strong&gt; Ajout d&amp;rsquo;une propriété &lt;code&gt;s&lt;/code&gt; (shoot) dans les objets ennemis pour déterminer si un vaisseau est autorisé à tirer ou non.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimisation du code :&lt;/strong&gt; Mise à jour du gestionnaire de tir pour vérifier cette propriété avant de déclencher une attaque.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;approche modulaire :&lt;/strong&gt; Utiliser des tableaux de données pour définir des niveaux ou des vagues est une pratique standard en GameDev. Cela permet de modifier le gameplay sans toucher au moteur de rendu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le &amp;ldquo;Data-Driven Design&amp;rdquo; :&lt;/strong&gt; En séparant la logique (le code de déplacement) des données (la configuration de la vague), vous rendez votre jeu beaucoup plus facile à maintenir et à étendre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des états :&lt;/strong&gt; L&amp;rsquo;utilisation de propriétés booléennes (comme &lt;code&gt;s&lt;/code&gt; pour le tir) est la base pour créer des ennemis avec des comportements variés (ennemis qui foncent, ennemis qui tirent, ennemis qui restent immobiles).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pico-8 et Lua :&lt;/strong&gt; La manipulation des tableaux et des boucles &lt;code&gt;for&lt;/code&gt; reste le cœur battant de tout projet sur cette console virtuelle. Maîtriser ces structures est indispensable pour progresser.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>15. Créer un système de vagues d''ennemis sur PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-systeme-vagues-ennemis-pico8/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-systeme-vagues-ennemis-pico8/</guid><description>&lt;p&gt;Dans ce nouvel épisode de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invaders-like&lt;/em&gt; sur PICO-8, nous allons structurer la progression de notre jeu. Après avoir défini nos différents types d&amp;rsquo;ennemis, il est temps de les organiser en vagues successives pour donner du rythme à l&amp;rsquo;expérience de jeu.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/L3Kf3dgaXEg" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/L3Kf3dgaXEg?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/L3Kf3dgaXEg/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="au-programme-de-cet-atelier-"&gt;Au programme de cet atelier :&lt;a class="anchor" href="#au-programme-de-cet-atelier-"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Organisation des vagues :&lt;/strong&gt; Création d&amp;rsquo;un tableau global pour lister et séquencer l&amp;rsquo;apparition des ennemis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion de l&amp;rsquo;index :&lt;/strong&gt; Utilisation d&amp;rsquo;une variable &lt;code&gt;ivague&lt;/code&gt; pour suivre la progression du joueur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nettoyage automatique :&lt;/strong&gt; Mise en place d&amp;rsquo;une routine pour vider les tableaux d&amp;rsquo;ennemis et de tirs entre chaque vague, évitant ainsi les bugs de collision résiduels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transition d&amp;rsquo;état :&lt;/strong&gt; Passage automatique vers un écran de victoire (ou &lt;em&gt;Game Over&lt;/em&gt;) une fois que toutes les vagues ont été terrassées.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modularité :&lt;/strong&gt; La méthode utilisée ici permet d&amp;rsquo;ajouter autant de vagues que vous le souhaitez sans modifier le cœur du moteur de jeu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des états (Game State) :&lt;/strong&gt; L&amp;rsquo;utilisation de variables pour basculer entre les menus et le gameplay reste la norme pour garder un code propre sur PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nettoyage mémoire :&lt;/strong&gt; Réinitialiser les tableaux (&lt;code&gt;tirs = {}&lt;/code&gt;) est une bonne pratique indispensable pour éviter les comportements imprévisibles lors des transitions de niveaux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Évolutivité :&lt;/strong&gt; Ce système est une base solide ; il sera très simple, dans les prochains épisodes, d&amp;rsquo;ajouter des comportements complexes (mouvements, patterns de tir) à ces vagues.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>16. Ajouter un fond étoilé défilant</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/tuto-pico-8-fond-etoile-defilant/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/tuto-pico-8-fond-etoile-defilant/</guid><description>&lt;p&gt;Dans ce seizième épisode de notre série sur PICO-8, nous allons passer à la partie visuelle pour donner un peu plus de profondeur à notre &lt;em&gt;Space Invaders-like&lt;/em&gt;. L&amp;rsquo;objectif est simple : créer un système de fond étoilé défilant (parallaxe) pour rendre notre jeu plus dynamique et &amp;ldquo;photo-réaliste&amp;rdquo; pour l&amp;rsquo;époque.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/LVHjNJesUmo" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/LVHjNJesUmo?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/LVHjNJesUmo/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-du-tutoriel"&gt;Résumé du tutoriel&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-du-tutoriel"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Structure des données :&lt;/strong&gt; Création d&amp;rsquo;un nouvel onglet &lt;code&gt;background&lt;/code&gt; pour gérer un tableau (&lt;code&gt;table&lt;/code&gt;) contenant toutes les étoiles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Initialisation :&lt;/strong&gt; Utilisation d&amp;rsquo;une boucle &lt;code&gt;for&lt;/code&gt; pour générer 30 étoiles avec des positions (X, Y) et des vitesses aléatoires.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion du mouvement :&lt;/strong&gt; Mise à jour de la position Y des étoiles dans la fonction &lt;code&gt;update&lt;/code&gt; et réinitialisation en haut de l&amp;rsquo;écran lorsqu&amp;rsquo;elles dépassent 128 pixels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendu graphique :&lt;/strong&gt; Utilisation de la fonction &lt;code&gt;rectfill&lt;/code&gt; (ou &lt;code&gt;rect&lt;/code&gt;) pour dessiner chaque étoile sous forme de pixel coloré.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Débogage :&lt;/strong&gt; Apprentissage de la lecture des erreurs de syntaxe (parenthèses oubliées, fautes de frappe dans les noms de fonctions).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La gestion des listes d&amp;rsquo;objets :&lt;/strong&gt; Le pattern &amp;ldquo;créer, mettre à jour, supprimer et recycler&amp;rdquo; est la base de tout système de particules ou de gestion d&amp;rsquo;ennemis dans PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le découpage en onglets :&lt;/strong&gt; Garder son code propre en séparant la logique du fond d&amp;rsquo;écran (Background) du reste du jeu est une excellente pratique pour la maintenabilité.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;optimisation visuelle :&lt;/strong&gt; Ajouter des détails simples comme un fond en mouvement transforme radicalement le ressenti du joueur (le fameux &amp;ldquo;juice&amp;rdquo;) sans surcharger le processeur de la console virtuelle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;rsquo;aléatoire contrôlé :&lt;/strong&gt; Utiliser &lt;code&gt;rnd()&lt;/code&gt; avec des offsets (ex: &lt;code&gt;rnd(1.5) + 1.5&lt;/code&gt;) permet de créer un mouvement naturel et non répétitif, essentiel pour éviter l&amp;rsquo;effet &amp;ldquo;grille&amp;rdquo; dans les jeux 2D.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>17. Création de mouvements pour vos ennemis</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-mouvements-ennemis-pico8/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creation-mouvements-ennemis-pico8/</guid><description>&lt;p&gt;Dans ce nouvel épisode de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invaders&lt;/em&gt; sur Pico-8, nous nous attaquons à une mécanique fondamentale : le déplacement des ennemis. Pour rester fidèle au classique de l&amp;rsquo;arcade, nous allons implémenter un système où les ennemis se déplacent horizontalement, descendent d&amp;rsquo;un cran lorsqu&amp;rsquo;ils atteignent le bord de l&amp;rsquo;écran, puis changent de direction.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/QZVACYRSKt8" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/QZVACYRSKt8?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/QZVACYRSKt8/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-limplémentation"&gt;Résumé de l&amp;rsquo;implémentation&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-limpl%c3%a9mentation"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Initialisation :&lt;/strong&gt; Création des variables &lt;code&gt;mv_time&lt;/code&gt; (timer), &lt;code&gt;dir&lt;/code&gt; (direction : 1 ou -1) et &lt;code&gt;bord&lt;/code&gt; (indicateur de collision avec les bords).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logique de déplacement :&lt;/strong&gt; Utilisation d&amp;rsquo;un timer basé sur les FPS (30 par défaut) pour cadencer le mouvement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion des bords :&lt;/strong&gt; Si un ennemi touche le bord, on active le flag &lt;code&gt;bord&lt;/code&gt;, on inverse la direction (&lt;code&gt;dir *= -1&lt;/code&gt;) et on déplace tout le groupe vers le bas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Condition de défaite :&lt;/strong&gt; Si un ennemi atteint la position Y de l&amp;rsquo;interface (108 pixels), le jeu se réinitialise et bascule sur l&amp;rsquo;écran &amp;ldquo;Game Over&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimisation :&lt;/strong&gt; Utilisation de la multiplication par &lt;code&gt;dir&lt;/code&gt; pour inverser le mouvement sans multiplier les conditions &lt;code&gt;if&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La puissance des tableaux :&lt;/strong&gt; La manipulation des listes d&amp;rsquo;ennemis via &lt;code&gt;foreach&lt;/code&gt; reste la méthode la plus efficace et la plus propre pour gérer des groupes d&amp;rsquo;objets dans Pico-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La gestion des états (Game States) :&lt;/strong&gt; Séparer la logique de jeu (jeu en cours vs game over) est une bonne pratique indispensable pour tout projet, même simple.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le &amp;ldquo;Game Feel&amp;rdquo; :&lt;/strong&gt; Anticiper les prochaines étapes (animations de sprites, particules d&amp;rsquo;explosion, &lt;em&gt;camera shake&lt;/em&gt;) est ce qui transforme un simple exercice de code en un véritable jeu vidéo gratifiant.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>18. Créer des effets de particules pour vos explosions</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-effets-particules-pico8-explosions/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-effets-particules-pico8-explosions/</guid><description>&lt;p&gt;Dans ce 18ème épisode de notre série sur la création d&amp;rsquo;un &lt;em&gt;Space Invaders&lt;/em&gt; sur PICO-8, nous passons à l&amp;rsquo;étape supérieure : le &amp;ldquo;juice&amp;rdquo; (le dynamisme visuel). Fini les ennemis qui disparaissent simplement, nous allons ajouter des explosions dynamiques pour rendre le jeu plus vivant.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/QtjNAaPgYT4" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/QtjNAaPgYT4?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/QtjNAaPgYT4/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-la-mise-en-place"&gt;Résumé de la mise en place&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-la-mise-en-place"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Pour implémenter ce système de particules, nous avons suivi ces étapes clés :&lt;/p&gt;</description></item><item><title>19. Animation des ennemis sur PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/animation-ennemis-pico8-tuto-19/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/animation-ennemis-pico8-tuto-19/</guid><description>&lt;p&gt;Dans ce 19ème épisode de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invaders-like&lt;/em&gt; sur PICO-8, nous abordons une étape cruciale pour donner vie à vos ennemis : l&amp;rsquo;animation. Bien que nous nous concentrions sur une boucle simple de deux frames, les concepts abordés ici sont transposables à n&amp;rsquo;importe quel système d&amp;rsquo;animation plus complexe.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/_a-vMfM3B44" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/_a-vMfM3B44?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/_a-vMfM3B44/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-lépisode"&gt;Résumé de l&amp;rsquo;épisode&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-l%c3%a9pisode"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Préparation des sprites :&lt;/strong&gt; Organisation des feuilles de sprites pour regrouper les états d&amp;rsquo;animation (ex: 16-17 pour le vaisseau bleu, 18-19 pour le rouge).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structure de données :&lt;/strong&gt; Ajout d&amp;rsquo;une table &lt;code&gt;anim&lt;/code&gt; dans la définition de chaque type d&amp;rsquo;ennemi pour stocker les IDs des sprites correspondants.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gestion du temps :&lt;/strong&gt; Utilisation d&amp;rsquo;un &lt;code&gt;anim_time&lt;/code&gt; et d&amp;rsquo;un &lt;code&gt;anim_rate&lt;/code&gt; pour cadencer le changement d&amp;rsquo;image indépendamment de la vitesse de la boucle principale.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fonction utilitaire &lt;code&gt;flipflop&lt;/code&gt; :&lt;/strong&gt; Création d&amp;rsquo;une fonction réutilisable permettant de basculer facilement entre deux valeurs (A et B), idéale pour alterner entre deux frames d&amp;rsquo;animation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intégration :&lt;/strong&gt; Mise à jour de la fonction &lt;code&gt;create_enemy&lt;/code&gt; pour initialiser correctement la propriété d&amp;rsquo;animation lors de l&amp;rsquo;instanciation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modularité :&lt;/strong&gt; La création de fonctions utilitaires comme &lt;code&gt;flipflop&lt;/code&gt; est une excellente pratique. Elle permet d&amp;rsquo;alléger le code principal et de rendre vos outils réutilisables pour d&amp;rsquo;autres éléments du jeu (clignotement d&amp;rsquo;un menu, changement d&amp;rsquo;état d&amp;rsquo;un objet, etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Organisation des assets :&lt;/strong&gt; Anticiper l&amp;rsquo;espace dans votre &lt;em&gt;Sprite Editor&lt;/em&gt; est essentiel. Laisser des cases vides permet d&amp;rsquo;ajouter des frames d&amp;rsquo;animation ou de nouveaux ennemis sans avoir à réorganiser toute votre feuille de sprites et à corriger les IDs dans le code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Découplage :&lt;/strong&gt; Gérer la vitesse d&amp;rsquo;animation via un &lt;code&gt;rate&lt;/code&gt; plutôt que de se baser sur le &lt;code&gt;frame rate&lt;/code&gt; brut du jeu garantit une animation fluide et cohérente, quel que soit le matériel ou les ralentissements potentiels.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>20. Ajout de Power-ups (Vie et Score)</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/pico-8-tuto-20-ajout-powerups/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/pico-8-tuto-20-ajout-powerups/</guid><description>&lt;p&gt;Dans ce 20ème épisode de notre série dédiée à la création d&amp;rsquo;un &lt;em&gt;Space Invaders-like&lt;/em&gt; sur PICO-8, nous allons ajouter une dimension stratégique à notre jeu : les &lt;strong&gt;Power-ups&lt;/strong&gt;. Bien que ce ne soit pas présent dans l&amp;rsquo;original, ces bonus permettent de dynamiser le gameplay en offrant au joueur des opportunités de survie et de progression rapide.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/drB-zs1BzMs" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/drB-zs1BzMs?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/drB-zs1BzMs/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="au-programme-de-ce-tutoriel-"&gt;Au programme de ce tutoriel :&lt;a class="anchor" href="#au-programme-de-ce-tutoriel-"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gestion des données :&lt;/strong&gt; Création d&amp;rsquo;un tableau &lt;code&gt;PUS&lt;/code&gt; pour stocker les instances de bonus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logique de création :&lt;/strong&gt; Mise en place d&amp;rsquo;une fonction &lt;code&gt;add_up&lt;/code&gt; pour générer des bonus à la position d&amp;rsquo;un ennemi détruit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Types de bonus :&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Type 1 (Vert) :&lt;/strong&gt; Restauration d&amp;rsquo;un point de vie.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Type 2 (Jaune) :&lt;/strong&gt; Bonus de 10 points de score.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Système de probabilités :&lt;/strong&gt; Utilisation de &lt;code&gt;flr(rnd(n))&lt;/code&gt; pour définir des taux d&amp;rsquo;apparition différents selon le type de bonus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nettoyage :&lt;/strong&gt; Suppression automatique des bonus sortant de l&amp;rsquo;écran pour optimiser les performances.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La modularité :&lt;/strong&gt; Utiliser des fonctions dédiées (&lt;code&gt;add_up&lt;/code&gt;, &lt;code&gt;update_pus&lt;/code&gt;, &lt;code&gt;draw_pus&lt;/code&gt;) permet de garder un code propre et facile à maintenir, même sur une console limitée comme la PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le &amp;ldquo;Game Feel&amp;rdquo; :&lt;/strong&gt; L&amp;rsquo;ajout de bonus aléatoires est une technique fondamentale pour briser la répétitivité d&amp;rsquo;un jeu de tir et récompenser le joueur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimisation :&lt;/strong&gt; La gestion des tableaux (suppression des éléments hors écran) reste une règle d&amp;rsquo;or pour éviter de saturer la mémoire et le processeur de la machine virtuelle.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>21. Créer un effet de ''Screen Shake'' sur PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-effet-screen-shake-pico-8/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/creer-effet-screen-shake-pico-8/</guid><description>&lt;p&gt;Dans ce dernier volet de notre série consacrée à la création d&amp;rsquo;un &lt;em&gt;space shooter&lt;/em&gt; sur PICO-8, nous allons ajouter une touche de &amp;ldquo;Game Feel&amp;rdquo; indispensable : le &lt;strong&gt;Screen Shake&lt;/strong&gt; (ou tremblement d&amp;rsquo;écran). Cet effet visuel, très prisé dans le style rétro, permet de donner de l&amp;rsquo;impact et de la profondeur à vos événements de jeu, comme la destruction d&amp;rsquo;un ennemi ou un dégât reçu.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/FWAUdglV_mc" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/FWAUdglV_mc?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/FWAUdglV_mc/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="résumé-de-limplémentation"&gt;Résumé de l&amp;rsquo;implémentation&lt;a class="anchor" href="#r%c3%a9sum%c3%a9-de-limpl%c3%a9mentation"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Pour réaliser cet effet, nous avons structuré notre code autour de quelques concepts clés :&lt;/p&gt;</description></item><item><title>22. Exporter et distribuer votre jeu PICO-8</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/exporter-distribuer-jeu-pico8/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/exporter-distribuer-jeu-pico8/</guid><description>&lt;p&gt;Ça y est, nous y sommes ! Après avoir codé notre Space Invaders de A à Z, il est temps de sortir notre création de l&amp;rsquo;éditeur PICO-8 pour la partager au monde entier. Dans cet ultime épisode, nous allons voir comment transformer votre cartouche en un jeu jouable par n&amp;rsquo;importe qui, sur n&amp;rsquo;importe quel support.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/XQ47T5clzQ8" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/XQ47T5clzQ8?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/XQ47T5clzQ8/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="au-programme-de-cet-épisode-"&gt;Au programme de cet épisode :&lt;a class="anchor" href="#au-programme-de-cet-%c3%a9pisode-"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Préparation de la jaquette :&lt;/strong&gt; Utiliser la touche F7 pour capturer l&amp;rsquo;image qui servira de vignette à votre jeu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export HTML5 :&lt;/strong&gt; Créer une version jouable directement dans un navigateur web (idéal pour &lt;em&gt;itch.io&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export Exécutable (.bin) :&lt;/strong&gt; Générer des fichiers autonomes pour Windows, Mac et Linux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export Cartouche (.p8.png) :&lt;/strong&gt; Partager votre jeu sous forme de &amp;ldquo;cartouche virtuelle&amp;rdquo; compatible avec toutes les versions de PICO-8.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capture GIF :&lt;/strong&gt; Utiliser F9 pour créer des extraits animés de votre gameplay, parfaits pour vos réseaux sociaux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distribution :&lt;/strong&gt; Conseils sur l&amp;rsquo;hébergement de vos projets sur &lt;em&gt;itch.io&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La licence PICO-8 :&lt;/strong&gt; L&amp;rsquo;achat de la licence officielle reste indispensable pour accéder aux fonctions d&amp;rsquo;exportation complètes. C&amp;rsquo;est un investissement minime pour des heures de création.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La plateforme itch.io :&lt;/strong&gt; Elle demeure la référence incontournable pour les développeurs indépendants et amateurs. C&amp;rsquo;est l&amp;rsquo;endroit idéal pour héberger vos jeux PICO-8 et permettre aux joueurs d&amp;rsquo;y accéder instantanément.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le format HTML5 :&lt;/strong&gt; C&amp;rsquo;est toujours la méthode la plus efficace pour toucher une large audience sans friction (pas de téléchargement nécessaire).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La communauté :&lt;/strong&gt; Le partage de vos créations (via les commentaires ou les réseaux) est le meilleur moyen de recevoir des retours constructifs et de faire vivre votre projet.&lt;/li&gt;
&lt;/ul&gt;


&lt;hr style="margin-top: 1.5rem; border: 0; border-top: 1px solid var(--INTERNAL-MENU-BORDER-color, #e5e5e5); opacity: 0.5;"&gt;

&lt;div class="custom-footer" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; margin-top: 2rem; padding-bottom: 2rem; font-size: 0.9rem; color: var(--MAIN-TITLES-color);"&gt;
 
 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📺 Ma Chaîne YouTube&lt;/h4&gt;
 &lt;a href="https://www.youtube.com/@creerunjeuvideo" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 S'abonner à la chaîne
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;📦 Ressources&lt;/h4&gt;
 &lt;a href="https://jeancharpentier.itch.io/ressources-tutoriels" target="_blank" rel="noopener" style="display: inline-block; background: #4400ff; color: #fff; padding: 0.5rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;
 Téléchargements
 &lt;/a&gt;
 &lt;/div&gt;

 &lt;div class="footer-col"&gt;
 &lt;h4 style="margin-bottom: 0.8rem; color: var(--MAIN-TITLES-color);"&gt;🌐 Communauté&lt;/h4&gt;
 &lt;ul style="list-style: none; padding: 0; margin: 0; line-height: 1.6;"&gt;
 &lt;li&gt;&lt;a href="https://github.com/JeanCharpentier/" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💻 GitHub&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://bsky.app/profile/ankhm.bsky.social" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;🦋 Bluesky&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://fr.linkedin.com/in/jeancharpentier" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;💼 LinkedIn&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="https://www.twitch.tv/levieuxankh" target="_blank" rel="noopener" style="color: var(--MENU-SECTIONS-LINK-color); padding: 1rem 1rem; border-radius: 4px; text-decoration: none; font-weight: bold; font-size: 0.85rem;"&gt;👾 Chaîne Twitch&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/div&gt;

&lt;/div&gt;

&lt;div style="border-top: 1px dashed var(--INTERNAL-MENU-BORDER-color, #e5e5e5); padding-top: 1rem; margin-top: 1rem; font-size: 0.8rem; opacity: 0.7; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem;"&gt;
 &lt;div&gt;
 &amp;copy; 2026 - Créé avec ❤️ sous Hugo.
 &lt;/div&gt;
 &lt;div&gt;
 &lt;a href="https://creerunjeuvideo.fr/mentions-legales/" style="color: inherit; margin-right: 1rem;"&gt;Mentions légales&lt;/a&gt;
 &lt;a href="https://creerunjeuvideo.fr/confidentialite/" style="color: inherit;"&gt;Confidentialité (RGPD)&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;</description></item><item><title>0. Introduction à PICO-8 : Créer ses jeux vidéo simplement</title><link>https://creerunjeuvideo.fr/pico-8/space-invaders/introduction-pico-8-debuter-creation-jeu-video/</link><pubDate>Wed, 22 May 2024 00:00:00 +0000</pubDate><guid>https://creerunjeuvideo.fr/pico-8/space-invaders/introduction-pico-8-debuter-creation-jeu-video/</guid><description>&lt;p&gt;Bienvenue dans cette nouvelle série dédiée à la création de jeux vidéo ! Après une pause, l&amp;rsquo;envie de créer est revenue, et c&amp;rsquo;est avec &lt;strong&gt;PICO-8&lt;/strong&gt; que nous allons explorer les fondamentaux du développement. Oubliez la complexité des moteurs AAA comme Unreal ou Unity : ici, nous revenons à l&amp;rsquo;essentiel.&lt;/p&gt;

&lt;div class="youtube-privacy-wrapper" style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"&gt;
 &lt;iframe 
 style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
 src="https://www.youtube-nocookie.com/embed/GXrjJHVmXgg" 
 title="YouTube video player" 
 loading="lazy"
 srcdoc="&lt;style&gt;*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img,span{position:absolute;width:100%;top:0;bottom:0;margin:auto}span{height:1.5em;text-align:center;font:48px/1.5 sans-serif;color:white;text-shadow:0 0 0.5em black}&lt;/style&gt;&lt;a href=https://www.youtube-nocookie.com/embed/GXrjJHVmXgg?autoplay=1&gt;&lt;img src=https://img.youtube.com/vi/GXrjJHVmXgg/hqdefault.jpg alt='Vidéo YouTube'&gt;&lt;span&gt;▶&lt;/span&gt;&lt;/a&gt;"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
 allowfullscreen&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id="pourquoi-choisir-pico-8-pour-débuter-"&gt;Pourquoi choisir PICO-8 pour débuter ?&lt;a class="anchor" href="#pourquoi-choisir-pico-8-pour-d%c3%a9buter-"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Une &amp;ldquo;Fantasy Console&amp;rdquo; tout-en-un :&lt;/strong&gt; Tout est inclus (éditeur de code, de sprites, de map, de son et de musique).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Des limitations créatives :&lt;/strong&gt; En étant contraint par le 8-bit et la résolution 128x128, on apprend à mieux structurer son code et à se concentrer sur les mécaniques plutôt que sur les graphismes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apprentissage des concepts :&lt;/strong&gt; Nous allons coder la gravité, les collisions et la gestion des états (State Machines) à la main, sans &amp;ldquo;boîte noire&amp;rdquo; toute faite.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accessibilité :&lt;/strong&gt; Le langage utilisé est le Lua, simple et élégant, idéal pour comprendre la logique de programmation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Version gratuite :&lt;/strong&gt; Vous pouvez tester PICO-8 via l&amp;rsquo;éditeur web (PICO-8 Education Edition) pour apprendre sans frais avant de passer à la version complète.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ce-qui-reste-dactualité-aujourdhui"&gt;Ce qui reste d&amp;rsquo;actualité aujourd&amp;rsquo;hui&lt;a class="anchor" href="#ce-qui-reste-dactualit%c3%a9-aujourdhui"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La gestion des tableaux :&lt;/strong&gt; Une notion fondamentale pour stocker vos objets et entités, souvent occultée par les outils &amp;ldquo;drag-and-drop&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La rigueur de sauvegarde :&lt;/strong&gt; Contrairement aux moteurs modernes, PICO-8 demande une gestion manuelle de vos fichiers (&lt;code&gt;save&lt;/code&gt; / &lt;code&gt;load&lt;/code&gt;). Pensez toujours à versionner vos projets !&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La philosophie &amp;ldquo;Code-First&amp;rdquo; :&lt;/strong&gt; Apprendre à gérer ses propres systèmes (mouvement, collision, inputs) est une compétence transférable dans n&amp;rsquo;importe quel autre langage ou moteur de jeu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La communauté :&lt;/strong&gt; PICO-8 bénéficie d&amp;rsquo;un écosystème riche et de forums très actifs, parfaits pour trouver de l&amp;rsquo;aide ou de l&amp;rsquo;inspiration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans le prochain épisode, nous passerons à la pratique : nous afficherons notre premier personnage à l&amp;rsquo;écran et nous le ferons bouger grâce aux entrées clavier. Préparez votre éditeur !&lt;/p&gt;</description></item></channel></rss>