Saludos, hace unos años atrás yo también utilizaba DIV Games Studio y
el tema de los puntos de control resultaba de mucha utilidad.
Lamentablemente no tenemos algo similar ni en SDL ni en Pygame. Los
formatos de imagenes como PNG o JPEG tampoco almacenan información como
puntos de control.
Pero espera, puedes lograr exactamente el mismo efecto alterando un
poco tus funciones para imprimir gráficos, solo necesitarás almacenar
la información de los puntos de control en algún sitio.
Por ejemplo, imagina que cuento con una imagen de tamaño 150x150:
y quisiera imprimirla en la posición (160, 200) utilizando un punto
de control (también llamado "eje" o "centro") situado enn la posición
(50, 140).
Si escribiera esto en Python utilizando pygame sería algo así:
- Código: Seleccionar todo
punto_de_control_x = 50
punto_de_control_y = 140
x_destino = 160
y_destino = 200
x = x_destino - punto_de_control_x
y = y_destino - punto_de_control_y
screen.blit(imagen, (x, y))
es decir, deberías desplazar el punto de impresión final en base a la
coordenada de control que quieras asignar.
Nota que tienes toda la libertad de representar ese punto de control
como quieras. Podrías guardar esto en el mismo código del juego, en otro
archivo, en el mismo nombre del archivo [1], calcular el valor en base a
alguna cuenta o directamente utilizar el mismo punto de control para
todos los personajes del juego.
En lenguaje C podemos hacer algo similar, solo que el "desplazamiento"
de la coordenada final lo haríamos sobre una variable de tipo SDL_Rect:
- Código: Seleccionar todo
SDL_Rect dst = {160, 200, 0, 0};
SDL_Surface * image = SDL_LoadBMP("shaolin.bmp");
int punto_de_control_x = 50;
int punto_de_control_y = 140;
/* desplazamiento del punto de control */
dst.x = dst.x - punto_de_control_x;
dst.y = dst.y - punto_de_control_y;
SDL_BlitSurface(imagen, NULL, screen, &dst);
No probé si este último programa funciona, pero la idea es similar a la
del programa anterior. Para utilizar puntos de control solo tienes que
"desplazar" la coordenada destino de impresión.
Bueno amigo, luego comentanos si te ha resultado.
Mucha suerte.
[1] - por ejemplo "shaolin_50_140.png" indica que la imagen tiene asignado
el punto de control (50, 140).