Reprenons le programme précédent (pour ne pas dévoiler les solutions de l'exercice précédent, les trous dans le programme n'ont pas été complétés. Il faut le refaire).
Rajoutons :
import pyxel
# constantes (des variables dont la valeur ne change jamais)
LARGEUR = ... # largeur de notre fenêtre
HAUTEUR = ... # hauteur de notre fenêtre
FPS = ... # nombre d'images par seconde dans notre jeu
NOIR = ... # voir la documentation pour connaître le nombre correspondant à la couleur noire
BLANC = ... # faire pareil avec les autres couleurs
VERT = ...
ORANGE = ...
ROUGE = ...
TITRE = ... # titre de la fenêtre (à mettre entre guillemets)
CASE = ...
VITESSE_SPRITE = ...
# variables globales (des variables dont la valeur change et qui seront utilisées partout)
sprite_x = ... # définir la position horizontale du sprite au début (moins de la valeur de LARGEUR !)
sprite_y = ... # définir la position verticale du sprite au début (moins de la valeur de HAUTEUR !)
# taille de la fenetre 128x128 pixels
# penser à utiliser les constantes définies juste au-dessus
pyxel.init(..., ..., title = ... , fps = ..., quit_key=...)
def update():
# on doit mettre ce qui suit pour que les variables globales puissent être utilisées dans la fonction update()
global sprite_x, sprite_y
# mise à jour de la position du sprite en ajoutant la vitesse à la position
sprite_x += ...
def draw():
# effacer la fenêtre et la remplir de couleur noire (voir la documentation pour savoir comment faire)
# utiliser la constante NOIR définie plus haut
...
# dessiner une forme carrée de couleur ORANGE (notre sprite) (voir la documentation ou ci-dessous pour savoir comment faire)
# le carré est positionné aux coordonnées sprite_x, sprite_y et il est de taille CASE
...
pyxel.run(update, draw)
Problème du programme précédent : notre sprite sort de la fenêtre. Corrigeons cela avec une condition.
import pyxel
# constantes (des variables dont la valeur ne change jamais)
LARGEUR = ... # largeur de notre fenêtre
HAUTEUR = ... # hauteur de notre fenêtre
FPS = ... # nombre d'images par seconde dans notre jeu
NOIR = ... # voir la documentation pour connaître le nombre correspondant à la couleur noire
BLANC = ... # faire pareil avec les autres couleurs
VERT = ...
ORANGE = ...
ROUGE = ...
TITRE = ... # titre de la fenêtre (à mettre entre guillemets)
CASE = ...
VITESSE_SPRITE = ...
# variables globales (des variables dont la valeur change et qui seront utilisées partout)
sprite_x = ... # définir la position horizontale du sprite au début (moins de la valeur de LARGEUR !)
sprite_y = ... # définir la position verticale du sprite au début (moins de la valeur de HAUTEUR !)
# taille de la fenetre 128x128 pixels
# penser à utiliser les constantes définies juste au-dessus
pyxel.init(..., ..., title = ... , fps = ..., quit_key=...)
def update():
# on doit mettre ce qui suit pour que les variables globales puissent être utilisées dans la fonction update()
global sprite_x, sprite_y
# mise à jour de la position du sprite en ajoutant la vitesse à la position
# si la position du vaisseau ne dépasse pas [largeur de la fenêtre - largeur du sprite], on déplace le vaisseau
if sprite_x < ...
sprite_x += ...
def draw():
# effacer la fenêtre et la remplir de couleur noire (voir la documentation pour savoir comment faire)
# utiliser la constante NOIR définie plus haut
...
# dessiner une forme carrée de couleur ORANGE (notre sprite) (voir la documentation ou ci-dessous pour savoir comment faire)
# le carré est positionné aux coordonnées sprite_x, sprite_y et il est de taille CASE
...
pyxel.run(update, draw)
Si tu n'as pas fait d'erreur, le sprite se déplace vers la droite jusqu'au bord de la fenêtre.
Maintenant que tu sais déplacer le sprite, ajoutons du code pour faire ce déplacement seulement quand on appuie sur une touche du clavier.
Pour détecter une touche clavier enfoncée, on utilise pyxel.btn() en passant en paramètre la touche sur laquelle on appuie. Rappel : pour connaître les touches, il faut aller voir à la fin de la documentation.
Par exemple : pyxel.btn(pyxel.KEY_RIGHT) deviendra vrai si on appuie sur la flèche droite du clavier.
import pyxel
# constantes (des variables dont la valeur ne change jamais)
LARGEUR = ... # largeur de notre fenêtre
HAUTEUR = ... # hauteur de notre fenêtre
FPS = ... # nombre d'images par seconde dans notre jeu
NOIR = ... # voir la documentation pour connaître le nombre correspondant à la couleur noire
BLANC = ... # faire pareil avec les autres couleurs
VERT = ...
ORANGE = ...
ROUGE = ...
TITRE = ... # titre de la fenêtre (à mettre entre guillemets)
CASE = ...
VITESSE_SPRITE = ...
# variables globales (des variables dont la valeur change et qui seront utilisées partout)
sprite_x = ... # définir la position horizontale du sprite au début (moins de la valeur de LARGEUR !)
sprite_y = ... # définir la position verticale du sprite au début (moins de la valeur de HAUTEUR !)
# taille de la fenetre 128x128 pixels
# penser à utiliser les constantes définies juste au-dessus
pyxel.init(..., ..., title = ... , fps = ..., quit_key=...)
def update():
# on doit mettre ce qui suit pour que les variables globales puissent être utilisées dans la fonction update()
global sprite_x, sprite_y
# si la touche flèche droite du clavier est enfoncée
if ...:
# mise à jour de la position du sprite en ajoutant la vitesse à la position
# si la position du vaisseau ne dépasse pas [largeur de la fenêtre - largeur du sprite], on déplace le vaisseau
if sprite_x < ...
sprite_x += ...
if sprite_x < ...
sprite_x += ...
def draw():
# effacer la fenêtre et la remplir de couleur noire (voir la documentation pour savoir comment faire)
# utiliser la constante NOIR définie plus haut
...
# dessiner une forme carrée de couleur ORANGE (notre sprite) (voir la documentation ou ci-dessous pour savoir comment faire)
# le carré est positionné aux coordonnées sprite_x, sprite_y et il est de taille CASE
...
pyxel.run(update, draw)
Compléter le code précédent dans def update() avec un déplacement dans les autres directions : vers la gauche, vers le haut et vers le bas.
Essayer d'améliorer votre programme, pour que le sprite ne sorte pas de la fenêtre.