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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| #!/usr/bin/env python
# -*-coding:utf-8 -*
import pygame
import math
from pygame.locals import *
def rot_center(image, rect, angle):
"""rotate an image while keeping its center"""
rot_image = pygame.transform.rotate(image, angle)
w = math.sqrt(rect.width**2 + rect.height**2)
rot_rect = rot_image.get_rect(center=rect.center, size=(w,w))
return rot_image,rot_rect
pygame.init()
pygame.key.set_repeat(30, 50)
#Ouverture de la fenêtre Pygame
fenetre = pygame.display.set_mode((640, 480))
#Chargement et collage du fond
fond = pygame.image.load("/home/sg/Images/background.jpg").convert()
fenetre.blit(fond, (0,0))
#Chargement et collage du personnage
perso = pygame.image.load("/home/sg/Images/tank2.png").convert_alpha()
perso = pygame.transform.scale(perso, (50,80))
position_perso = perso.get_rect()
perso2 = perso
position_perso2 = position_perso
fenetre.blit(perso, position_perso)
#Rafraîchissement de l'écran
pygame.display.flip()
#BOUCLE INFINIE
continuer = 1
x=0
y = 0
i = 0
while continuer:
pygame.time.Clock().tick(10)
for event in pygame.event.get(): #Attente des événements
if event.type == QUIT:
continuer = 0
if event.type == KEYDOWN:
if event.key == K_DOWN: #Si "flèche bas"
#On descend le perso
if position_perso2.bottom + 10 <= 480:
position_perso2 = position_perso2.move(0,10)
if event.key == K_UP: #Si "flèche haut"
#On monte le perso
if position_perso2.top - 10 >= 0:
position_perso2 = position_perso2.move(0,-10)
if event.key == K_LEFT: #Si "flèche gauche"
#On gauche le perso
position_perso2 = position_perso2.move(-10,0)
if event.key == K_RIGHT: #Si "flèche droite"
#On droite le perso
position_perso2 = position_perso2.move(10,0)
position_perso[0] = position_perso2[0]
position_perso[1] = position_perso2[1]
print "p1=",position_perso2
if event.type == MOUSEBUTTONDOWN and event.button == 3:
position_perso2[0] = event.pos[0]
position_perso2[1] = event.pos[1]
position_perso[0] = event.pos[0]
position_perso[1] = event.pos[1]
print "p2=",position_perso2
#if event.type == MOUSEMOTION and event.buttons[0] == 1:
if event.type == MOUSEMOTION:
x = event.pos[0]
y = event.pos[1]
dx = x - position_perso2.center[0]
dy = y - position_perso2.center[1]
hyp = math.sqrt(dx**2 + dy**2)
rads = math.atan2(-dy,dx)
degs = math.degrees(rads) - 90 #decalage de 90° de l'image rapport au 0°
angle = degs
perso2, position_perso2 = rot_center(perso, position_perso, angle)
print "p3=",position_perso2
#perso2 = pygame.transform.scale(perso, (500,500))
#Re-collage
fenetre.blit(fond, (0,0))
fenetre.blit(perso2, (position_perso2[0],position_perso2[1]))
#Rafraichissement
pygame.display.flip() |
Partager