Bibliothèque Pymunk

Qu’est-ce qu’une bibliothèque en programmation ?

 

En informatique, une bibliothèque logicielle est une collection de routines, qui peuvent être déjà compilées et prêtes à être utilisées par des programmes.

Les bibliothèques sont enregistrées dans des fichiers semblables, voire identiques aux fichiers de programmes

Les bibliothèques sont apparues dans les années 1950, et sont devenues un sujet incontournable de programmation.

Elles sont utilisées pour réaliser des interfaces de programmation, des framework, des plugins ainsi que des langages de programmation.

Les bibliothèques sont manipulées par l'éditeur de lien et le système d'exploitation.

 

 

Pymunk, c’est quoi ? à quoi sert-elle ?

 

Pymunk est une bibliothèque de moteur de jeux physique 2d pythonic(pour langage python) et qui peut être utilisée quand vous avez besoin de la physique 2d d’objet « rigide » .

Il peut générer un semblant de gravité et d’action lors d’une collision(contacte entre 2 object créés auparavant).

La première version a été sortie en 2007 et Pymunk est encore actif aujourd’hui par de la maintenance.

Mais ce n’est qu’une simple traduction de chipmunk pour l’utilisation en python.

Pymunk a été utilisé avec le succès dans beaucoup de projets, grands et petits voir les exemples de récompense pour innovation via pymunk.

 

 

Comment peut-on se le procurer ?

 

En ouvrant votre invite de commande vous pouvez alors installer cette librairie par la commande ci-dessous et «appeler » l’installeur pip de python qui permet d’installer des librairies :

>       labelpip install pymunk

 

Voir url suivante en cas de soucis particulier:

http://www.pymunk.org/en/latest/installation.html

 

Et si votre ordinateur n’est pas dotés de pip veuillez exécuter la commande suivante :

>      sudo apt-get install python-pip

 

Résultat interne :

 

 

 

Pymunk et ses possibilités de jointure objet

 

 

Il y a 4 classes de jointures basiques que vous utiliserez dans Pymunk.

Corps Rigides

Un corps(organisme) rigide tient les propriétés physiques d'un objet. (La masse(messe), la position(le poste), la rotation, la vitesse, etc) Cela n'a pas de forme isolément. Si vous avez fait la physique avec des particules auparavant, des corps(organismes) rigides diffèrent surtout dans lequel ils peuvent tourner.

