Outils pour utilisateurs

Outils du site


issue173:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
issue173:python [2021/09/26 11:03] – créée auntieeissue173:python [2021/10/03 17:09] (Version actuelle) andre_domenech
Ligne 1: Ligne 1:
-My adult son (35 years old) is a network administrator for the company he works for. He works with a huge amount of servers – handling all the network needs of his company and their employees. I started teaching him about computers when he was 10 years old. He (with a very little bit of help from me) built his first computer from a motherboard, hard drive, two floppy drives and a video card. At that point, I was selling custom-built computers and he did all the basic building with the exception of the CPU and memory boards. He is also an avid gamer. Back when he was 10, I was the mean old dad who wouldn’t let him have a game console (I think it was a Nintendo) because most of the games he wanted to play, he could play on his computer. For a couple of years, it really didn’t sink into his brain, but he was partially placated as long as I would provide more and more complicated games as he grew in his skills. I, on the other hand, never really was able to play the games that he enjoyed. The game controller(s) confused me, and I never could figure out which darn button to press when. +**My adult son (35 years old) is a network administrator for the company he works for. He works with a huge amount of servers – handling all the network needs of his company and their employees. I started teaching him about computers when he was 10 years old. He (with a very little bit of help from me) built his first computer from a motherboard, hard drive, two floppy drives and a video card. At that point, I was selling custom-built computers and he did all the basic building with the exception of the CPU and memory boards. He is also an avid gamer. Back when he was 10, I was the mean old dad who wouldn’t let him have a game console (I think it was a Nintendo) because most of the games he wanted to play, he could play on his computer. For a couple of years, it really didn’t sink into his brain, but he was partially placated as long as I would provide more and more complicated games as he grew in his skills. I, on the other hand, never really was able to play the games that he enjoyed. The game controller(s) confused me, and I never could figure out which darn button to press when. 
-(Thanks to https://www.bestproducts.com/tech/gadgets/g821/best-pc-game-controllers/ for the image above.)+(Thanks to https://www.bestproducts.com/tech/gadgets/g821/best-pc-game-controllers/ for the image above.)**
  
-I admit it. When it comes to game controllers, I’m a klutz. Even those games that can be played on the computer keyboard, I’m horrible at. Up until a couple of years ago, if you gave me a guitar, I could pick and chord with almost anyone who wasn’t a professional. But hand me a game controller, and I’d put it back on the table as fast as I could.+Mon fils adulte (35 ans) est administrateur de réseau pour la société pour laquelle il travaille. Il travaille avec un grand nombre de serveurs et répond à tous les besoins de son entreprise et des employés en matière de réseau. J'ai commencé à lui enseigner l'informatique lorsqu'il avait 10 ans. Il a (avec un tout petit peu d'aide de ma part) construit son premier ordinateur à partir d'une carte mère, d'un disque dur, de deux lecteurs de disquettes et d'une carte vidéo. À cette époque, je vendais des ordinateurs sur mesure et c'est lui qui s'est chargé de la construction de base, à l'exception des cartes CPU et mémoire. Il est également un joueur passionné. Quand il avait 10 ans, j'étais le vieux père méchant qui ne voulait pas le laisser avoir une console de jeu (je crois que c'était une Nintendo) parce que, pour  la plupart des jeux auxquels il voulait jouer, il pouvait le faire sur son ordinateur. Pendant quelques années, il ne s'est pas vraiment rendu compte de la situation, mais il était partiellement apaisé tant que je lui fournissais des jeux de plus en plus compliqués au fur et à mesure qu'il devenait plus habile. De mon côté, je n'ai jamais vraiment pu jouer aux jeux qu'il appréciait. La ou les manettes de jeu me déroutaient et je n'arrivais jamais à savoir sur quel bouton il fallait appuyer. 
 +(Merci à https://www.bestproducts.com/tech/gadgets/g821/best-pc-game-controllers/ pour l'image ci-dessus). 
 + 
 +**I admit it. When it comes to game controllers, I’m a klutz. Even those games that can be played on the computer keyboard, I’m horrible at. Up until a couple of years ago, if you gave me a guitar, I could pick and chord with almost anyone who wasn’t a professional. But hand me a game controller, and I’d put it back on the table as fast as I could.
  
 I’ve wanted to do an article on creating games in Python for a long time, and, a few months ago (FCM168 part 116 April 2021), I showed a simple text based game when I talked about Pattern Matching coming up in Python 3.10. Text based games, I can pretty much play. I also remember talking about PyGame many, many years ago. FINALLY I get to start talking about (as my son would say) REAL games, with graphics and everything. I’m talking about the Arcade library for Python. I’ve wanted to do an article on creating games in Python for a long time, and, a few months ago (FCM168 part 116 April 2021), I showed a simple text based game when I talked about Pattern Matching coming up in Python 3.10. Text based games, I can pretty much play. I also remember talking about PyGame many, many years ago. FINALLY I get to start talking about (as my son would say) REAL games, with graphics and everything. I’m talking about the Arcade library for Python.
  
-Before we get into actually using and installing Arcade, we need to discuss virtual environments.+Before we get into actually using and installing Arcade, we need to discuss virtual environments.**
  
-Virtual Environments+Je l'avoue. Quand il s'agit de manettes de jeux, je suis un empoté. Je suis nul, même aux jeux qui peuvent être joués sur un clavier d'ordinateur. Jusqu'à il y a quelques années, si vous me donniez une guitare, je pouvais jouer et faire des accords avec presque n'importe quel non-professionnel. Mais si vous me donnez une manette de jeu, je la repose sur la table aussi vite que je peux. 
 + 
 +Cela fait longtemps que je voulais faire un article sur la création de jeux en Python et, il y a quelques mois (FCM168 partie 116 avril 2021), j'ai montré un jeu simple basé sur du texte lorsque j'ai parlé de la correspondance de motifs qui arrive dans Python 3.10. Les jeux en mode texte, je peux y jouer. Je me souviens aussi d'avoir parlé de PyGame il y a de nombreuses années. ENFIN, je peux commencer à parler (comme mon fils le dirait) de VRAIS jeux, avec des graphismes et tout le reste. Je parle de la bibliothèque Arcade pour Python. 
 + 
 +Avant d'aborder l'utilisation et l'installation d'Arcade, nous devons parler des environnements virtuels. 
 + 
 +**Virtual Environments
  
 We all know that Python uses pip to install libraries (unless you are using Anaconda and then you usually use Conda). However, many times a package you want to try out or develop with will have dependencies that conflict with packages that you already have installed. Often you won’t know that there are problems until something fails. Python, pyenv and Anaconda all provide virtual environments to get around this issue. Basically, when you create a virtual environment, you get a clean version of Python with just the bare minimum packages installed. I’ll show how to set up a virtual environment for pyenv and Python. If you use Anaconda, it’s easy to find the steps with a simple web search. We all know that Python uses pip to install libraries (unless you are using Anaconda and then you usually use Conda). However, many times a package you want to try out or develop with will have dependencies that conflict with packages that you already have installed. Often you won’t know that there are problems until something fails. Python, pyenv and Anaconda all provide virtual environments to get around this issue. Basically, when you create a virtual environment, you get a clean version of Python with just the bare minimum packages installed. I’ll show how to set up a virtual environment for pyenv and Python. If you use Anaconda, it’s easy to find the steps with a simple web search.
Ligne 23: Ligne 32:
  
 Decide what version of Python you want to use for the virtual environment. For this project, I’m going to use 3.7.9 . Set the version for this folder. Decide what version of Python you want to use for the virtual environment. For this project, I’m going to use 3.7.9 . Set the version for this folder.
 +
 +$ pyenv local 3.7.9**
 +
 +Environnements virtuels
 +
 +Nous savons tous que Python utilise pip pour installer les bibliothèques (à moins que vous n'utilisiez Anaconda, auquel cas vous utilisez généralement Conda). Cependant, il arrive souvent qu'un paquet que vous voulez essayer ou utiliser pour le développement ait des dépendances qui entrent en conflit avec des paquets que vous avez déjà installés. Souvent, vous ne saurez pas qu'il y a des problèmes jusqu'à ce que quelque chose échoue. Python, pyenv et Anaconda fournissent tous des environnements virtuels pour contourner ce problème. En gros, lorsque vous créez un environnement virtuel, vous obtenez une version propre de Python avec juste le strict minimum de paquets installés. Je vais vous montrer comment configurer un environnement virtuel pour pyenv et Python. Si vous utilisez Anaconda, il est facile de trouver les étapes avec une simple recherche sur le Web.
 +
 +Pyenv
 +
 +Si vous utilisez pyenv, il est très facile de mettre en place un environnement virtuel et de le faire fonctionner. Voici les étapes à suivre.
 +
 +Créez un dossier pour votre environnement virtuel et accédez-y. Par exemple :
 +
 +$ mkdir Pyenv-Virt1
 +
 +$ cd Pyenv-Virt1
 +
 +Décidez de la version de Python que vous voulez utiliser pour l'environnement virtuel. Pour ce projet, je vais utiliser la version 3.7.9. Définissez la version pour ce dossier.
  
 $ pyenv local 3.7.9 $ pyenv local 3.7.9
  
-Create the virtual environment and name it. You can name it pretty much anything you want. I like to preface the name with “venv” so I can easily remember it.+**Create the virtual environment and name it. You can name it pretty much anything you want. I like to preface the name with “venv” so I can easily remember it.
  
 $ pyenv virtualenv 3.7.9 venv379 $ pyenv virtualenv 3.7.9 venv379
Ligne 39: Ligne 66:
  
 Activate the virtual environment and do a pip list to verify it’s brand new. Activate the virtual environment and do a pip list to verify it’s brand new.
 +
 +$ pyenv activate venv379
 +
 +pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
 +
 +(venv379) greg@earth:~/Desktop/Pyenv-Virt1$ 
 +
 +(venv379) greg@earth:~/Desktop/Pyenv-Virt1$ pip list
 +
 +Package    Version
 +---------- -------
 +pip        21.2.4
 +
 +setuptools 47.1.0
 +
 +(venv379) greg@earth:~/Desktop/Pyenv-Virt1$**
 +
 +Créez l'environnement virtuel et donnez-lui un nom. Vous pouvez lui donner à peu près le nom que vous voulez. J'aime faire précéder le nom de « venv » pour pouvoir m'en souvenir facilement.
 +
 +$ pyenv virtualenv 3.7.9 venv379
 +
 +Looking in links: /tmp/tmplwbkpo45
 +
 +Requirement already satisfied: setuptools in /home/greg/.pyenv/versions/3.7.9/envs/venv379/lib/python3.7/site-packages (47.1.0)
 +
 +Requirement already satisfied: pip in /home/greg/.pyenv/versions/3.7.9/envs/venv379/lib/python3.7/site-packages (20.1.1)
 +
 +greg@earth:~/Desktop/Pyenv-Virt1$
 +
 +Activez l'environnement virtuel et faites un pip list pour vérifier qu'il est tout neuf.
  
 $ pyenv activate venv379 $ pyenv activate venv379
Ligne 56: Ligne 113:
 (venv379) greg@earth:~/Desktop/Pyenv-Virt1$ (venv379) greg@earth:~/Desktop/Pyenv-Virt1$
  
-Notice that your terminal prompt has changed. This verifies that you are in a virtual environment. After this, you can install whatever packages you want. When you are done, deactivate the virtual environment with pyenv deactivate. Your prompt will return to normal.+**Notice that your terminal prompt has changed. This verifies that you are in a virtual environment. After this, you can install whatever packages you want. When you are done, deactivate the virtual environment with pyenv deactivate. Your prompt will return to normal.
  
 Python Python
Ligne 71: Ligne 128:
  
 Make sure that your python installation has the virtual environment library installed. Do a pip install virtualenv . Make sure that your python installation has the virtual environment library installed. Do a pip install virtualenv .
 +
 +greg@earth:~/Desktop/Python-Virt1$ pip install virtualenv**
 +
 +Notez que l'invite de votre terminal a changé, ce qui vérifie que vous êtes dans un environnement virtuel. Après cela, vous pouvez installer tous les paquets que vous voulez. Lorsque vous avez terminé, désactivez l'environnement virtuel avec pyenv deactivate. Votre invite revient à la normale.
 +
 +Python
 +
 +Créez un nouveau dossier pour votre environnement virtuel et changez de répertoire. Appelez-le comme vous le souhaitez.
 +
 +greg@earth:~$ cd /home/greg/Desktop
 +
 +greg@earth:~/Desktop$ mkdir Python-Virt1
 +
 +greg@earth:~/Desktop$ cd Python-Virt1
 +
 +greg@earth:~/Desktop/Python-Virt1$ 
 +
 +Assurez-vous que la bibliothèque d'environnement virtuel est installée sur votre installation python. Faites un pip install virtualenv.
  
 greg@earth:~/Desktop/Python-Virt1$ pip install virtualenv greg@earth:~/Desktop/Python-Virt1$ pip install virtualenv
  
-Collecting virtualenv+**Collecting virtualenv
  
   Downloading virtualenv-20.7.2-py2.py3-none-any.whl (5.3 MB)   Downloading virtualenv-20.7.2-py2.py3-none-any.whl (5.3 MB)
-     |████████████████████████████████| 5.3 MB 2.6 MB/s +     |████████████████████████████████| 5.3 MB 2.6 MB/s
  
 Requirement already satisfied: importlib-metadata>=0.12 in /home/greg/.pyenv/versions/3.7.9/lib/python3.7/site-packages (from virtualenv) (4.6.3) Requirement already satisfied: importlib-metadata>=0.12 in /home/greg/.pyenv/versions/3.7.9/lib/python3.7/site-packages (from virtualenv) (4.6.3)
Ligne 100: Ligne 175:
  
 (env) greg@earth:~/Desktop/Python-Virt1$ deactivate (env) greg@earth:~/Desktop/Python-Virt1$ deactivate
 +
 +greg@earth:~/Desktop/Python-Virt1$ **
 +
 +Collecting virtualenv
 +
 +  Downloading virtualenv-20.7.2-py2.py3-none-any.whl (5.3 MB)
 +     |████████████████████████████████| 5.3 MB 2.6 MB/s
 +
 +Requirement already satisfied: importlib-metadata>=0.12 in /home/greg/.pyenv/versions/3.7.9/lib/python3.7/site-packages (from virtualenv) (4.6.3)
 +...
 +Successfully installed backports.entry-points-selectable-1.1.0 distlib-0.3.2 filelock-3.0.12 platformdirs-2.3.0 six-1.16.0 virtualenv-20.7.2
  
 greg@earth:~/Desktop/Python-Virt1$  greg@earth:~/Desktop/Python-Virt1$ 
  
-Installing Arcade+Créez votre environnement virtuel avec : 
 + 
 +python -m venv env 
 + 
 +Cela va créer un dossier env. Vous pouvez maintenant activer votre environnement virtuel. 
 + 
 +greg@earth:~/Desktop/Python-Virt1$ source env/bin/activate 
 + 
 +(env) greg@earth:~/Desktop/Python-Virt1$  
 + 
 +Tout comme pyenv change l'invite du terminal, l'environnement virtuel Python « normal » le fait aussi. 
 + 
 +Pour désactiver l'environnement virtuel Python, il suffit d'utiliser la commande deactivate. 
 + 
 +(env) greg@earth:~/Desktop/Python-Virt1$ deactivate 
 + 
 +greg@earth:~/Desktop/Python-Virt1$ 
 + 
 +**Installing Arcade
  
 Now that we have our virtual environment set up, we can finally install the Arcade package. Remember to activate the environment. For the purposes of this article, I’ll be using the “standard” Python virtual environment rather than the pyenv version. Now that we have our virtual environment set up, we can finally install the Arcade package. Remember to activate the environment. For the purposes of this article, I’ll be using the “standard” Python virtual environment rather than the pyenv version.
Ligne 113: Ligne 217:
 If everything goes well, your next step will be to download the platformer tutorial. You can find it at https://github.com/pythonarcade/arcade. I suggest that you get the entire repository by using the download zip option. Once you have the repository downloaded, unpack it and navigate to the tutorial which is located within the repository at /arcade/examples/platform_tutorial. Copy the entire folder into the folder you have set up for your virtual environment. Finally, using a terminal window, change to your virtual environment and then into the platform_tutorial folder. If everything goes well, your next step will be to download the platformer tutorial. You can find it at https://github.com/pythonarcade/arcade. I suggest that you get the entire repository by using the download zip option. Once you have the repository downloaded, unpack it and navigate to the tutorial which is located within the repository at /arcade/examples/platform_tutorial. Copy the entire folder into the folder you have set up for your virtual environment. Finally, using a terminal window, change to your virtual environment and then into the platform_tutorial folder.
  
-You should see about 17 files in your folder. There is an entire tutorial that walks through most of these files at https://api.arcade.academy/en/latest/examples/platform_tutorial/index.html. Each step in the tutorial is centered around one of the source files. Instead of just pointing you to the tutorial and telling you to learn completely on your own, I’ll attempt to distill some of the information by looking at the first two provided program source code files. We’ll start off by looking at the very first file 01_open_window.py.+You should see about 17 files in your folder. There is an entire tutorial that walks through most of these files at https://api.arcade.academy/en/latest/examples/platform_tutorial/index.html. Each step in the tutorial is centered around one of the source files. Instead of just pointing you to the tutorial and telling you to learn completely on your own, I’ll attempt to distill some of the information by looking at the first two provided program source code files. We’ll start off by looking at the very first file 01_open_window.py.**
  
-This file is a skeleton that creates a simple window and sets the background color. It provides you a nice starting point for creating your own games.+Installation d'Arcade 
 + 
 +Maintenant que notre environnement virtuel est configuré, nous pouvons enfin installer le paquet Arcade. N'oubliez pas d'activer l'environnement. Pour les besoins de cet article, je vais utiliser l'environnement virtuel Python « standard » plutôt que la version pyenv. 
 + 
 +Utilisez pip pour installer Arcade dans votre environnement virtuel. 
 + 
 +$ pip install arcade 
 + 
 +Si tout se passe bien, votre prochaine étape sera de télécharger le tutoriel de plateforme. Vous pouvez le trouver à l'adresse https://github.com/pythonarcade/arcade. Je vous suggère d'obtenir le dépôt complet en utilisant l'option download zip. Une fois que vous avez téléchargé le dépôt, décompressez-le et accédez au tutoriel qui s'y trouve à l'adresse /arcade/examples/platform_tutorial. Copiez l'ensemble du dossier dans le dossier que vous avez créé pour votre environnement virtuel. Enfin, à l'aide d'une fenêtre de terminal, passez dans votre environnement virtuel, puis dans le dossier platform_tutorial. 
 + 
 +Vous devriez voir environ 17 fichiers dans le dossier. Il existe un tutoriel complet qui traite de la plupart de ces fichiers à l'adresse https://api.arcade.academy/en/latest/examples/platform_tutorial/index.html. Chaque étape du tutoriel est centrée sur l'un des fichiers source. Au lieu de vous indiquer le tutoriel et de vous dire d'apprendre par vous-même, je vais essayer de distiller certaines informations en examinant les deux premiers fichiers de code source fournis. Nous allons commencer par examiner le tout premier fichier 01_open_window.py. 
 + 
 +**This file is a skeleton that creates a simple window and sets the background color. It provides you a nice starting point for creating your own games.
  
 import arcade import arcade
Ligne 130: Ligne 246:
 $ python 01_open_window.py $ python 01_open_window.py
  
-You will have to click the x in the title bar or do a <ctrl> c in the terminal to close the window.+You will have to click the x in the title bar or do a <ctrl> c in the terminal to close the window.**
  
-We will need to add some code in order to make the program show something other than just a pretty blue backgroundIn your IDE or text editor, open the file 02_draw_sprites.py . This file is an expansion of the skeleton that we just ran. Between the constants at the top of the source code and the beginning of the class, you’ll see the following additional lines…+Ce fichier est un squelette qui crée une fenêtre simple et définit sa couleur de fondIl vous fournit un bon point de départ pour créer vos propres jeux.
  
-# Constants used to scale our sprites from their original size+import arcade 
 + 
 +# Constants 
 +SCREEN_WIDTH = 1000 
 +SCREEN_HEIGHT = 650 
 +SCREEN_TITLE = "Platformer" 
 + 
 +Comme vous pouvez le voir, la fenêtre aura une largeur de 1 000 pixels et une hauteur de 650 pixels et portera le titre Platformer (Plateforme). C'est assez simple. La prochaine chose à faire est de créer une classe Python qui contiendra votre vrai jeu. Vous pouvez voir que la fonction __init__ contient le code qui définit le véritable écran et la couleur de fond et que la fonction setup démarre/redémarre le jeu. 
 + 
 +Lorsque vous exécutez le programme squelette, vous verrez une fenêtre s'ouvrir avec un fond d'un bleu bleuet. 
 + 
 +$ python 01_open_window.py 
 + 
 +Vous devrez cliquer sur le x dans la barre de titre ou faire un <ctrl> c dans le terminal pour fermer la fenêtre. 
 + 
 +**We will need to add some code in order to make the program show something other than just a pretty blue background. In your IDE or text editor, open the file 02_draw_sprites.py . This file is an expansion of the skeleton that we just ran. Between the constants at the top of the source code and the beginning of the class, you’ll see the following additional lines… 
 + 
 +# Constants used to scale our sprites from their original size 
  
 CHARACTER_SCALING = 1 CHARACTER_SCALING = 1
Ligne 143: Ligne 276:
 These lines set the scaling for both the character sprite and the tiles. In the class, some code has been added to the class that sets up the character and some props. Between the super().__init__ line and the arcade.set_background_color line, you will see the following lines… These lines set the scaling for both the character sprite and the tiles. In the class, some code has been added to the class that sets up the character and some props. Between the super().__init__ line and the arcade.set_background_color line, you will see the following lines…
  
-# These are 'lists' that keep track of our sprites. Each sprite should+# These are 'lists' that keep track of our sprites. Each sprite should (Voici des « listes » qui gardent un suivi de nos sprites) 
 + 
 +# go into a list. (entrer dans une liste) 
 + 
 +self.wall_list = None 
 + 
 +self.player_list = None** 
 + 
 +Il faut ajouter un peu de code pour que le programme affiche autre chose qu'un joli fond bleu. Dans votre IDE ou votre éditeur de texte, ouvrez le fichier 02_draw_sprites.py. Ce fichier est une expansion du squelette que nous venons d'exécuter. Entre les constantes en haut du code source et le début de la classe, vous verrez les lignes supplémentaires suivantes : 
 + 
 +# Constants used to scale our sprites from their original size (Les constantes utilisées pour redimensionner nos sprites à partir de leur taille originale) 
 + 
 + 
 +CHARACTER_SCALING = 1 
 + 
 +TILE_SCALING = 0.5 
 + 
 + 
 +Ces lignes définissent la mise à l'échelle à la fois pour le sprite du personnage et pour les tuiles. Dans la classe, du code a été ajouté à la classe qui met en place le personnage et certains accessoires. Entre la ligne super().__init__ et la ligne arcade.set_background_color, vous verrez les lignes suivantes : 
 + 
 +# These are 'lists' that keep track of our sprites. Each sprite should (Voici des « listes » 
 + pour pouvoir suivre nos sprites. Chaque sprite devrait aller dans une liste.)
  
 # go into a list. # go into a list.
Ligne 152: Ligne 306:
  
  
-# Separate variable that holds the player sprite+**# Separate variable that holds the player sprite
  
 self.player_sprite = None self.player_sprite = None
Ligne 164: Ligne 318:
 self.wall_list = arcade.SpriteList(use_spatial_hash=True) self.wall_list = arcade.SpriteList(use_spatial_hash=True)
  
-The next part of the code is very important in that it creates the player sprite. The actual sprite image can be anything you like. To help new users along, the good people that created Arcade, included a few sprite images that you might need in the actual distribution package. If you look in your virtual environment at the /env/lib/pythonx/site-packages/arcade/resources/images folder, you will see a number of subfolders that include various images that are already set up for you. Getting back to the code, you can see that the image locations are referenced when each image is defined as an arcade.Sprite. First, the player sprite is created.+The next part of the code is very important in that it creates the player sprite. The actual sprite image can be anything you like. To help new users along, the good people that created Arcade, included a few sprite images that you might need in the actual distribution package. If you look in your virtual environment at the /env/lib/pythonx/site-packages/arcade/resources/images folder, you will see a number of subfolders that include various images that are already set up for you. Getting back to the code, you can see that the image locations are referenced when each image is defined as an arcade.Sprite. First, the player sprite is created.**
  
-Finally, the on_draw function of our class is modified by adding the following lines to the bottom of the function (after the start_render() call)...+# Separate variable that holds the player sprite (Variable séparée qui tient le sprite du joueur) 
 + 
 +self.player_sprite = None 
 + 
 +Comme vous pouvez le voir dans les commentaires, ceci définit deux listes, une pour le mur et une pour le joueur, et une variable pour l'image du sprite du joueur. 
 + 
 +# Create the Sprite lists 
 + 
 +self.player_list = arcade.SpriteList() 
 + 
 +self.wall_list = arcade.SpriteList(use_spatial_hash=True) 
 + 
 +La partie suivante du code est très importante, car elle crée le sprite du joueur. L'image réelle du sprite peut être ce que vous voulez. Pour aider les nouveaux utilisateurs, les personnes qui ont créé Arcade ont inclus dans le paquet de distribution quelques images de sprites dont vous pourriez avoir besoin. Si vous regardez dans votre environnement virtuel dans le dossier /env/lib/pythonx/site-packages/arcade/resources/images, vous verrez un certain nombre de sous-dossiers qui incluent diverses images déjà configurées pour vous. Pour en revenir au code, vous pouvez voir que les emplacements des images sont référencés lorsque chaque image est définie comme un arcade.Sprite. Tout d'abord, le sprite du joueur est créé. 
 + 
 +**Finally, the on_draw function of our class is modified by adding the following lines to the bottom of the function (after the start_render() call)...
  
 # Draw our sprites # Draw our sprites
Ligne 174: Ligne 342:
 While this doesn’t create anything but a static image, you can see that, with a bit of planning and forethought, it is fairly simple to get the basics of a game. When you run program 02_draw_sprites.py, you will see something that looks like this (bottom left) … While this doesn’t create anything but a static image, you can see that, with a bit of planning and forethought, it is fairly simple to get the basics of a game. When you run program 02_draw_sprites.py, you will see something that looks like this (bottom left) …
  
-You can work through the rest of the tutorial which will get you a very basic, somewhat playable game in the file 17_views.py . When you run it, it should look something like this (bottom right) …+You can work through the rest of the tutorial which will get you a very basic, somewhat playable game in the file 17_views.py . When you run it, it should look something like this (bottom right) …**
  
-There is another program you should consider downloading, which is a map editor. Step 9 of the tutorial gives you some basic instructions on using the map editor and where you can download it. They also give you a link to the documentation for the tile/map editor to help you along.+Enfin, la fonction on_draw de notre classe est modifiée en ajoutant les lignes suivantes au bas de la fonction (après l'appel start_render()) : 
 + 
 +# Draw our sprites (Dessiner nos sprites) 
 +self.wall_list.draw() 
 +self.player_list.draw() 
 + 
 +Bien que cela ne crée rien d'autre qu'une image statique, vous pouvez voir qu'avec un peu de préparation et de réflexion, il est assez simple d'obtenir les bases d'un jeu. Lorsque vous exécutez le programme 02_draw_sprites.py, vous voyez quelque chose qui ressemble à ce qui est montré en bas à gauche. 
 + 
 +Vous pouvez suivre le reste du tutoriel qui vous permettra d'obtenir un jeu très basique et un peu jouable dans le fichier 17_views.py . Lorsque vous l'exécutez, il devrait ressembler à quelque chose comme ce qui est présenté en bas à droite. 
 + 
 +**There is another program you should consider downloading, which is a map editor. Step 9 of the tutorial gives you some basic instructions on using the map editor and where you can download it. They also give you a link to the documentation for the tile/map editor to help you along.
  
 I will provide a zip file for all 17 source files of the tutorial code that you need to get started on my repository, but I strongly suggest that you download the arcade repository. There is a tremendous amount of sample files that will not only give you a large amount of information, but also should spark some inspiration for moving forward. You can find the code at my github repository at https://github.com/gregwa1953/FCM-173. I will provide a zip file for all 17 source files of the tutorial code that you need to get started on my repository, but I strongly suggest that you download the arcade repository. There is a tremendous amount of sample files that will not only give you a large amount of information, but also should spark some inspiration for moving forward. You can find the code at my github repository at https://github.com/gregwa1953/FCM-173.
  
-Until next time, as always; stay safe, healthy, positive and creative!+Until next time, as always; stay safe, healthy, positive and creative!** 
 + 
 +Il existe un autre programme que vous devriez envisager de télécharger, à savoir un éditeur de cartes. L'étape 9 du tutoriel vous donne des instructions de base sur l'utilisation de l'éditeur de cartes et vous indique où le télécharger. Elle vous donne également un lien vers la documentation de l'éditeur de tuiles et de cartes pour vous aider. 
 + 
 +Je fournirai sur mon dépôt un fichier zip pour les 17 fichiers sources du code du tutoriel dont vous avez besoin pour commencer, mais je vous suggère fortement de télécharger le dépôt d'Arcade. Il y a une quantité énorme d'exemples de fichiers qui, non seulement vous donneront une grande quantité d'informations, mais aussi devraient vous inspirer pour aller de l'avant. Vous pouvez trouver le code sur mon dépôt github à l'adresse https://github.com/gregwa1953/FCM-173. 
 + 
 +Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positif et créatif ! 
 + 
 + 
 +//Textes en noir dans les encadrés :// 
 +p. 16 : 
 +**The main function instantiates the class, calls the setup function and then the game runs.** 
 +La fonction principale instancie la classe, appelle la fonction setup, puis le jeu démarre. 
 + 
 +p 17 : 
 +**The ground that the character and any props are located is also set as a sprite.** 
 +Le sol, où sont placés le personnage et tous les accessoires, est aussi paramétré comme un sprite. 
 + 
 +**Then some crates are placed on the ground and added to the game object.** 
 +Puis quelques caisses sont placées sur le sol et ajoutées à l'objet game. 
  
issue173/python.1632646982.txt.gz · Dernière modification : 2021/09/26 11:03 de auntiee