« Pygame/Déplacer une image » : différence entre les versions

Contenu supprimé Contenu ajouté
Tavernierbot (discussion | contributions)
m Bot: Retouches cosmétiques
Ligne 8 :
Note : nous n'enseignerons pas la programmation Python dans cet article, ceci n'est qu'une introduction aux fonctions basiques de pygame.
PygameL'affichage ade unela surfacefenêtre affichée.de Cecipygame est unecontrôlé imagepar basiqueles visiblepixels àde l'écran, et cette image est faite de pixels. La manièrefaçon principale de changermodifier ces pixels est d'appeller la fonction blit(). Les pixels placésmodifiés sont des copies venant d'une autre image.
Seulement les pixels sur l'écran
Pygame a une surface affichée. Ceci est une image basique visible à l'écran, et cette image est faite de pixels. La manière principale de changer ces pixels est d'appeller la fonction blit(). Les pixels placés sont des copies venant d'une autre image.
Ceci C'est la première chose à comprendre. LorsqueEn vousappelant avezla fait votrefonction blit, vous pouvezchangez simplement changer la couleur des pixels de l'écran. Les pixels ne sont pas ajoutés ou bougésdéplacés, nousC'est changeons justeseulement la couleur desde certains pixels àqui l'écranest modifiée. Quand un blit est invoqué, une copie des pixels modifiés est faiteplacée àsur l'écran, mais voustoujours avezà toujourspartir d'une copieimage originale.
Avec cette brevebrève description, peut-être pouvez vous déja comprendre ce dont il y a besoin pour faire bouger une image. En réalité, nous ne déplaçons rien. Nous faisons simplement un blit de l'image dans une nouvelle position. Mais avant, dessinonsde dessiner l'image dans une nouvelle position, nousIl auronsfaut besoin d'effacer l'ancienne. Autrement, l'image serait visible 2 fois sur l'écran. En effaçant rapidement l'image et en la refaisant dans un nouvel endroit, nouson réalisonsréalise l'un "illusion"mouvement ducontinu mouvement''en apparence''.
 
A travers le reste du tutorial, nouson diviseronsverra le processus d'affichage séparé en simplesplusieurs étapes. Nous verrons également comment faire bouger plusieurs images à l'écran en même temps. Vous avez probablement déja des questions. Par exemple, comment effacer l'image avant de la redessiner dans une nouvelle position ? Peut être êtes vous totallementtotalement perdu ? Si tout va bienNormalement, le reste de ce tutorial peutdevrait vous aider à comprendre lesces choses.
Retournons sur nos pas : peut être que ce concept des pixels et des images est difficile à vos yeux ? Alors, on va en faire une réalisation abstraite, sans affichage. On crée une petite liste en python de 6 nombres, et on imagine ce qu'elle retranscrirait comme motif graphique à l'écran.
Allons une étape en arrière
Peut être que ce concept des pixels et des images est flou a vos yeux ? Bonne nouvelle, nous allons nous servir de code, sans utilisation de pixels. Nous allons créer une petite liste en python de 6 nombres, et imaginer la représentation de certains dessins fantaisistes que nous pourrons voir sur l'écran. Ceci représente les graphismes que nous feront plus tard.
Ainsi, commençons en créant notre liste et remplissons la de beau paysages.
Ligne 26 ⟶ 24 :
[1, 1, 2, 2, 2, 1]
 
Nous avons crée le background (arrière plan). Ceci ne van'est pas êtrevraiment trèsdigne passionnantd'intérêt, à moins que nous dessinions également un joueur sur l'écran. Nous allons créer un hérohéros qui ressemblera a un 8. Il apparaitra au milieu de la carte.
>>> screen[3] = 8
Ligne 32 ⟶ 30 :
[1, 1, 2, 8, 2, 1]
 
A ce point, nous sommes allés aussi loin que de faire de la programmtion graphique avec pygame. Dites vous que à chaque nombre de cette liste correspond un pixel. En réalité, votre écran est juste une liste de nombres. Faire bouger un motif sur l'écran correspond simplement à modifier cette liste de nombre. Comprenez vous comment cela fonctionne, à présent ?
::pas de traduction::
This might have been as far as you've gotten if you jumped right in doing some graphics programming with pygame. You've got some nice looking stuff on the screen, but it cannot move anywhere. Perhaps now that our screen is just a list of numbers, it's easier to see how to move him?
::pas de traduction::
Déplacement du personnage
Mise en mouvement du héro
EnsuiteMaintenant, nousvoyons allonscomment faire bouger le personnage. Nous devons maintenirlui définir une certaine sorte de position pour lui. Dans une prochaine section lorsque nous le dessinerons, nous prendrons une position arbitraire. Pour cette fois, faisonschoisissons lequelque chose de facilementnaturel.
>>> '''playerpos = 3'''
>>> '''screen[playerpos] = 8'''
>>> print screen
'''[1, 1, 2, 8, 2, 1]'''
 
Maintenant il est assez facile de le déplacer à une nouvelle position. Nous changeons simplement la valeur de playerpos, et le dessinons à l'écran plus tard.
Ligne 52 ⟶ 48 :
[1, 1, 8, 8, 2, 1]
 
Maintenant nous voyons 2 heros. Un dans une position ancienne, et un dans la nouvelle position. C'est exactement la raison pour laquelle nous avons besoin d'effacer le héro dans son ancienne position avant de le dessiner sur sa nouvelle position. Pour l'effacer, nous devons changer la valeur dans la liste pour qu'elle soit de nouveau comme celle avant le dessin du héro. Pour caça, nous devons conserver la valeur à l'écran avant le remplacement du héro. Il y a plusieurs manières de faire ceci, mais lela plus facile est de garder une copie séparée du fond d'écran. Ceci signifie que nous devons faireun quelquespeu changements àmodifier notre petit jeu.
 
Création de la carte
Ce que nous voulons faire est de créer une liste séparée que nous appellerons notre background (fond d'écran). Nous voulons créer un fond d'écran, ainsiqui ilsera ressemblele àfond notreoriginal écrandu originaljeu. Alors nous créeons la copie du background vers l'écran. Apres, nous pouvons dessiner notre héro.
>>> background = [1, 1, 2, 2, 2, 1]
Ligne 68 ⟶ 64 :
[1, 1, 2, 8, 2, 1]
 
Il peut sembler comme un grand travail supplémentaire. Ce n'est pas plus dur que le dernier exemple qui a servitservi pour la compréhension de la démarche. Mais cette fois nous avons plus d'information pour pouvoir le déplacer correctement.
Faire bouger le hérohéros (2eme partie)
Cette fois ci, on veut bougerdéplacer le hérohéros facilementsans complications. Premièrement, nous effacons le hérohéros venantà deson l'ancienne position. Nous le copions pour donner la valeur correctvenantcorrecte venant du background au fond de l'écran. Alors nous dessinons le personnage dans sa nouvelle position à l'écran.
>>> print screen
Ligne 81 ⟶ 77 :
[1, 1, 8, 2, 2, 1]
 
Le hérohéros a bougé vers la gauche. Nous pouvons utiliser le même code pour le rebouger à gauche.
>>> screen[playerpos] = background[playerpos]
Ligne 89 ⟶ 85 :
[1, 8, 2, 2, 2, 1]
 
Excellent, bien que ça ne soit pas exactement ce que l'on peut appeller "animation". Mais avec de petits changements, nous allons faire le travail directementavecdirectement avec les graphiques à l'écran.
 
Définition de "blit"