Gunnar Bittersmann: Animation mit setTimeOut verzögert nicht

Beitrag lesen

@@Felix Riesterer:

nuqneH

ich überlege gerade, wie ein solcher Code aussehen muss, damit "es funzt". Ist der dann noch sinnvoll wartbar und ebenso deskriptiv, wie eine reine JS-Version? ich vermute nicht.

Ich vermute das Gegenteil. An der Logik ändert sich ja gar nichts. Wenn die Position mit translation() umgesetzt wird, ändert das auch sehr wenig am Code, s.u. Lediglich der Code für die Animation entfällt, was das Ganze noch kürzer macht.

Und da die Spiele-Logik in JS implementiert werden muss (mach das auch mal mit CSS!)

Es mag Freaks geben, die auch das machen würden. Das wäre aber Spielerei, sicherlich nicht sinnvoll. Außer um die Möglichkeiten auszuloten.

So wie es der OP mit Canvas tut. Dabei kann man auch mal einen Smiley über den Bildschirm schieben. Wenn das aber das Ziel für eine produktive Anwendung ist, einen Smiley über den Bildschirm zu schieben, ist Canvas nicht das geeignete Mittel dafür.

dass eine mit CSS-Transitions realisierte Animation sinnvoller - sorry, mittlerweile formulierst Du im Grunde "performanter", was nicht wirklich dasselbe ist - wäre.

Für den Spieler ist sinnvoller und performanter dasselbe. Wirklich.

Zur besseren Hardwareunterstützung wird die Position der Spielsteine nicht mit left und top verändert, sondern mit transform: translation() | translationX() | translationY().

Aha, und daran kann ich dann ablesen, auf welchem Spielfeld sich der jeweilige Spielstein gerade befindet?

Das kannst du an left und top genauso wenig. Genauso gut, wie deine Methode, die von Spielfeldkoordinaten in Bildschirmkoordinaten umrechnet (ich gehe mal ohne in den Code zu schauen davon aus, das es eine solche gibt), könnte sie statt der Werte von left und top auch die von translationX() und translationY() ändern.

Hmm... Es scheint, dass es Dir nicht gelingen will, mich von Deiner Sichtweise zu überzeugen.

Hmm… Liegt das an mir? ;-)

Auf ein Event lauschen? So richtig wie mit JavaScript? Warum nur sollte ich das wollen?

Um die Spielsteine ruckelfrei um die Ecke laufen zu lassen.

Warum animiere ich nicht gleich völlig in JS??

s.o.

Der Algorithmus sucht sich zufällig einen der möglichen Spielzüge aus und setzt ihn um. Was ist daran "unsinnig"? Vielleicht meinstest Du eigentlich "nicht zielorientiert"?

Verstehe, für dich ist der Sinn des Spiels etwas anderes als das Ziel des Spiels. Ziel ist es, zu gewinnen. Sinn ist, sich die Zeit zu vertreiben. ;-)

Das wäre in der Tat eine wesentlich andere Aussage, denn unter "unsinnig" stelle ich mir vor, wie jemand mit dem Spielstein in den Vorratsbereich eines Mitspielers fährt, um dort eine wartende Spielfigur zu schlagen - oder die Figur gleich in die Nase zu stöpseln, oder ... hmm... wer kleine Kinder hat(te), kennt sicher noch andere Beispiele aus dem echten Leben für "unsinnig".

Nach dieser Definition lässt dein Spiel kein unsinnigen Züge zu.

Ich würde jene eher als ungültig bezeichnen. Und als unsinnig die, die dem angestrebten Gewinn des Spiels zuwider sind.

Bspw. nicht ins Haus zu gehen, wenn man davor steht, sondern einen anderen Spielstein zu setzen. Oder sich aufs Loch (Einsatzfeld) eines anderen zustellen, obwohl man andere Steine im Spiel hat. Oder das Loch eines anderen nicht schnellstmöglich wieder zu verlassen …

Qapla'

--
„Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)