Demande renseignement sur python

a marqué ce sujet comme résolu.

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.

Merci beaucoup pour ton aide ! Je vais essayer ça !

Citation: "place tes surfaces sur l’ecran en fonction de leurs centres"

Oui je le fais actuellement, dans mon code tout est basé sur les rectangles et je les deplace par le centre.

Oui tu as raison pour sfml, j’avais essayé de my mettre un jour en 2015 quand je voulais faire du C, et j’avais été rebuté par sa complexité, moi j’aime bien les trucs simples ;)

Oui je compte faire ton conseil, j’y penais hier quand j’ai vu un tuto de pygame en anglais qui a tout mis en fonctions et en classes, ça faisait propre et clair.

Là je vais jouer à d’anciens jeux années 95 pour me donner des idées pour la suite de mon jeu. En fait j’ai déjà le scenario et les idées mais je sais pas encore la vue que je veux pour le joueur, je choisirais après, perso je penche pour une vue de dessus mais comme le robot a des ascenseurs à prendre je préfère qu’on le voit les prendre ;)

Je vais essayer de m’habituer à pygame et si j’y arrive je compte faire plusieurs jeux avec. C’est grace à toi que j’avance dans pygame.

Merci beaucoup !!!

+0 -0

Dans mon programme, j’utilise random, et en pressant une touche pour faire un randint(1,8) j’appuie 50 fois et pas un seul chiffre 8 ! pourtant je l’ai initialisé avec random.seed()

Abou

Peut-être que tu n’as juste pas eu de chance.

Mais je ne crois pas qu’il soit nécessaire d’appeler seed en Python, c’est fait automatiquement. L’appel à seed est utile si tu veux rendre prédictible les nombres générés.

Bonjour !

Je veux changer la dimension d’une image quand elle se délace : de +1 si son rect.top augmente de -1 si son rect.top diminue

Donc j’utilise ça : image=pygame.transform.scale(image,largeur,hauteur) et ça donne :

myrobot=pygame.transform.scale(myrobot,(robot_pos.width,robot_pos.height))

ça modifie bien comme je veux la taille du rect de l’image, mais plus la taille diminue plus ça coupe l’image à partir du bas de plus en plus.

C’est pourquoi je dis et je ne suis pas le seul d’après ce que j’ai vu sur les forum du net que la doc pygame est vraiment pas facile ni claire sauf si on veut juste afficher une image, c’est simpliste. Mais dés qu’on veut faire des effets classiques de jeux, la doc n’aide pas.

EDIT : J’ai eu la réponse par un gars, je vous remercie !

La solution était :

fenetre.blit(pygame.transform.scale(myrobot,(robot_pos.width,robot_pos.height)),robot_pos)

RESOLU ;)

+0 -0

RE ;)

J’ai la formule ci-dessus qui fonctionne bien, car j’applique à robot_pos.height : -1 quand je monte et +1 quand je descend, mais si je fais la même chose pour robot_pos.width dans le sens horizontal, la largeur de l’image se réduit trop vite et l’image devient finalement un simple trait vertical, est-ce qu’il y a moyen d’incrémenter/décrémenter la largeur (robot_pos.width) une fois sur trois au lieu de l’incrémenter à chaque tour ?

Peut-être avec un modulo ? Mais je comprends rien au modulo, même si je sais ce que c’est. je sais jamais comment l’appliquer.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte