Comment créer un jeu 2D avec Python et la bibliothèque Arcade

Python est un langage exceptionnel pour les personnes qui apprennent à programmer, et parfait pour tous ceux qui veulent « faire des choses » et ne pas passer des tas de temps sur le code standard. Arcade est une bibliothèque Python pour créer des jeux vidéo 2D qui est facile à utiliser, et très capable que vous gagnez de l’expérience. Dans cet article, je vais vous expliquer comment commencer à utiliser Python et Arcade pour programmer des jeux vidéo.

j’ai commencé le développement sur Arcade après avoir enseigné aux étudiants à l’aide de la bibliothèque PyGame., J’ai enseigné en personne en utilisant PyGame pendant près de 10 ans, et j’ai développé ProgramArcadeGames.com pour enseigner en ligne. PyGame est génial, mais finalement, j’ai eu l’impression de perdre du temps à couvrir les bugs qui n’ont jamais été corrigés.

je m’inquiétais d’enseigner des choses comme la boucle d’événements, qui n’était plus la façon dont nous codons. J’avais toute une section dans laquelle j’expliquais pourquoi les coordonnées y étaient inversées. Parce que PyGame était rarement mis à jour et qu’il est basé sur une ancienne bibliothèque SDL 1, plutôt que sur quelque chose de plus moderne comme OpenGL, Je n’avais pas beaucoup d’espoir pour L’avenir.,

je voulais une bibliothèque plus facile à utiliser, plus puissante et utilisant certaines des nouvelles fonctionnalités de Python 3, comme les décorateurs et le type-hinting. Arcade est-il. Et c’est la façon de commencer.

Installation

Arcade, comme beaucoup d’autres paquets, est disponible via PyPi, ce qui signifie que vous pouvez installer Arcade en utilisant la commandepip (ou la commande pipenv)., Si vous avez déjà installé Python, vous pouvez probablement ouvrir une invite de commande sous Windows et taper:

pip install arcade

ou sous MacOS et Linux tapez:

pip3 install arcade

pour des instructions d’installation plus détaillées, vous pouvez vous référer à la documentation D’installation D’Arcade.

Simple dessin

Vous pouvez ouvrir une fenêtre et créer des dessins simples avec seulement quelques lignes de code. Créons un exemple qui dessine un visage souriant comme la figure ci-dessous:

le script ci-dessous montre comment vous pouvez utiliser les commandes de dessin D’Arcade pour ce faire., Notez que vous n’avez pas besoin de savoir comment utiliser les classes ou même définir des fonctions. La programmation avec un retour visuel rapide est idéale pour tous ceux qui veulent commencer à apprendre à programmer.

utiliser des fonctions

bien sûr, écrire du code dans le contexte global n’est pas une bonne forme. Heureusement, l’amélioration de votre programme en utilisant des fonctions est facile. Ici, nous pouvons voir un exemple de dessin d’un PIN à un emplacement spécifique (x, y) en utilisant une fonction:

pour L’exemple complet, Voir dessin avec des fonctions.,

le programmeur le plus expérimenté saura que les programmes graphiques modernes chargent d’abord les informations de dessin sur la carte graphique, puis demandent à la carte graphique de les dessiner plus tard sous forme de lot. Arcade prend également en charge cela. Dessiner 10 000 rectangles individuellement prend environ 0,800 seconde. Les dessiner sous forme de lot prend moins de 0,001 seconde.

la classe Window

Les programmes plus grands dérivent généralement de la classe Window ou utilisent des décorateurs. Cela permet à un programmeur d’écrire du code pour gérer le dessin, la mise à jour et la gestion des entrées de l’utilisateur., Un modèle pour un démarrage d’un programme basé sur Windowest ci-dessous.

la classe Window a plusieurs méthodes que vos programmes peuvent remplacer pour fournir des fonctionnalités au programme. Voici quelques-uns des plus couramment utilisés:

  • on_draw: Tout le code pour dessiner à l’écran va ici.
  • update: tout le code pour déplacer vos éléments et effectuer la logique de jeu va ici. Ceci est appelé environ 60 fois par seconde.,
  • on_key_press: Gérer les événements lorsqu’une touche est enfoncée, comme donner une vitesse à un joueur.
  • on_key_release: Handle lorsqu’une touche est relâchée, ici vous pouvez empêcher un joueur de se déplacer.
  • on_mouse_motion: ceci est appelé chaque fois que la souris se déplace.
  • on_mouse_press: Appelé lorsqu’un bouton de la souris est enfoncé.
  • set_viewport: cette fonction est utilisée dans les jeux à défilement, lorsque vous avez un monde beaucoup plus grand que ce qui peut être vu sur un écran., Appeler set_viewport permet à un programmeur de définir quelle partie de ce monde est actuellement visible.