Des corps(organismes) rigides ont généralement tendance à avoir un 1:1 la corrélation aux elfes dans un jeu. Vous devriez structurer votre jeu pour que vous utilisiez la position(le poste) et la rotation du corps(de l'organisme) rigide pour dessiner(tirer) votre elfe.

Formes de Collision
En attachant des formes aux corps, vous pouvez définir la forme d'un corps. Vous pouvez attacher beaucoup de formes à un corps seul(simple) pour définir une forme complexe, ou aucun s'il n'exige pas de forme.

Contraintes/joints

Vous pouvez attacher des joints entre deux corps  pour contraindre leur comportement.

 

Espace/environnement

Les espaces sont l'unité de simulation de base dans Pymunk. Vous ajoutez des corps(organismes), des formes et des joints(articulations) à un espace et mettez ensuite à jour l'espace dans l'ensemble. Ils contrôlent comment tous les corps(organismes) rigides, des formes et des contraintes interagissent ensemble.
La simulation réelle est faite par l'Espace. Après l'ajout(addition) des objets qui devraient être simulés à l'Espace-temps est avancé dans de petits pas(étapes) avec le pymunk. Space.step () fonction.

 

 

 

Pymunk avantage multiple librairie et ses contraintes

 

 

AVANTAGES:

aucun traitement de mémoire(souvenir) et plus

Simple a installer - vous n’avez pas a faire beaucoup de tours de ligne de commande.
Multi-plate-forme Non-importun - Il ne devrait pas mettre des restrictions comment vous structurez votre programme et pas vous forcez à utiliser une boucle de jeu spéciale, il devrait être possible d'utiliser avec d'autres bibliothèques comme Pygame et Pyglet.

 

CONTRAINTES COURANTES:

Selon l'utilité voulu elle a souvent besoin d'autres librairies.

Python (Runs on CPython 2.7 and 3.X. )

Setuptools (should be included with Pip)

Pygame (should be included with Pip)

Pyglet (should be included with Pip)

Matplotlib (should be included with Pip)

Sphinx (optional, you need it to build documentation)

GCC  (compiler)

 

 

Annexes

https://pypi.org/

https://fr.wikipedia.org/wiki/Chipmunk

https://github.com/viblo/pymunk/blob/master/examples/bouncing_balls.py

http://www.pymunk.org/en/latest/installation.html

http://apprendre-python.com/page-pip-installer-librairies-automatiquement

 

 

 

\\//  Voir ci-dessous un Exemple d’utilisation \\//

Tout d’abord , Installation via pip

 

Pour procéder à cette méthode, assurez-vous de bien avoir installé la dépendance PIP. Pour les versions 3.4 et + de python, PIP est fourni dès l’installation de ce dernier. Pour les versions inférieures, je vous invite à l’installer par vos propres moyens où alors opter pour une autre méthode d’installation. Revenons donc à notre installation. Rendez-vous dans l’emplacement de votre exécutable python. Dans le dossier où se situe le programme python.exe, effectuez un Clic droit + shift et sélectionnez « ouvrir un invité de commande ici » . Ainsi dans l’invité de commande, tapez la commande suivante : « pip install pymunk »

 

Création d'un environnement de base

 

Avant toutes choses, nous allons initialiser un environnement de base : tout simplement une fenêtre Pygame rattachée à un espace physique géré par Pymunk

Nous commençons par importer les modules nécessaires au développement de notre projet.

import pygame

import pymunk

from pygame.locals import *

import Vec2d import pymunk.pygame_util

from pymunk import Vec2d

Nous créons ensuite une fenêtre basique de jeu avec Pygame ainsi qu'un espace physique avec Pymunk . Nous allons pouvoir dès lors définir une gravité pour notre espace physique qui affectera tous les objets rattachés à ce même espace physique .

 

pygame.init()

maFenetre= pygame.display.set_mode((1250,700))   # fenêtre de dimensions   1250X700

 

monEspacePhysique=pymunk.Space() # Création de l’objet représentant l’espace physique

monEspacePhysique.gravity=x,y  #On donne ici un couple de valeur à l’attribut gravity de notre objet monEspacePhysique

draw_options = pymunk.pygame_util.DrawOptions(maFenetre) #Permet l'affichage des objets Pymunk dans la fenêtre Pygame

Petit point sur le fonctionnement de la gravité. Nous voyons ici qu’un couple de deux valeurs est attendu. x représente la force de gravité horizontale. Ainsi, la gravité appliquera une force d’attraction vers la gauche pour tout objet se trouvant dans notre espace physique si x prend une valeur positive. Au contraire, ce sera une force d’attraction vers la droite si x prend une valeur négative.

Dans un même esprit, y représente la force de gravité verticale. Ce sera donc une force d’attraction vers le haut si y prend une valeur positive, et une force d’attraction vers le bas pour une valeur négative .

Par exemple, si nous voulons une gravité ressemblant à celle exercée sur Terre , nous ferions :

 

monEspacePhysique.gravity=0,-900

Nous allons ensuite intégrer une boucle élémentaire de jeu avec un évènement permettant à l’utilisateur de fermer le programme à l’aide de la croix rouge .

jeuEnCours=True # Tant que ce booléen est à True , on reste dans la boucle de jeu

 

while jeuEnCours :

for event in pygame.event.get() :

if event.type == QUIT :    # Si l’utilisateur clique sur la croix rouge

jeuEnCours=False

 

Pour finir avec les bases, il nous faut encore faire en sorte que l’affichage et l’état physique de nos futurs objets soient tous deux mise à jour à chaque tour de la boucle, bref à chaque fois que leurs propriétés changent durant le déroulement de notre programme.

 

# mise à jour des aspects physiques et de l’affichage des objets Pymunk

dt = 1.0 / 60.0 / 5.

for x in range(5):

monEspacePhysique.step(dt)

maFenetre.fill(0) # On nettoie la fenêtre pygame a chaque tour de boucle

monEspacePhysique.debug_draw(draw_options)

 

#mise à jour de l’affichage des éléments Pygame

pygame.display.flip

pygame.time.Clock().tick(60) #On fixe à 60 , le nombre de rafraichissement par seconde

 

 

 

 

Laisser un commentaire

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