Si tu dois tourner tes surface et que tu ne veux pas calculer les décalages, place tes surfaces sur l’ecran en fonction de leurs centres et non de leu coin supérieur gauche (il faut quand même que le centre de rotation soit aussi le centre du Rect pour que ca fonctionne):
# rob_pos est le Rect associée au robot
# pour deplacer le robot on bouge son centre
rob_pos.centre = (x, y)
fenetre.blit(robot, rob_pos)
# tour de boucle suivant
# le robot subit une rotation
# je crée une nouvelle Surface pour éviter de dégrader l'image apres plusieurs rot
rot_bot = pg.transform.rotate(robot, angle)
# je prend son Rect qui n'a plus la même taille que celui de robot
rot_pos = rot_bot.get_rect()
# je mets son centre au même point que le robot "droit"
rot_pos.centre = rob_pos.centre
fenetre.blit(rot_bot, rot_pos)
Tout ca fonctionne sans calcul, mais il faut toujours positionner le robot par son centre et penser que la taille de robot_back (pour restaurer le fond) va aussi changer, si la boucle est bien faite ca ne devrait pas poser de problèmes.
La doc de Pygame est plutôt bien faite et complète par rapport à d’autre modules (Voir la SFML lire la doc C++ pour avoir des infos à jour…), mais c’est vrai que c’est tout en anglais (comme beaucoup de doc). De plus Pygame est stable on a pas revoir une partie du code avec les changement version (SFML …..).
Pygame te fournis les briques de base, donc plutôt que tout réinventer à chaque fois code des fonctions basique qui te simplifient la vie et rassemble dans un module dédié que tu utiliseras dans tes jeux, si tu reprends le morceau de code ci dessus dans ta boucle de jeu (ainsi que le reste de ta logique de jeu) tu va rendre ton code difficile à lire même pour toi.