Für die Osterfeiertage hätte ich mal eine kleine Frage an die Weisheit der Cloud: Wie gestern angekündigt, hatte ich versucht, Daniel Shiffmans Vektor-Tutorials aus »The Nature of Code« in Graphics.py nachzuprogrammieren. Lief auch eigentlich alles gut, nur wenn ich eine Interaktion mit dem Nutzer einbauen wollte, rannte ich in Probleme. Solange ich den Nutzer außen vorlies und einfach ein Laufvariable hochzählte, war alles in Ordnung.
keep_going = True i = 0 while keep_going: # snip while i > 1200: keep_going = False win.close() sys.exit() i += 1 c.move(velocity.x, velocity.y) c.draw(win) gfx.update()
Die Animation läuft dann schön flüssig und ohne Ruckeln. Möchte ich sie aber in einer Endlosschleife laufen lassen, in der der Nutzer entscheidet, wenn die Schleife beendet wird, dann wird es unschön: Sobald ich checkMouse()
oder checkKey()
in die Schleife einbaue, beginnt das Fenster ganz schön zu flackern und die Animation ruckelt gewaltig.
Daher meine Frage an Euch da draußen. Ist das eine Beschränkung von graphics.py
, die der Einfachheit und Anfängerfreundlichkeit der Bibliothek geschuldet ist, oder habe ich da etwas übersehen? Ich bin für jede Antwort und jeden Hinweis in meinen (Email-) Kommentaren oder über die sozialen Netze dankbar.
Hier der komplette Quellcode:
from pvector import PVector import graphics as gfx import sys WIDTH = 400 HEIGHT = 400 RADIUS = 16 FPS = 15 location = PVector(100, 100) velocity = PVector(1.0, 3.3) win = gfx.GraphWin("Bouncing Ball", WIDTH, HEIGHT, autoflush = False) win.setBackground("yellow") c = gfx.Circle(gfx.Point(location.x, location.y), RADIUS) c.setFill("red") c.setOutline("black") c.draw(win) keep_going = True i = 0 while keep_going: c.undraw() location.add(velocity) # check border if (location.x > WIDTH - RADIUS) or (location.x < RADIUS): velocity.x *= -1 if (location.y > HEIGHT - RADIUS) or (location.y < RADIUS): velocity.y *= -1 while i > 1200: keep_going = False win.close() sys.exit() i += 1 c.move(velocity.x, velocity.y) c.draw(win) gfx.update()
In der Zwischenzeit werde ich mal versuchen, Shiffmans Vektor-Tutorien in Pygame Zero nachzubauen.1 Still digging!
Über …
Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!
Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.
Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.
Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes
von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.
Werbung
Diese Spalte wurde absichtlich leergelassen!