Skip to content
This repository was archived by the owner on May 7, 2021. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added source/pygame/exemple/LecteurAudio.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
65 changes: 48 additions & 17 deletions source/pygame/exemple/mixerEx.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,60 @@
"""Exemple d'utilisation des modules pygame.event et pygame.mixer."""


"""Exemple d'utilisation: lecteur audio."""

import pygame
from pygame.locals import K_RETURN, K_SPACE, KEYDOWN, KEYUP, QUIT, RESIZABLE

pygame.init()
fenetre = pygame.display.set_mode((200, 200), RESIZABLE)
fenetre = pygame.display.set_mode((400, 300))
son = pygame.mixer.Sound("./exemple/Tinquen.wav")

continuer = True
joue = False
# definition de couleurs
red = (200, 0, 0)
green = (0, 200, 0)
bright_red = (255, 0, 0)
bright_green = (0, 255, 0)

# definition de texte
myFont = pygame.font.SysFont("monospace", 20)

continuer = 1
joue = 0
while continuer:
for event in pygame.event.get():
if event.type == QUIT:
continuer = False
elif event.type == KEYDOWN:
if event.key == K_SPACE:
if not joue:
son.play()
joue = True
else:
pygame.mixer.unpause()
elif event.key == K_RETURN:
continuer = 0

# on dessine 2 rectangles, qui nous serviront de boutons
pygame.draw.rect(fenetre, green, (50, 100, 100, 50))
pygame.draw.rect(fenetre, red, (250, 100, 100, 50))

# recuperation de la posision de la souris
mouse = pygame.mouse.get_pos()

# si la souris est dans les limites d'un rectangle, il s'illumine.
if 50 + 100 > mouse[0] > 50 and 100 + 50 > mouse[1] > 100:
# si on appuie, le son se lance
if event.type == pygame.MOUSEBUTTONDOWN:
son.play()
pygame.draw.rect(fenetre, bright_green, (50, 100, 100, 50))
else:
pygame.draw.rect(fenetre, green, (50, 100, 100, 50))

if 250 + 100 > mouse[0] > 250 and 100 + 50 > mouse[1] > 100:
if event.type == pygame.MOUSEBUTTONDOWN:
son.stop()
joue = False
elif event.type == KEYUP:
if event.key == K_SPACE:
pygame.mixer.pause()
pygame.draw.rect(fenetre, bright_red, (250, 100, 100, 50))
else:
pygame.draw.rect(fenetre, red, (250, 100, 100, 50))

# affichage du texte dans le bouton improvisé.
play = myFont.render("Play!", 1, (0, 0, 0))
fenetre.blit(play, (75, 100))

stop = myFont.render("Stop!", 1, (0, 0, 0))
fenetre.blit(stop, (275, 100))

pygame.display.update()

pygame.quit()
97 changes: 40 additions & 57 deletions source/pygame/index.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
.. _pygame-tutorial:

==========
``pygame``
==========
Pygame
======

.. image:: logo_pygame.png
:align: right
Expand All @@ -11,7 +8,7 @@
Par Dany Chea [#dc]_

Introduction
============
------------

Pygame est un module qui offre des outils permettant de créer des jeux.
Le module est lui-même subdivisé en plusieurs sous-modules, ce qui permet de ne pas appeler des modules qui seraient inutiles.
Expand All @@ -22,7 +19,7 @@ Liste des sous-modules de Pygame:
+------------------+------------------+-------------------+-------------------+
| `pygame.camera` | `pygame.cdrom` | `pygame.cursors` | `pygame.display` |
+------------------+------------------+-------------------+-------------------+
| `pygame.draw` | `pygame.event` | `pygame.examples` | `pygame.font` |
| `pygame.draw` | `pygame.event` |`pygame.examples` | `pygame.font` |
+------------------+------------------+-------------------+-------------------+
| `pygame.freetype`| `pygame.gfxdraw` | `pygame.image` | `pygame.joystick` |
+------------------+------------------+-------------------+-------------------+
Expand All @@ -35,89 +32,79 @@ Liste des sous-modules de Pygame:
| `pygame.test` | `pygame.time` | `pygame.transform`| `pygame.version` |
+------------------+------------------+-------------------+-------------------+

.. À quoi ça sert?

Indépendemment du jeu que l’on veut créer, sa réalisation passe nécessairement par cinq étapes:
Indépendemment du jeu que l’on veut créer, sa réalisation passe nécessairement par 5 étapes:

#. Initialisation de pygame
#. Appel des modules nécessaires
#. L’affichage
#. Boucle infinie
#. Fermeture du programme

Initialisation
--------------

l'initialisation:
-----------------
Afin de pouvoir utiliser le module Pygame, il va falloir d'abord l'importer, puis l'initier de la manière suivante:

.. code-block:: pycon
>>> import pygame
>>> pygame.init()

>>> import pygame
>>> pygame.init()


``pygame.locals``
^^^^^^^^^^^^^^^^^

pygame contient une quantité de constantes prédéfinies, qui sont chargées dans le namespace pygame, lors de l’importation de celui-ci. Ainsi, lorsque l’on veut utiliser une des constantes, il faut à chaque fois l’appeler en préfixant pygame. suivi du nom de la constante. Afin d’éviter ce préfixe, on peut faire une importation des constantes depuis :py:mod:`pygame.locals`, comme ci-dessous:

Pygame.locals:
--------------
Pygame contient une quantité de constantes prédéfinies, qui sont chargées dans le namespace pygame, lors de l’importation de celui-ci. Ainsi, lorsque l’on veut utiliser une des constantes, il faut à chaque fois l’appeler en préfixant pygame. suivi du nom de la constante. Afin d’éviter ce préfixe, on peut faire une importation des constantes depuis pygame.locals, comme ci-dessous:
.. code-block:: python
>>> from pygame.locals import *

>>> from pygame.locals import *

Appel des fonctions utiles
--------------------------

C’est dans cette partie que l’on va initialiser la fenêtre, ainsi que tout les éléments dont on aura besoin.
Appel des fonctions utiles:
---------------------------
c’est dans cette partie que l’on va initialiser la fenêtre, ainsi que tout les éléments dont on aura besoin.

par exemple, pour afficher une fenêtre:

.. code-block:: pycon

>>> fenetre = pygame.display.set_mode((200, 200))
>>> fenetre = pygame.display.set_mode((200, 200))

Dans cet exemple, on appelle la fonction :py:func:`~pygame.display.set_mode` du module display. Ce que l’on obtient en retour, c’est un objet de la classe Surface qui est défini par Pygame.
Dans cet exemple, on appelle la fonction :py:meth: set_mode du module display. Ce que l’on obtient en retour, c’est un objet de la classe Surface qui est défini par Pygame.

Résultat:

.. image:: exemple/firstWindow.PNG

La boucle infinie
-----------------

La boucle infinie:
------------------
Si on se contentait d’exécuter le code ci-dessus, on n’obtiendrait le résultat que pendant une fraction de seconde, car au moment où le code a fini de s’exécuter, il se termine. Il faut donc créer une boucle infinie, de laquelle on peut sortir au moyen d’une action de l’utilisateur.

Exemple de fenêtre simple
-------------------------

Cet exemple provient de :ref:`makegames-2`.
Exemple de fenêtre simple:
--------------------------
Cet exemple provient de la `documentation pygame <http://www.pygame.org/docs/tut/tom_games2.html#makegames-2>`_

.. literalinclude:: exemple/simpleWindow.py


Exemples
========
Exemples:
---------

Son au maintien d'une touche
----------------------------

Cet exemple provient du `tutoriel OpenClassrooms`_
Petit lecteur audio simple
^^^^^^^^^^^^^^^^^^^^^^^^^^
Cet exemple est inspiré du `tutoriel Openclassroom <https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/le-son-5>`_

.. literalinclude:: exemple/mixerEx.py

Dans cet exemple, on a utilisé deux modules: :py:mod:`pygame.mixer`, qui est utilisé pour la gestion de sons et :py:mod:`pygame.event`, qui est utilisé pour la gestion des touches au clavier.
Dans cet exemple, plusieurs modules sont utilisés, notamment: pygame.mixer, qui est utilisé pour la gestion de sons, pygame.event, qui est utilisé pour la gestion des touches au clavier, pygame.draw, pour dessiner les boutons et pygame.mouse, pour récupérer les coordonnées de la souris.
Ici, on a créé un petit lecteur audio. Lorsque l'on appuie sur play/stop, le son de lance/s'arrête.
pour créer les boutons, on a utilisé la fonction de dessin de pygame.draw.
pour l'illumination des boutons au passage de la souris, il faut récupérer la position de la souris, et la comparer avec la zone dans laquelle est dessinée le rectangle.

Lors de l’appui, et du maintient de la touche espace, on joue le son qui a été chargé, ou on continue la lecture si le son était sur pause. Lorsque la touche est relâchée, le son est mis sur pause.
résultat:

Affichage simple d'images
-------------------------
.. image:: exemple/LecteurAudio.PNG

.. literalinclude:: exemple/loadBg.py
Affichage simple d'images:
^^^^^^^^^^^^^^^^^^^^^^^^^^

Dans cet exemple, on commence par charger une image. Cette image n’étant pas forcément dans un format supporté par pygame, la fonction pygame.convert est utilisée afin de s’assurer que l’image pourra s’afficher correctement.
.. literalinclude:: exemple/loadBG.py

.. convert est également une méthode. Et c'est dommage d'être resizable et de ne
rien faire avec ça.
Dans cet exemple, on commence par charger une image. Cette image n’étant pas forcément dans un format supporté par pygame, la fonction pygame.convert est utilisée afin de s’assurer que l’image pourra s’afficher correctement.

.. code-block:: pycon

Expand All @@ -131,14 +118,10 @@ Enfin, on peut afficher l’image en la “collant” sur la fenêtre de base, a

Il est a noter que la fonction blit prend en paramètre une Surface, donc l’objet à afficher, ainsi que la position, en sachant que la coordonnée (0,0) est en haut à gauche de la fenêtre.

.. blit est une méthode j'imagine.

Conclusion
==========

*pygame* est un module très complet, qui nous permet de réaliser des jeux avec une certaine rapidité. Les quelques méthodes présentées ici ne sont qu’une infime partie des méthodes que propose pygame. Afin d’en avoir une liste exhaustive, il est recommandé d’aller consulter la documentation officielle de :py:mod:`pygame`,
----------
Pygame est un module très complet, qui nous permet de réaliser des jeux avec une certaine rapidité. Les quelques méthodes présentées ici ne sont qu’une infime partie des méthodes que propose pygame. Afin d’en avoir une liste exhaustive, il est recommandé d’aller consulter la documentation officielle de pygame, disponible à cet endroit: `documentation pygame <https://www.pygame.org/docs/genindex.html>`_


.. [#dc] <dany.chea@he-arc.ch>

.. _tutoriel OpenClassrooms: https://openclassrooms.com/courses/interface-graphique-pygame-pour-python/le-son-5