Malen mit Pygame

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
MGS_Freak
User
Beiträge: 35
Registriert: Donnerstag 13. Januar 2011, 13:50
Wohnort: Schweiz

Hallo zusammen

Da ich selber auch so ein Malprogramm am schreiben bin wollte ich keinen neuen Post erstellen, hänge mein Problem einfach hier an.

Meine Klasse sieht (wohl nicht überraschend) sehr ähnlich aus, einfach ohne draw_line()-Funktion. Sprich bei mir zeichnets Kreise bei gedrückter Maustaste wie hier am Anfang. Wie man die hässlichen Leerstellen weg kriegt hab ich mir so vorgestellt: alle Mauspositionen während gedrückter Maustaste sollen abgefangen und in einer Liste gespeichert werden. Eine Prüfung soll ergeben welche Positionen "leer" sind und diese dann ausfüllen. Klingt in meinem Kopf schon mal gut, allerdings raucht mir der Schädel was die Umsetzung betrifft! Wie kann ich alle Mauspositionen (bei gedrückter Taste) abfangen?

Um einen Gedankeanstoss freue ich mich,
Euer MGS_Freak
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

In dem du in deiner Hauptschleife, dort wo du die events abrufst (pygame.event.get()), einfache bei dem "event.type == pygame.MOUSEBUTTONDOWN" alle events an eine Liste oder Queue per append/put anhängst. Diese kannst du dann nach dem Eventhandling auswerten.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
MGS_Freak
User
Beiträge: 35
Registriert: Donnerstag 13. Januar 2011, 13:50
Wohnort: Schweiz

Xynon1 hat geschrieben:In dem du in deiner Hauptschleife, dort wo du die events abrufst (pygame.event.get()), einfache bei dem "event.type == pygame.MOUSEBUTTONDOWN" alle events an eine Liste oder Queue per append/put anhängst. Diese kannst du dann nach dem Eventhandling auswerten.
Echt genial wie schnell man hier immer Antwort kriegt - vielen Dank!
So, hab das mal versucht, dummerweise speichert's bei mir nur die Positionen wenn ich klicke, wenn ich die Taste halte zeichnet's zwar weiter, speichert allerdings nur die erste Position (dafür immer wieder). Was mache ich falsch?
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Stimmt, sry.
Dann nimm einfach "event.type == MOUSEMOTION" und dann auf die gedrückte Taste mit "pygame.mouse.get_pressed()"* prüfen.

* Gibt dir ein Tuple mit den Statuswerten der Tasten 1, 2 und 3. Ist dieser 0, so ist die Taste nicht gedrückt.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
MGS_Freak
User
Beiträge: 35
Registriert: Donnerstag 13. Januar 2011, 13:50
Wohnort: Schweiz

Xynon1 hat geschrieben:Stimmt, sry.
Dann nimm einfach "event.type == MOUSEMOTION" und dann auf die gedrückte Taste mit "pygame.mouse.get_pressed()"* prüfen.

* Gibt dir ein Tuple mit den Statuswerten der Tasten 1, 2 und 3. Ist dieser 0, so ist die Taste nicht gedrückt.
null problemo, mousemotion: sehr interessant, hab's bisher nicht wirklich mitgekriegt. teste ich mal, sollte alles glatt gehen freut's mich, ansonsten muss du wohl nochmals dran glauben ;-)
Antworten