2017-04-13 2 views
1

Ich benutze Python 2.7. Ich kann das Turtle-Modul nur zum Erstellen eines Spiels verwenden. Meine 1920 x 1080 Anzeige skaliert alle Bilder perfekt und die Animationen spielen gut, aber (zum Beispiel) auf einem 1280 x 720 Display, skalieren die Bilder nicht richtig. Ich verwende turtle.shape() für die Bilder. Wie behebe ich das?Turtle Graphics - Ändern der Größe von Formen zum Anzeigen

Ich habe ein Bild

und eine video zu erklären, das Problem weiter gegeben.

Wie Sie sehen können, überlappen sich die Symbole und das Bild springt zurück und vierten statt geradeaus zu gehen. Diese

ist, wie ich meine Bildschirmgröße definieren:

screen_width = ctypes.windll.user32.GetSystemMetrics(0) - ctypes.windll.user32.GetSystemMetrics(0)/4 

screen_height = ctypes.windll.user32.GetSystemMetrics(1) - ctypes.windll.user32.GetSystemMetrics(1)/4 
  • Es nimmt die Anzeigegröße und minuses sich um 4 für die endgültige Anzeige des Fensters geteilt.
+0

Hört sich an, als würden Sie irgendwo fest codierte Annahmen über die Fenstergröße machen. – user2357112

+0

So definiere ich die Bildschirmgröße: (Zum Beitrag hinzugefügt) –

+0

Wer hat was? –

Antwort

0

Ich kann das nicht vollständig in meiner Umgebung und ohne Ihren Code testen. Die Idee ist, virtuelle Koordinaten zu verwenden, so Skalierung auf einem Niveau durchgeführt wird, wo einzelne grafische Elemente gleichmäßig verteilt werden:

import turtle 

VIRTUAL_ASPECT_RATIO = 1.8 
VIRTUAL_WIDTH = 2000 
VIRTUAL_HEIGHT = VIRTUAL_WIDTH/VIRTUAL_ASPECT_RATIO 

screen_width = 3 * ctypes.windll.user32.GetSystemMetrics(0)/4 
screen_height = 3 * ctypes.windll.user32.GetSystemMetrics(1)/4 

# attempt to adjust the real window to match the virtual aspect ratio 
if screen_width/VIRTUAL_ASPECT_RATIO < screen_height: 
    screen_height = screen_width/VIRTUAL_ASPECT_RATIO 
elif screen_height * VIRTUAL_ASPECT_RATIO < screen_width: 
    screen_width = screen_height * VIRTUAL_ASPECT_RATIO 
else: 
    pass # probably need to do something where we adjust both 

screen = turtle.Screen() 
screen.setup(screen_width, screen_height) # size the real window 
screen.setworldcoordinates(-VIRTUAL_WIDTH/2, -VIRTUAL_HEIGHT/2, VIRTUAL_WIDTH/2, VIRTUAL_HEIGHT/2) # virtual coordinates 

yertle = turtle.Turtle() 

yertle.circle(100) 

turtle.mainloop() 

Lassen Sie uns wissen, wie die oben für Sie ausarbeitet.

+0

Ich habe die Seitenverhältnisse verwendet und sie funktionierten gut, abgesehen von der Animation auf einem 1280 x 720 Bildschirm nicht vollständig funktioniert. Als ich die '.setworldCoordinates' benutzte, überlappten sich die Bilder, ohne sie funktionierte es wie beabsichtigt. Vielen Dank. –

Verwandte Themen