Sprites

les Sprites sont un moyen facile de créer un 2D bitmap objet de l’Arcade. Arcade a des méthodes qui facilitent le dessin, le déplacement et l’animation des sprites. Vous pouvez également facilement utiliser des sprites pour détecter les collisions entre objets.

créer un sprite

créer une instance de la classe Sprite D’Arcade à partir d’un graphique est facile. Un programmeur n’a besoin que du nom de fichier d’une image pour baser le sprite, et éventuellement d’un nombre pour redimensionner l’image vers le haut ou vers le bas., Par exemple:

SPRITE_SCALING_COIN = 0.2
coin = arcade.Sprite("coin_01.png", SPRITE_SCALING_COIN)

ce code créera un sprite en utilisant l’image stockée dans coin_01.png. L’image sera réduite à 20% de sa hauteur et de sa largeur d’origine.

listes de sprites

les Sprites sont normalement organisés en listes. Ces listes facilitent la gestion des sprites. Les Sprites dans une liste utiliseront OpenGL pour dessiner par lots les sprites en tant que groupe. Le code ci-dessous met en place un jeu avec un joueur, et un tas de pièces pour le joueur de recueillir. Nous utilisons deux listes, une pour le joueur et une pour les pièces.,

Nous pouvons dessiner facilement toutes les pièces de monnaie dans les listes de pièces:

def on_draw(self):
""" Draw everything """
arcade.start_render()
self.coin_list.draw()
self.player_list.draw()

la Détection de sprite collisions

La fonction check_for_collision_with_list nous permet de voir si un sprite s’exécute dans un autre sprite dans une liste. Nous pouvons l’utiliser pour voir toutes les pièces avec lesquelles le sprite du Joueur est en contact. En utilisant une simple bouclefor, nous pouvons nous débarrasser de la pièce du jeu et augmenter notre score.

Pour l’exemple complet, consultez collect_coins.py.

la physique du Jeu

Beaucoup de jeux sont une sorte de physique., Les plus simples sont les programmes descendants qui empêchent le joueur de marcher à travers les murs. Les plates-formes ajoutent plus de complexité avec la gravité et les plates-formes qui se déplacent. Certains jeux utilisent un moteur physique 2D complet avec masse, friction, ressorts, et plus encore.

Top-down games

pour les jeux simples basés sur le top-down, UN programme D’Arcade a besoin d’une liste de murs que le joueur (ou toute autre chose) ne peut pas traverser. J’appelle généralement ceci wall_list., Ensuite, un moteur physique est créé dans le Window de la classe de code de configuration avec:

self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list)

Le player_sprite est donné un vecteur de mouvement avec ses deux attributs de la balise change_x et change_y. Un exemple simple de faire cela serait d’avoir le joueur se déplacer avec le clavier. Par exemple, cela peut être dans l’enfant personnalisé de la classe Window:

bien que ce code définisse la vitesse du lecteur, il ne déplace pas le lecteur., Dans la méthode update de la classe Window, appeler physics_engine.update() déplacera le lecteur, mais pas à travers les murs.

def update(self, delta_time):
""" Movement and game logic """
self.physics_engine.update()

Pour un exemple complet voir sprite_move_walls.py.

Platformers

Déplaçant à une vue de côté jeu de plateforme est plutôt facile. Un programmeur a juste besoin de passer le moteur physique à PhysicsEnginePlatformer et d’ajouter la constante de gravité.

self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite,
self.wall_list,
gravity_constant=GRAVITY)

Vous pouvez utiliser un programme comme le Carrelage à poser les carreaux/blocs qui composent votre niveau.

Pour un exemple, voir sprite_tiled_map.,py.

pour la physique 2D complète, vous pouvez intégrer la bibliothèque PyMunk.

Apprendre par l’exemple

l’Une des meilleures façons d’apprendre, c’est par l’exemple. La bibliothèque D’Arcade a une longue liste d’exemples de programmes sur lesquels une personne peut s’appuyer pour créer des jeux. Ces exemples montrent chacun un concept de jeu que les élèves ont demandé dans mes classes ou en ligne au fil des ans.

L’exécution de l’une de ces démos est facile une fois Arcade a été installé., Chacun des exemples a un commentaire au début du programme avec une commande que vous pouvez taper sur la ligne de commande pour exécuter l’exemple, par exemple:

python -m arcade.examples.sprite_moving_platforms

résumé

Arcade vous permet de commencer à programmer des graphiques et des jeux avec un code facile à comprendre. Beaucoup de nouveaux programmeurs ont créé de grands jeux peu de temps après avoir commencé. Essayez-le!

pour en savoir plus, assistez à la conférence de Paul Vincent Craven, Easy 2D game Creation With Arcade, au PyCon Cleveland 2018.

Share

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *