Seite 1 von 1

code zu umständlich?

Verfasst: Freitag 24. Juli 2009, 17:45
von Py19917062
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

Verfasst: Freitag 24. Juli 2009, 17:51
von derdon
Du kannst functools.partial nehmen, um die Wiederholungen bei den Funktionsaufrufen am Ende zu vermeiden.

Verfasst: Freitag 24. Juli 2009, 17:54
von Py19917062
und wo müsste ich das positionieren?

Verfasst: Freitag 24. Juli 2009, 18:07
von Py19917062
also soll ich die 4 pygame.draw.line() zeilen in eine definition packen und sie mit functools.partial aufrufen?

Verfasst: Freitag 24. Juli 2009, 18:12
von cofi
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.

Verfasst: Freitag 24. Juli 2009, 20:39
von EyDu
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.