B1 · Episode 26 · 5:10
Building a Space Game with Pyxel
This episode introduces building a pixel-art space game using Python and the Pyxel library. It covers initializing the game window (160×120 pixels), understanding the coordinate system (origin at top-left), and the core game loop structure—using 'update' for logic (movement, collisions) and 'draw' solely for rendering.
Source:jmbarbier / peertube.solidev.net · License:CC BY-SA 4.0
Transcript
Alors avec ce qu'on sait déjà faire en Python, on a de quoi créer un petit jeu,
So, with what we already know how to do in Python, we have enough to create a small game,
et puis au fur et à mesure qu'on va apprendre des nouvelles choses,
and then, as we gradually learn new things,
on va utiliser ces nouvelles compétences pour mettre à jour ce jeu et lui augmenter
we’ll use these new skills to update the game,
les fonctionnalités.
and enhance its features.
Donc le principe, c'est la même chose que ce que je vous ai fait faire il
So the principle is the same as what I had you do one or two weeks ago in ‘block mode’,
y a une ou deux semaines en mode
that is, in ‘block mode’,
bloc, c'est- à- dire un
meaning a system where
système où vous avez un petit vaisseau spatial,
you have a small spaceship;
vous avez des astéroïdes qui vont descendre,
you have asteroids descending from above;
et l'objectif initial c'est déjà de pas cogner les astéroïdes.
and the initial goal is simply to avoid hitting the asteroids.
Donc sauf que la différence, c'est qu'au lieu de le faire en mode bloc,
The difference, however, is that instead of doing it in block mode,
on va le faire en mode pixel.
we’ll do it in pixel mode.
Vous avez le lien dans le cahier de texte pour le document commun,
You’ll find the link to the shared document in your notebook,
et ce qu'on va faire, c'est on va faire la première partie ensemble,
and what we’ll do is complete the first part together,
pour que je puisse vous montrer de quoi il s'agit, les principes,
so I can show you what it’s about—the core principles, etc.
etc. Et puis ensuite après, c'est à
After that, it’ll be up to you.
vous d'aller, en gros je vais faire le vaisseau et vous allez faire les astéroïdes
For example, I’ll build the spaceship, and you’ll build the asteroids,
par exemple ou quelque chose comme ça.
or something similar.
Donc le moteur de jeu qu'on va utiliser s'appelle Pyxel,
The game engine we’ll use is called Pyxel,
Pyxel, P- Y comme Python, X- L.
Pyxel: P-Y as in Python, X-L.
Si vous cherchez la documentation, vous allez la trouver à deux endroits.
If you search for the documentation, you’ll find it in two places.
Donc déjà première chose, il n'y a pas de consigne,
First, there are no instructions included,
vous pouvez gagner de la place en coupant les consignes comme ça.
so you can save space by cutting out the instructions like this.
Si vous voulez les retrouver, vous pourrez les retrouver.
But if you want to find them again later, you’ll be able to.
Mais vous pouvez passer en plein écran si vous avez envie.
However, you may switch to full-screen mode if you wish.
Et lorsque vous allez...
And when you need...
Besoin de documentation, il y a une antisèche fournie directement dans
When you need documentation, a cheat sheet is provided directly in the development environment.
l'environnement de développement.
The development environment itself includes this cheat sheet.
Voilà. Donc là ici, vous avez une antisèche qui a toutes les informations,
Here it is—this cheat sheet contains all the information you need,
mais de manière assez rapide, on va dire ça comme ça.
though presented quite concisely, let’s say.
Donc si vous voulez avoir le détail de tout,
So if you want full details,
ça c'est pour vous rappeler en fait les choses,
this cheat sheet is meant to help you quickly recall key points,
mais si vous voulez avoir le détail, vous avez l'adresse ici.
but for in-depth explanations, click the link shown here.
Donc cliquez, ouvrir dans un nouvel onglet,
Click it—or open it in a new tab—
et vous avez ici la documentation complète avec une documentation en français.
and you’ll access the complete official documentation, available in French.
qui va décrire tout, comment l'installer, comment l'exécuter,
It explains how to install and run the software,
qui donne des exemples,
and provides many practical code examples.
et nous on va commencer par le plus simple, créer notre première application.
Next, we’ll start with the simplest task: creating our first application.
Donc on va prendre.
Let’s begin by selecting this code.
Le code qui nous est proposé ici, on va le copier.
Copy the code shown here on screen.
Et on va le coller dans notre Pixel Studio,
Then paste it into Pixel Studio’s code editor area.
dans l'endroit du code.
That is, where you write your code.
Alors on va décomposer un petit peu.
Now let’s break it down a bit.
Cette première partie ici, init,
This first section, called 'init' (for initialization),
on va créer une fenêtre de jeu de 160 pixels de large par 120 pixels de haut.
creates a game window 160 pixels wide and 120 pixels tall.
On va créer une fenêtre de jeu de 160 pixels de large par 120 pixels de haut.
Specifically, it sets up a game window measuring 160 by 120 pixels.
ça, ça va nous donner notre écran et on va pouvoir repérer dans cet écran les
This window becomes our game screen,
positions des objets en partant du haut à gauche.
and object positions will be measured from its top-left corner.
Alors si je l'illustre,
Let me illustrate:
on a. Notre écran qui est comme ça, qui va ici faire 160 pixels,
Our screen looks like this—160 pixels wide,
ça c'est la direction des x, et 120 pixels.
with the x-axis pointing right, and 120 pixels tall.
ça c'est dans la direction des y, et le point 0 0.
This points in the y-direction, and this point is at (0, 0).
L'origine est située ici, donc 0, 0.
The origin is located here, so (0, 0).
Quand on va descendre ici, on sera.
When we move down here,
Dans les y qui augmentent, et là on sera dans les x qui augmentent.
the y-values increase; and over here, the x-values increase.
Donc ce point- là, le point à l'extrémité ici, c'est le point x qui vaut 160.
So this point at the far end here has an x-coordinate of 160.
et y qui vaut 120.
and a y-coordinate of 120.
x, y. X, Y. Donc on va pouvoir donner la position,
x, y. X, Y. So we can specify a position,
imaginez que je veux dessiner un carré.
for example, imagine I want to draw a square,
à cette position- là.
right at this location.
Je vais lui donner la position du coin du carré, je sais pas,
I’ll give it the top-left corner’s position—say,
70, 30. Et puis après, je vais lui donner par exemple la largeur et la hauteur de
(70, 30); then, I’ll also give it the rectangle’s width and height.
mon rectangle.
—that is, my rectangle.
Donc c'est ce qu'on va faire ici.
So that’s exactly what we’ll do here.
On va dessiner des objets qui vont faire notre jeu à l'intérieur d'un écran et ça se
We’ll draw game objects inside the screen,
passe en deux parties.
and this happens in two parts.
Si on reprend ici, vous voyez que donc j'ai initialisé mon terrain de jeu
Going back here, you see that I first initialized the game area,
et ensuite je vais lui dire de lancer le jeu avec deux fonctions def update et def
then I tell it to start the game using two functions: def update and def draw,
draw qui sont là.
which are defined right here.
Chacune de ces fonctions a un rôle.
Each of these functions has its own role.
Update, ça permet de préparer
The update function prepares what to display,
l'affichage, et l'affichage, il est fait dans draw.
while the actual drawing is handled by the draw function.
Donc en gros, on va mettre la logique du jeu dans le update,
In short, all game logic goes into update—
c'est là qu'on va faire déplacer les choses,
that’s where we move things around,
qu'on va vérifier s'il y a des collisions, qu'on va changer de mode,
check for collisions, switch game modes, etc.
etc. Et dans le draw, le draw ne s'occupe que de dessiner,
The draw function handles only drawing,
selon les informations qui ont été mises à jour dans update.
using the information updated in update.