Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Pygame]mouse.get_rel() et lines

Anonyme
    12 novembre 2014 à 18:41:40

    bonjour à tous.

    j'ai dans l'idée de réaliser un mini moteur graphique 3D avec pygame (facile dans l'idée).

    le truc c'est que je vais m'en servir pour faire tourner une image de bloc, plus tard, dans mon éditeur de bloc.

    mais ca ne marche déja pas comme je le veut . . .

    bougez la souris et vous verrez tout en haut un truc bizarre se faire.

    le code :

    #-*-coding: Utf-8-*-
    
    import pygame
    from   pygame.locals import *
    
    continuer = 1
    liste     = [(50,50), (100,50), (100,100), (50,100)]
    root      = pygame.display.set_mode((1000,750))
    couleur   = (255, 255, 255)
    
    def move_base(x, y, l, root):
    	for e, var in enumerate(l):
    		x_pos, y_pos = l[e]
    		x_pos += x
    		y_pos += y
    		l[e] = x_pos, y_rel
    	pygame.draw.lines(root, couleur, True, l)
    
    while continuer:
    	pygame.draw.rect(root, (0, 0, 0), (0, 0, 300, 300))
    	for event in pygame.event.get():
    		if event.type == MOUSEMOTION:
    			x_rel, y_rel = pygame.mouse.get_rel()
    			move_base(x_rel, y_rel, liste, root)
    		elif event.type == KEYDOWN:
    			continuer = 0
    	move_base(x_rel, y_rel, liste, root)
    	pygame.display.flip()

    en bougeant la souris vers le haut, la figure doit faire un truc comme ca :

      /-\
    /__\
    mais j'ai juste une ligne tres moche qui se forme. Pourquoi ?
    Merci de votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      12 novembre 2014 à 19:21:10

      j'ai fait autrement et ca marche, mais le carré se déplace et je sais pas pourquoi . . .

      help !

      le code (faut bouger d'un coup la souris et faire un grd déplacement, car get rel donne le déplacement relatif) :

      #-*-coding: Utf-8-*-
      
      import pygame
      from   pygame.locals import *
      
      continuer = 1
      l         = [(50,50), (100,50), (100,100), (50,100)]
      root      = pygame.display.set_mode((750,750))
      couleur   = (255, 255, 255)
      
      def move_base(x, y, root):
      	global l
      
      	if x >= 0:
      		x_pos, y_pos = l[0]
      		l[0] = x_pos + (x // 45), y_pos - (y // 45)
      		x_pos, y_pos = l[1]
      		l[1] = x_pos + (x // 45), y_pos + (y // 45)
      		x_pos, y_pos = l[2]
      		l[2] = x_pos + (x // 45), y_pos + (y // 45)
      		x_pos, y_pos = l[3]
      		l[3] = x_pos + (x // 45), y_pos - (y // 45)
      	if x < 0:
      		x_pos, y_pos = l[0]
      		l[0] = x_pos - (x // 45), y_pos + (y // 45)
      		x_pos, y_pos = l[1]
      		l[1] = x_pos - (x // 45), y_pos - (y // 45)
      		x_pos, y_pos = l[2]
      		l[2] = x_pos - (x // 45), y_pos - (y // 45)
      		x_pos, y_pos = l[3]
      		l[3] = x_pos - (x // 45), y_pos + (y // 45)
      	if y >= 0:
      		x_pos, y_pos = l[0]
      		l[0] = x_pos - (x // 45), y_pos + (y // 45)
      		x_pos, y_pos = l[1]
      		l[1] = x_pos + (x // 45), y_pos + (y // 45)
      		x_pos, y_pos = l[2]
      		l[2] = x_pos + (x // 45), y_pos + (y // 45)
      		x_pos, y_pos = l[3]
      		l[3] = x_pos - (x // 45), y_pos + (y // 45)
      	if y < 0:
      		x_pos, y_pos = l[0]
      		l[0] = x_pos + (x // 45), y_pos - (y // 45)
      		x_pos, y_pos = l[1]
      		l[1] = x_pos - (x // 45), y_pos - (y // 45)
      		x_pos, y_pos = l[2]
      		l[2] = x_pos - (x // 45), y_pos - (y // 45)
      		x_pos, y_pos = l[3]
      		l[3] = x_pos + (x // 45), y_pos - (y // 45)
      
      	pygame.draw.line(root, couleur, l[0], l[1])
      	pygame.draw.line(root, couleur, l[1], l[2])
      	pygame.draw.line(root, couleur, l[2], l[3])
      	pygame.draw.line(root, couleur, l[3], l[0])
      	return l
      
      while continuer:
      	for event in pygame.event.get():
      		if event.type == MOUSEMOTION:
      			pygame.draw.rect(root, (10, 180, 170), (0, 0, 750, 750))
      			x_rel, y_rel = pygame.mouse.get_rel()
      			print(str(x_rel) + "::" + str(y_rel))
      			l = move_base(x_rel, y_rel, root)
      		elif event.type == KEYDOWN:
      			continuer = 0
      	pygame.display.flip()

      Merci de votre aide !!

      • Partager sur Facebook
      • Partager sur Twitter
        12 novembre 2014 à 21:10:44

        je pige pas ce que tu veux faire ...

        un carré qui suit la souris ?

        • Partager sur Facebook
        • Partager sur Twitter

        Python c'est bon, mangez-en. 

        Anonyme
          13 novembre 2014 à 7:39:35

          non mais tu vois minecraft ? la souris se déplace vers le haut, les blocs vers le bas. un module modification de texture en fonction du mouvement de la souris, de manière a faire tourner des objets !
          • Partager sur Facebook
          • Partager sur Twitter
            13 novembre 2014 à 9:24:57

            Heu....non, je ne vois vraiment pas. 

            Un lien vers une vidéo peut être ?

            • Partager sur Facebook
            • Partager sur Twitter

            Python c'est bon, mangez-en. 

            Anonyme
              13 novembre 2014 à 17:37:30

              https://www.youtube.com/watch?v=X_ReDZQUG1E : la souris monte, les blocs descendent. et évidemment ils sont déformés, cela donne l'impression que l'on marche dessus :D

              -
              Edité par Anonyme 13 novembre 2014 à 17:38:02

              • Partager sur Facebook
              • Partager sur Twitter
                13 novembre 2014 à 18:06:54

                On parle de 3D là ... pygame n'est pas vraiment fait pour ça. 

                S'il n'y a pas de rotation,  tu peux simuler une pseudo 3D, le problème étant le texturing.

                • Partager sur Facebook
                • Partager sur Twitter

                Python c'est bon, mangez-en. 

                Anonyme
                  13 novembre 2014 à 18:21:32

                  oui voilà, c'est une simple rotation simulée !

                  ok moi je veux pas reproduire minecraft hein ... juste faire tourner correctement ma texture, et quelle garde sa position, pas qu'elle se déplace ...

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 novembre 2014 à 21:14:58

                    Ok donc c'est juste un carré texturé qui pivote seulement autour de l'axe horizontal c'est ça ?

                    Mais comment vas tu gérer la texture ? pygame ne fait pas ça. 

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Python c'est bon, mangez-en. 

                    Anonyme
                      14 novembre 2014 à 7:33:39

                      pour la texture peut etre pil. mais pour le moment j'essaye déjà de faire bouger mn carré sans qu'il se déplace, sur l'axe horizontal (et peut etre plus tard vertical mais horizontal c'est déjà bien :D )
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 novembre 2014 à 11:25:02

                        Tu as regardé le module pygame.math ? Sa class Vertor3 devrait bien t'aider. 

                        Si tu trouves une combine pour l'application de texture je suis preneur. 

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Python c'est bon, mangez-en. 

                        Anonyme
                          14 novembre 2014 à 17:13:45

                          merci je vais voir cela !

                          je pense savoir à peu comment faire, il faudrait déformer l'image et la faire entrer dans une sorte de moule, ici le rect ;)

                          • Partager sur Facebook
                          • Partager sur Twitter

                          [Pygame]mouse.get_rel() et lines

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown