2010-07-19 25 views
2

Quelle serait la meilleure façon d'utiliser les coordonnées négatives dans pygame?Coordonnées négatives dans pygame

Au moment où j'ai une surface égale à 1,5 fois la surface d'origine, tout ce qui doit être dessiné est décalé d'une certaine quantité (pour que les coordonnées négatives deviennent positives) et dessinées.

Existe-t-il un moyen plus simple/alternatif de le faire?

Répondre

0

Il est impossible de déplacer l'origine d'une surface de 0,0.

Implémentez votre propre classe de dessin qui transforme toutes les coordonnées transmises dans l'espace de la surface.

+0

C'est essentiellement ce que j'ai. J'ai créé les fonctions adj_up et adj_down – filinep

+0

C'est la manière la plus simple. –

0

Si elle est similaire à une situation de carte RPG, où vous avez des coordonnées mondiales et des coordonnées d'écran: utilisez une fonction qui convertit le monde en local, et vice versa. Mais je n'étais pas sûr d'avoir cherché les propriétés de Rect?

rect.bottomright = (width, height) # bottom right at window corner 

Si vous souhaitez utiliser les coordonnées du centre à blit, vs en haut à gauche étant (0,0)

ship.rect.center = (20, 30) # don't need to translate by adding w/2 to topleft 

Voir aussi: Rect.move_ip()

1

Une solution simple est d'écrire une application linéaire fonctionner à partir des coordonnées du monde aux coordonnées d'écran de pygame

def coord(x,y): 
    "Convert world coordinates to pixel coordinates." 
    return 320+170*x, 400-170*y 

et l'utiliser quand drawi ng tous les objets du monde. Jetez un oeil here pour un exemple complet.