La rotation que je fait ne ce fait pas depuis le centre
Résolu
dragonchate_35
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
trifou -
trifou -
bonjour
je tourne une image rectangle de 90° en 90°
donc le centre de l'image ne devrait pas bouger
mais étrangement il bouge
merci d'avance
je tourne une image rectangle de 90° en 90°
donc le centre de l'image ne devrait pas bouger
mais étrangement il bouge
merci d'avance
A voir également:
- La rotation que je fait ne ce fait pas depuis le centre
- Rotation ecran windows - Guide
- Rotation video - Guide
- Centre de messagerie - Guide
- Comment mettre le centre de controle sur l'écran - Guide
- Centre d'aide facebook compte bloqué - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, peux-tu partager ton code?
dragonchate_35
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
c'est bon
le voila:
#!/usr/bin/python import pygame from pygame.locals import * import random import time pygame.init() fenetre = pygame.display.set_mode((340, 620), RESIZABLE) font =pygame.image.load("font.png").convert() font =pygame.transform.scale(font,(340,620)) fenetre.blit(font,(0,0)) pygame.display.flip() cd = [390, 3270] td = [190, 1270, 290, 2270, 40, 4180, 50, 5180, 60, 6180] dt = [10, 1180, 20, 2180, 490, 4270, 590, 5270, 590, 5270, 690, 6270] uc = [30, 3180] dd = [70, 790, 7180, 7270] xpiece = 160 ypiece = 0 p = 0 while p == 0 : idbox = 0 piece = random.randint(1, 7) xpiece = 160 ypiece = 0 if piece == 1 : font2 =pygame.image.load("l.png") font2 =pygame.transform.scale(font2,(40,60)).convert_alpha() font2 = pygame.transform.rotate(font2, 90) fenetre.blit(font2,(xpiece,ypiece)) piece = 10 elif piece == 2 : font2 =pygame.image.load("j.png") font2 =pygame.transform.scale(font2,(40,60)).convert_alpha() fenetre.blit(font2,(xpiece,ypiece)) piece = 20 elif piece == 3 : font2 =pygame.image.load("i.png") font2 =pygame.transform.scale(font2,(20,80)).convert_alpha() fenetre.blit(font2,(xpiece,ypiece)) piece = 30 elif piece == 4 : font2 =pygame.image.load("t.png") font2 =pygame.transform.scale(font2,(60,40)).convert_alpha() fenetre.blit(font2,(xpiece,ypiece)) piece = 40 elif piece == 5 : font2 =pygame.image.load("z.png") font2 =pygame.transform.scale(font2,(60,40)).convert_alpha() fenetre.blit(font2,(xpiece,ypiece)) piece = 50 elif piece == 6 : font2 =pygame.image.load("s.png") font2 =pygame.transform.scale(font2,(60,40)).convert_alpha() fenetre.blit(font2,(xpiece,ypiece)) piece = 60 elif piece == 7 : font2 =pygame.image.load("o.png") font2 =pygame.transform.scale(font2,(40,40)).convert_alpha() fenetre.blit(font2,(xpiece,ypiece)) piece = 70 pygame.display.flip() ypiece2 = 0 while ypiece2 != 600: ypiece += 0 if piece in cd: xpiece2 = xpiece + 80 ypiece2 = ypiece + 20 elif piece in td: xpiece2 = xpiece + 60 ypiece2 = ypiece + 40 elif piece in dt: xpiece2 = xpiece + 40 ypiece2 = ypiece + 60 elif piece in uc: xpiece2 = xpiece + 20 ypiece2 = ypiece + 80 elif piece in dd: xpiece2 = xpiece + 40 ypiece2 = ypiece + 40 time.sleep(0.01) for event in pygame.event.get() : print xpiece if event.type == KEYDOWN: if event.key == K_LEFT : if xpiece != 20: xpiece -= 10 elif event.key == K_RIGHT : if xpiece2 != 320: xpiece += 10 elif event.key == K_DOWN : if ypiece2 != 590: ypiece += 20 elif event.key == K_r : font2 = pygame.transform.rotate(font2, 90) print 1 fenetre.blit(font,(0,0)) fenetre.blit(font2,(xpiece,ypiece)) pygame.display.flip() time.sleep(1)
Bonjour,
Vu que tu es inscrit, modifie ton message et utilise les balises codes du forum afin de respecter la mise en forme de ton code.
Maintenant ton problème.
Regarde ce qu'il se passe en réalité, prends un objet rectangulaire (par ex. ton téléphone) et fais le pivoter, sachant que ce qui doit englober l'aire de ton téléphone est un rectangle élastique, au visuel tu constateras que ce rectangle change de dimension à chaque rotation de x degrés.
Avec pygame, c'est pareil, le rectangle de la surface change de dimension à chaque rotation, alors il suffit de repositionner la coordonnée x, y du rectangle.
Un exemple
Vu que tu es inscrit, modifie ton message et utilise les balises codes du forum afin de respecter la mise en forme de ton code.
Maintenant ton problème.
Regarde ce qu'il se passe en réalité, prends un objet rectangulaire (par ex. ton téléphone) et fais le pivoter, sachant que ce qui doit englober l'aire de ton téléphone est un rectangle élastique, au visuel tu constateras que ce rectangle change de dimension à chaque rotation de x degrés.
Avec pygame, c'est pareil, le rectangle de la surface change de dimension à chaque rotation, alors il suffit de repositionner la coordonnée x, y du rectangle.
Un exemple
import pygame as pg SCREEN_BACKGROUND = pg.Color('pink') SQUARE_BACKGROUND = pg.Color('purple') FPS = 10 def square_update(angle): rotate_square = pg.transform.rotate(square, angle) rotate_square_rect = rotate_square.get_rect() rotate_square_rect.center = square_rect.center screen.fill(SCREEN_BACKGROUND) screen.blit(rotate_square, rotate_square_rect) pg.display.update() screen = pg.display.set_mode((400, 400)) screen.fill(SCREEN_BACKGROUND) square = pg.surface.Surface((100, 100)).convert_alpha() square.fill(SQUARE_BACKGROUND) square_rect = square.get_rect() square_rect.center = 200, 200 screen.blit(square, square_rect) pg.display.update() ROTATE_EVENT = pg.USEREVENT rotate_state = False pg.time.set_timer(ROTATE_EVENT, 50) clock = pg.time.Clock() running = True angle = 0 while running: clock.tick(FPS) for evt in pg.event.get(): if evt.type == pg.QUIT or ( evt.type == pg.KEYUP and evt.key == pg.K_ESCAPE ): running = False break elif evt.type == ROTATE_EVENT: angle += 5 angle %= 360 square_update(angle) pg.quit()