IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Pygame - Adaptation fenêtre/écran


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Pygame - Adaptation fenêtre/écran
    Bonjour à tous,

    je vous écris car je suis face à un problème de taille (jeu de mot voulu)!

    Je code en pygame et je voudrais pouvoir faire en sorte que la fenêtre de jeu s'adapte à n'importe quel type d'écran, de même pour les images que j'utilise.

    Bon pour que la fenêtre s'adapte à n'importe quel écran j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fenetre = pygame.display.set_mode((0,0), FULLSCREEN)
    Cela marche sans soucis.

    Par contre je ne comprend pas pour adapter la taille des images, pour que je n'ai pas besoin de les redimensionner à la main.

    Voici un code d'exemple pour illustrer ce que je fais avec mes images. Merci à vous et bonne journée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    import os
    import pygame
    from pygame.locals import *
     
    pygame.init() #initialisation de pygame
     
    os.environ["SDL_VIDEO_WINDOWS_POS"] = "0 , 28" #placement de la fenêtre sur l'écran
     
    fenetre = pygame.display.set_mode((0, 0),FULLSCREEN) #définition valeur de l'écran
     
    LEFT = 1 #variable pour le bouton gauche de la souris
    MIDDLE = 2 #variable pour le bouton su milieu de la souris
    RIGHT = 3 #variable pour le bouton droit de la souris
     
     
    ############################### importation d'image
    fond = pygame.image.load("images/fonds/fond_menu_jeu.jpg")
     
    fenetre.blit(fond, (0,0))
    pygame.display.update()
     
    continuer = 1
    while continuer:
        for event in pygame.event.get():
     
            if event.type == pygame.MOUSEBUTTONDOWN and event.button == RIGHT:
                pygame.quit()
     
            if event.type == pygame.MOUSEBUTTONDOWN and event.button == MIDDLE:
                print("tu as fait un clic molette")
     
            if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT:
                print("Tu as fait un clic gauche")

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Vous pouvez peut être y arriver en utiliser le troisième paramètre de blit(), qui permet de spécifier une zone où l'image s'affiche.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Merci,

    Je dois bien avouer que j'éprouve des difficultés à bien comprendre comment ces paramètres fonctionnent, je n'arrive pas à trouver des explications claires dessus, pourriez-vous m'aider svp?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Je viens de relire la documentation et je remarque que la fonction ne propose pas de redimensionnement.
    Il faut utiliser les fonctions de transformation : https://www.pygame.org/docs/ref/tran...ransform.scale
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Je vois merci beaucoup, je vous tiens au courant si ça marche ou non

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Merci ça marche sans problème !

    Par contre maintenant j'aimerais automatiser le processus pour que le redimensionnement de l'image se fasse automatiquement en fonction de la résolution de l'écran du joueur.

    je sais qu'avec ça on peut récupérer la résolution de l'écran.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    x = fenetre.get_size()
    print("X : ", x)
    Mais je ne vois pas comment m'en servir, comment récupérer les valeurs pour les appliquer au scale.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Bon j'ai résolu le problème comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    import os
    import pygame
    from pygame.locals import *
     
    pygame.init() #initialisation de pygame
     
    os.environ["SDL_VIDEO_WINDOWS_POS"] = "0 , 0" #placement de la fenêtre sur l'écran
     
    fenetre = pygame.display.set_mode((0,0),FULLSCREEN) #définition valeur de l'écran
     
    ##info = pygame.display.Info()
    ##print("Info : ", info)
    ##
    x = fenetre.get_size()
    print("X : ", x)
     
     
    LEFT = 1 #variable pour le bouton gauche de la souris
    MIDDLE = 2 #variable pour le bouton su milieu de la souris
    RIGHT = 3 #variable pour le bouton droit de la souris
     
    ############################### importation d'image
    fond = pygame.image.load("images/fonds/fond_menu_echap1.png")
    fond1 = pygame.transform.scale(fond, (x))#(1920, 1080))
     
     
    fenetre.blit(fond1, (0,0))
    pygame.display.update()
     
    continuer = 1
    while continuer:
        for event in pygame.event.get():
     
            if event.type == pygame.MOUSEBUTTONDOWN and event.button == RIGHT:
                print("Tu as fait un clic droit")
                pygame.quit()
     
            if event.type == pygame.MOUSEBUTTONDOWN and event.button == MIDDLE:
                print("tu as fait un clic molette")
     
            if event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT:
                print("Tu as fait un clic gauche")
    Par contre j'ai un nouveau soucis et je pense que c'est pygame qui fait ça, mon écran de pc est 1920x1080 pourtant pygame me fait tenir mon écran de jeu sur mon écran principale + un morceau de mon deuxième écran (que celui-ci sois branché ou non). Avez-vous une idée pour résoudre ce petit problème?

    UPDATE: Problème réglé, le problème vient de l'affichage windows avec le % de taille d'écritures. Il était sur 125% de base, il faut le remettre à 100%, pygame est affecté par cette fonctionnalité.
    Merci pour votre aide, je passe le sujet en résolu.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    Il me semble qu'avec pygame2 tu peux gérer le zoom avec l'option SCALE de display.set_mode().

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Ah peut-être, moi je code en pygame3 donc je sais pas si ça marche du coup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Adapter résolution écran avec servlet
    Par Furlaz dans le forum Servlets/JSP
    Réponses: 18
    Dernier message: 17/09/2009, 18h52
  2. Taille de site adapté aux écrans
    Par didi71 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 17/10/2008, 21h50
  3. Réponses: 4
    Dernier message: 04/06/2008, 14h20
  4. Taille du html adaptable à l'écran
    Par hellotk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 07/10/2007, 16h30
  5. Application s'adaptant à tout écran
    Par SOPSOU dans le forum Composants VCL
    Réponses: 2
    Dernier message: 01/10/2007, 19h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo