B1 · Episode 29 · 5:07
Controlling a Spaceship with Pyxel in Python
This episode teaches how to implement keyboard-based movement for a spaceship using Pyxel in Python, including handling left, right, up, and down inputs while constraining the ship to stay within screen boundaries.
Source:jmbarbier / peertube.solidev.net · License:CC BY-SA 4.0
Transcript
Ça c'est pour le dessin du vaisseau.
This is for drawing the spaceship.
On peut déjà lancer notre code, vérifier si on a un vaisseau qui s'affiche.
We can already run our code and check whether the spaceship appears on screen.
Et on a un vaisseau qui s'affiche en bas.
And there’s a spaceship displayed at the bottom.
Pensez à souvent lancer votre code plutôt que de faire des milliers de lignes et à
Remember to run your code frequently—
la fin de vous rendre compte qu'il y a une grosse erreur que vous savez pas où.
don’t write thousands of lines first, only to realize at the end that there’s a major error—and you don’t know where it is.
Donc on écrit.
So we start writing.
dès qu'on a quelque chose qui peut fonctionner on le teste et on passe à la suite
As soon as we have something that can work, we test it and move on to the next step;
ensuite. Donc là je reviens sur mon code et maintenant l'idée c'est de faire la mise
then, I return to my code; now the goal is to update the spaceship’s position.
à jour du vaisseau.
updating the spaceship’s position.
Donc alors on va utiliser les touches de direction et dire voilà le vaisseau peut
So we’ll use the arrow keys to let the spaceship move left, right, up, or down.
aller à gauche, à droite, en haut, en bas.
left, right, up, or down.
Donc pour ça, on va vérifier si
For this, we’ll check whether
pixel. btn, donc on peut aller regarder qu'est- ce que c'est btn.
pixel.btn is pressed—we can look up what 'btn' means.
Renvoie vrai ou faux si la touche est enfoncée.
It returns true or false, indicating whether the key is pressed.
D'accord? Donc si la touche est enfoncée, true, sinon false.
Got it? It returns 'true' if the key is pressed, otherwise 'false'.
Donc là, c'est ce que je vais utiliser.
So that’s exactly what I’ll use here.
Est- ce que la touche flèche à gauche?
Is the left-arrow key pressed?
Donc pixel. Key.
That is, pixel.key—
Left, la liste des touches, vous l'avez ici.
'left'—here’s the list of keys, shown right here.
Voilà, non, left.
See? It’s 'left'.
Qui est left, up, down, right.
'left', 'up', 'down', and 'right'.
D'accord, donc vous avez toutes les touches qui sont ici: left,
Okay, all available keys are listed here: 'left',
right, up, down.
'right', 'up', and 'down'.
Donc si on appuie sur la touche de gauche, qu'est- ce qu'on va faire?
So, when we press the left-arrow key, what should we do?
Il va falloir prendre, donc la gauche et la droite, c'est les X.
Left and right movement corresponds to the X-coordinate.
Il va falloir prendre ce Xv là.
We’ll need to use this Xv variable.
Et le modifier.
And modify it.
Mais attention, la variable est en dehors de la fonction.
But be careful—the variable is defined outside the function.
Donc pour que la fonction puisse modifier une variable qui est en dehors de la
So, for a function to modify a variable that lies outside it,
fonction, on a vu qu'il fallait utiliser global.
we learned earlier that we must use the 'global' keyword.
Donc c'est là qu'on va utiliser ce fameux global que je vous ai dit qui n'était pas
That’s where we’ll use that famous 'global' keyword I mentioned earlier—
terriblement bien, mais on n'a pas le choix.
it’s not ideal, but we have no other choice.
On va dire global.
We’ll write 'global'.
xv yv, ça dit que.
xv, yv—this means:
Dans cette fonction, on a le droit d'utiliser xV et yV,
Inside this function, we’re allowed to use xV and yV,
voire même de les modifier, que quand on parle de xV, yV,
and even modify them;
il s'agit de ceux qui sont à l'extérieur de la fonction ici.
when we refer to xV or yV, we mean those defined outside the function here.
Donc qu'est- ce qu'on va faire si le bouton.
So what happens if the button is pressed?
est enfoncé, le pixel bouton gauche est enfoncé,
Specifically, when the left mouse button is pressed,
on va aller vers la gauche.
the character will move left.
Donc c'est à dire on va enlever un, la gauche je vous
In other words, subtract 1 from x;
rappelle. C'est par ici,
Let me remind you: left is this direction,
c'est. On va enlever des valeurs en x, donc passer de là à là,
meaning x decreases,
c'est faire x moins égal 1.
i.e., perform ‘x -= 1’.
Donc on va faire xv moins égal un.
So we’ll write ‘xv -= 1’.
Alors, on peut déjà tester ça.
Now we can already test this.
Si j'appuie sur la touche gauche, ça fonctionne.
When I press the left arrow key, it works.
Après, si j'appuie sur la touche droite,
Next, if I press the right arrow key,
il ne se passe rien puisque je ne l'ai pas programmé.
nothing happens—because I haven’t programmed it yet.
Maintenant, ici, à un moment.
Now, at some point here...
Je vais sortir de mon écran.
I’m going to leave the screen.
Donc là ici ce qu'on peut lui dire c'est on va essayer de lui interdire de sortir de
So here, we can tell it:
l'écran. If. Donc là, j'enlève un.
we’ll forbid it from leaving the screen. If… Okay, I’ll remove one.
If xv devient inférieur à zéro,
If xv becomes less than zero,
dans ce cas- là, xv.
then in this case, xv
devient égal à zéro.
becomes equal to zero.
Donc je lui interdis d'aller plus loin que le
So I forbid it
bord de l'écran.
from going beyond the screen’s edge.
Donc ça c'est pour la gauche,
This handles the left side,
et maintenant ce que je vais vous demander de faire, à vous de jouer.
and now I’ll ask you to do the same thing yourself.
C'est de faire la même chose pour la gauche, la droite, le haut,
Do the same for the left, right, top, and bottom sides,
le bas, sachant que dans tous les cas,
keeping in mind that in all cases,
on va lui interdire de sortir de l'écran. Donc à droite, faire
we’ll forbid it from leaving the screen. When moving right,
attention à ce qu'il a une largeur.
pay attention to its width.
Dans tous les cas, le carré doit rester à l'intérieur de l'écran.
In all cases, the square must stay inside the screen.
Là ici, par exemple, je vais me déplacer à fond vers la gauche.
For example, here I move fully to the left.
Vous voyez que Mon carré reste dans l'écran.
You see—the square stays within the screen.
Quand je vais vouloir aller à droite, c'est la même chose, le max.
When I move right, it’s the same idea—just using the maximum value.
où il puisse aller à droite, c'est quand le bord droit de mon carré de
The farthest right it can go is when
vaisseau touchera le bord droit de l'écran.
the right edge of my spaceship touches the screen’s right edge.
Le carré doit rester dans l'écran.
The square must remain inside the screen.
Donc à vous de développer ça.
Now it’s up to you to develop this.
ici, if. Il va falloir en rajouter et mettre les bonnes conditions pour que mon
Here, you’ll need to add an ‘if’ statement,
vaisseau ne sorte pas du tout.
and set the correct conditions so that my spaceship never leaves the screen at all.
de l'écran, et là vous aurez un vaisseau qui peut se déplacer dans les quatre
Then your spaceship will be able to move freely in all four directions,
dimensions, et il restera plus qu'à faire les astéroïdes, ce sera une autre vidéo.
and after that, adding asteroids will be covered in another video.