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 - Mettre l'origine des coordonées au centre de la fenêtre


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Membre à l'essai
    Pygame - Mettre l'origine des coordonées au centre de la fenêtre
    Bonjour,
    J'aimerais faire en sorte que l'origine de la fenetre : (0, 0) se trouve au centre de la fenetre dans Pygame (comme l'environnement de Scratch) :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
     
     
    import pygame
    from pygame.locals import *
     
    from random import randint as r
    from threading import Thread
     
    class Simulation(Thread):
     
        def rcolor(self):
            return r(0, 255), r(0, 255), r(0, 255)
     
        def __init__(self, FPS=60, win_size=(640, 480)):
            super().__init__()
            self.FPS = FPS
            self.win_size = win_size
     
        def run(self):
     
            pygame.init()
     
            self.spacetime = pygame.display.set_mode(self.win_size)
     
            #paramètrages de divers options
            self.fps_limiter = pygame.time.Clock()
            pygame.key.set_repeat(400, 30)
     
            # initialisation du background
            # self.bg = pygame.Surface(self.win_size).convert()
            # self.spacetime.blit(self.bg, (0, 0))
     
            self.obj1 = pygame.Surface((100, 100))
     
            self.obj1_color = (255, 255, 255)
            pygame.draw.circle(self.obj1, self.obj1_color, (320, 240), 50)
     
            self.obj1_rect = self.obj1.get_rect()
     
            self.do_play()
            while not self.stop:
     
                while self.play:
     
                    for event in pygame.event.get():
     
                        if event.type == QUIT:
                            self.do_stop()
     
                        if event.type == KEYDOWN:
     
                            if event.key == K_RIGHT:
                                self.obj1_rect.move_ip(2, 0)
     
                            if event.key == K_LEFT:
                                self.obj1_rect.move_ip(-2, 0)
     
                            if event.key == K_DOWN:
                                self.obj1_rect.move_ip(0 ,2)
     
                            if event.key == K_UP:
                                self.obj1_rect.move_ip(0, -2)
     
     
                    self.spacetime.blit(self.obj1, self.obj1_rect)
     
                    pygame.display.flip()
     
                    self.fps_limiter.tick(self.FPS)
     
    if __name__=="__main__":
    	sim = Simulation()
    	sim.start()

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

    Bonjour,

    Faites une fonction blit, qui juste avant l'affichage, décale le sprite à afficher de largeur/2 et hauteur/2 de la taille de la fenêtre. Ensuite, n'utilisez plus que cette fonction et l'illusion sera parfaite.
    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.

###raw>template_hook.ano_emploi###