This repository was archived by the owner on May 7, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 33
Pygame #144
Closed
Closed
Pygame #144
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
ea614ab
clean pygame
faf0c88
re tentative de push
d56c9cd
correction selon commentaires
4f526cf
correction erreurs
4263d36
correction erreurs 2
74ddebe
amélioration de l'exemple du lecteur audio
ee97c30
Merge branch 'master' into pygame
WyvernNE 9d61710
amélioration de l'exemple du lecteur audio
5163fcd
Merge branch 'master' into pygame
WyvernNE 4b196b4
correction de conflit
6271fca
clean pygame
24afd69
amélioration de l'exemple du lecteur audio
de00da0
amélioration de l'exemple du lecteur audio
d63624e
resolution
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
|
|
||
| """Exemple d'affichage d'une image de fond.""" | ||
| import pygame | ||
| from pygame.locals import QUIT, RESIZABLE | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,29 +1,57 @@ | ||
| """Exemple d'utilisation des modules pygame.event et pygame.mixer.""" | ||
| import pygame | ||
| from pygame.locals import K_RETURN, K_SPACE, KEYDOWN, KEYUP, QUIT, RESIZABLE | ||
|
|
||
| """Exemple d'utilisation: lecteur audio.""" | ||
| import pygame | ||
| from pygame.locals import QUIT | ||
| 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() | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
|
|
||
| """Exemple d'affichage d'une fenêtre simple.""" | ||
| import pygame | ||
| from pygame.locals import QUIT | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,8 +1,5 @@ | ||
| .. _pygame-tutorial: | ||
|
|
||
| ========== | ||
| ``pygame`` | ||
| ========== | ||
| Pygame | ||
| ====== | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ne cassez pas ce qui a été fait... 4da1db2 |
||
|
|
||
| .. image:: logo_pygame.png | ||
| :align: right | ||
|
|
@@ -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. | ||
|
|
@@ -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` | | ||
| +------------------+------------------+-------------------+-------------------+ | ||
|
|
@@ -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 | ||
|
|
||
|
|
@@ -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 | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
http://pep8.org/#constants