code zu umständlich?

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Py19917062
User
Beiträge: 113
Registriert: Freitag 30. Januar 2009, 00:53
Wohnort: Dortmund
Kontaktdaten:

hey leute ich wollt mal fragen ob mein code hier zu umständlich ist
achtet nicht auf die schlechte namensvergabe ist nur so zu testen das script

Code: Alles auswählen

import pygame
pygame.init()



def main():
    
    x = y = 0
    x1 = y1 = 0
    zeichne = 0
    screen = pygame.display.set_mode((600,400))
    
    while True:
        
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return
            
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    return
                
            if event.type == pygame.MOUSEMOTION:
                x,y = event.pos
            elif event.type == pygame.MOUSEBUTTONDOWN:
                x1,y1 = event.pos
                zeichne = 1
            elif event.type == pygame.MOUSEBUTTONUP:
                zeichne = 0
                
        screen.fill((0,0,0))
        if zeichne == 1:
            pygame.draw.line(screen, (255,255,255), (x1,y1), (x1,y))
            pygame.draw.line(screen, (255,255,255), (x1,y1), (x,y1))
            pygame.draw.line(screen, (255,255,255), (x,y), (x,y1))
            pygame.draw.line(screen, (255,255,255), (x, y), (x1,y))
        pygame.display.flip()
        
if __name__ == '__main__':
    main()
py19917062
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Du kannst functools.partial nehmen, um die Wiederholungen bei den Funktionsaufrufen am Ende zu vermeiden.
Py19917062
User
Beiträge: 113
Registriert: Freitag 30. Januar 2009, 00:53
Wohnort: Dortmund
Kontaktdaten:

und wo müsste ich das positionieren?
Py19917062
User
Beiträge: 113
Registriert: Freitag 30. Januar 2009, 00:53
Wohnort: Dortmund
Kontaktdaten:

also soll ich die 4 pygame.draw.line() zeilen in eine definition packen und sie mit functools.partial aufrufen?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Funktion:

Code: Alles auswählen

draw_white_line = functools.partial(pygame.draw.line(screen, (255,255,255))
Anwendung:

Code: Alles auswählen

draw_white_line((x1,y1), (x1,y))
draw_white_line((x1,y1), (x,y1))
draw_white_line((x,y), (x,y1))
draw_white_line((x, y), (x1,y)) 
Daneben: Bleib komplett Englisch und verwende sinnvolle Namen.
Aber der Code ist dann doch ein bisschen zu spaerlich, um ihn ausfuerhlich zu kommentieren, denn da steht nichts drin.
Die if/elif-Kaskade liesse sich auch durch ein Dict ersetzen.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das "pygame.init()" kann eigentlich auch gleich über den "main"-Aufruf gepackt werden. Außerdem frage ich mich, warum keine Funktion zum Zeichnen des Rechtecks verwendet wird. Dann ist auch gleich klar, was gemeint ist.
Das Leben ist wie ein Tennisball.
Antworten