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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| #!/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)
rot_rect = rot_image.get_rect(center=rect.center)
print "rect=",rect.center," rect2=", rot_rect.center
return rot_image,rot_rect
def change_image(image, rect, cible, rect_cible):
rect.center = rect_cible.center
cible = image
rect_cible = rect_cible.fit(rect)
rect_cible.center = rect.center
return cible, rect_cible
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/fond.png").convert()
fond = pygame.transform.scale(fond, (640,480))
fenetre.blit(fond, (0,0))
#Chargement et collage du personnage
base = pygame.image.load("/home/sg/Images/base.png").convert_alpha()
base2 = pygame.image.load("/home/sg/Images/base2.png").convert_alpha()
coord_base = base.get_rect()
coord_base2 = base2.get_rect()
print coord_base.center, "||", coord_base2.center
coord_base2.center = coord_base.center
print coord_base.center, "||", coord_base2.center
tourelle = pygame.image.load("/home/sg/Images/tourelle.png").convert_alpha()
coord_tourelle = tourelle.get_rect()
base_scr = base
tourelle_scr = tourelle
coord_base_scr = base_scr.get_rect()
coord_tourelle_scr = tourelle_scr.get_rect()
coord_tourelle_scr.center = coord_base_scr.center
fenetre.blit(base_scr, coord_base_scr)
fenetre.blit(tourelle_scr, coord_tourelle_scr)
#Rafraîchissement de l'écran
pygame.display.flip()
#BOUCLE INFINIE
continuer = 1
x=0
y = 0
while continuer:
pygame.time.Clock().tick(50)
for event in pygame.event.get(): #Attente des événements
if event.type == QUIT:
continuer = 0
if event.type == KEYDOWN:
keys = pygame.key.get_pressed()
if keys[K_LEFT]:
base_scr, coord_base_scr = change_image(base2,coord_base2,base_scr,coord_base_scr)
coord_tourelle_scr.center = coord_base_scr.center
coord_base_scr = coord_base_scr.move(-10,0)
coord_tourelle_scr = coord_tourelle_scr.move(-10,0)
if keys[K_RIGHT]:
base_scr, coord_base_scr = change_image(base2,coord_base2,base_scr,coord_base_scr)
coord_tourelle_scr.center = coord_base_scr.center
coord_base_scr = coord_base_scr.move(10,0)
coord_tourelle_scr = coord_tourelle_scr.move(10,0)
if keys[K_UP]:
base_scr, coord_base_scr = change_image(base,coord_base,base_scr,coord_base_scr)
coord_tourelle_scr.center = coord_base_scr.center
coord_base_scr = coord_base_scr.move(0,-10)
coord_tourelle_scr = coord_tourelle_scr.move(0,-10)
if keys[K_DOWN]:
base_scr, coord_base_scr = change_image(base,coord_base,base_scr,coord_base_scr)
coord_tourelle_scr.center = coord_base_scr.center
coord_base_scr = coord_base_scr.move(0,10)
coord_tourelle_scr = coord_tourelle_scr.move(0,10)
coord_base.center = coord_base_scr.center
coord_tourelle.center = coord_tourelle_scr.center
x, y = pygame.mouse.get_pos()
dx = x - coord_tourelle_scr.center[0]
dy = y - coord_tourelle_scr.center[1]
rads = math.atan2(-dy,dx)
degs = math.degrees(rads) - 90 #decalage de 90° de l'image rapport au 0°
angle = degs
tourelle_scr, coord_tourelle_scr = rot_center(tourelle, coord_tourelle, angle)
fenetre.blit(fond, (0,0))
fenetre.blit(base_scr, coord_base_scr)
fenetre.blit(tourelle_scr, coord_tourelle_scr)
pygame.display.flip() |
Partager