============
== pin tu ==
============
Sprache:delphi
Version: 0.02
Autor: tony (
[email protected])
Datum: 13.01.2002
Einführung
============
Die meisten Puzzles, die ich zuvor gesehen habe, haben quadratische Kacheln, und viele von ihnen können nur durch Vertauschen der Positionen zweier Kacheln verschoben werden. Es fühlt sich so anders an als echte Puzzles, dass es sehr unangenehm ist.
Vor nicht allzu langer Zeit habe ich in „Die Legende von Zhao Yun der drei Königreiche“ ein Puzzle gesehen, dessen Kacheln unregelmäßige Kanten haben (mit konkaven und konvexen Kanten), und das hat mich zum Nachdenken gebracht ... Ich kam auf die Idee, selbst eine ähnliche Software zu erstellen. (Dann habe ich ein ausländisches Puzzle namens bjig32 gesehen. Es war sehr gut. Wenn ich es gesehen hätte, bevor ich mit der Entwicklung dieses Programms begonnen hätte, hätte ich vielleicht nicht daran gedacht, es selbst zu entwickeln, denn meiner Meinung nach gibt es keine Möglichkeit, es zu entwickeln ein so gutes Puzzlespiel.)
wie ich es umsetze
==================
Das gesamte System des Spiels umfasst zwei von mir entworfene Klassen, TTuObj und TTuMng.
TTuObj – bezieht sich auf eine Kachel, die nach dem Ausschneiden ein kleiner Bildausschnitt ist. Sie hat unregelmäßige Grenzen und kann sich in dem Container, in dem sie sich befindet, als Reaktion auf Mausziehereignisse verschieben. Ich habe diese Klasse so entworfen, dass sie von TObject erbt und dann im Konstruktor ein TPanel bzw. ein TImage generiert (der Grund, warum sie nicht von TControl oder direkt von TPanel geerbt wird, liegt darin, dass ich mit der Verwendung von vcl zum Schreiben von Steuerelementen nicht sehr vertraut bin. Wenn Sie können, schreiben Sie es neu. TPanel wird zum Generieren unregelmäßiger Kantenformen verwendet, da TImage kein Handle hat und seine Form nicht ändern kann (ich denke schon), und TImage wird zum Anzeigen von Bildern und zum Bereitstellen von Mausereignissen verwendet. Darüber hinaus zeichnet jedes TTuObj auch die Zeiger des TTuObj um es herum auf und ob eine Verbindung hergestellt wurde. Dies bietet die Möglichkeit, festzustellen, ob die beiden Kacheln verbunden sind, wenn sie nahe beieinander liegen, und jede Kachel nach den Kacheln zu verschieben Es kann die Kacheln verschieben, mit denen es verbunden ist.
TTuMng – ist der Manager des Puzzlespiels. Er ist dafür verantwortlich, ein vollständiges Bild in einzelne Kacheln zu unterteilen, diese zentral zu verwalten und festzustellen, ob alle Kacheln verbunden sind (das heißt, das Spiel ist beendet).
bekannte Fehler
==========
Die Effizienz des gesamten Systems ist immer noch sehr gering, insbesondere beim Verschieben einer Kachel ist das Flackern sehr stark. Nach vorläufiger Beurteilung denke ich, dass es daran liegt, dass beim Verschieben einer Kachel zuerst das PAINT-Ereignis der Kachel selbst ausgelöst wird. und dann wird das PAINT-Ereignis der Kachel selbst ausgelöst, was bedeutet, dass alle Kacheln einmal neu gezeichnet werden. Das Neuzeichnen unregelmäßiger Kantensteuerungen ist von Natur aus ineffizient und flackert . Ich habe versucht, die WM_PAINT-Nachrichtenverarbeitungsfunktion von AImage in TTuObj selbst zu handhaben (das heißt, ein Neuzeichnen ist nicht zulässig, wenn die Kachel gezogen wird), aber ich habe festgestellt, dass nach dem Verschieben der Kachel überall dort, wo sie vorbeikam, ein Nachbild zurückblieb. Das Puzzlespiel in „Three Kingdoms Zhao Yun“ wurde in DirectX geschrieben und es gab überhaupt kein Flimmern. Vielleicht werde ich in Zukunft versuchen, es in DirectX zu schreiben.
Ich hoffe, du kannst mitmachen und es verbessern!!!!!!