La rotation que je fait ne ce fait pas depuis le centre
Résolu
dragonchate_35
Messages postés
19
Statut
Membre
-
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
- Centre d'aide facebook compte bloqué - Guide
- Comment mettre le centre de controle sur l'écran - Guide
2 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour, peux-tu partager ton code?
dragonchate_35
Messages postés
19
Statut
Membre
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()