![]() |
Delphi-Version: 5
Kippen eines 2d Arrays um 90 Grad
Hallo,
ich will mich hier mal kurz vorstellen. Ich lese hier schon einige Zeit mit, bin aber eigentlich immer noch Anfänger. Mit Arduinos kenne ich mich etwas besser aus. Mit Delphi habe ich erst vor ein paar Wochen angefangen, eigentlich um mit meinen Arduinos zu kommunizieren. Jetzt zu meinem Problem, für das ich keine Lösung gefunden habe. Ich möchte ein kleines Spiel programmieren. Dazu habe ich verschiedene Bausteine die aus einem 2d Array bestehen und jede Zelle stellt eine Farbe dar. Ich möchte die 2d Arrays kippen. Die Arrays habe immer die gleiche Anzahl von Reihen und Spalten. In Delphi sind sieht das so aus:
Code:
So soll das aussehen wenn ich beispielsweise Baustein2 kippe. Durch Mehrfaches kippen wird der Baustein also gedreht, ähnlich wie bei Tetris.
Baustein1 [0 .. 2, 0 .. 2] of TColor;
Baustein2 [0 .. 3, 0 .. 3] of TColor; Baustein3 [0 .. 4, 0 .. 4] of TColor; . . Baustein2 [0 .. 15, 0 .. 15] of TColor; Original 1,2,3,4 5,6,7,8 9,10,11,12 13,14,15,16 Gekippt 4,8,12,16 3,7,11,15 2,6,10,14 1,5,9,13 Ich habe jetzt schon viel dazu gelesen und auch einige Beispiele gefunden. Aber entweder passen die gar nicht oder sind in einer anderen Sprache (c#) die ich nicht gut genug verstehe um das nach Delphi zu übersetzten. Ich wollte das ganze in etwa so aufrufen:
Code:
Also das das Original Array in gekippter Form vorliegt.
Baustein1 := kippen(Baustein1);
Hat jemand dazu ein Anfänger freundliches Beispiel in Delphi, oder gibt es evtl. schon eine fertige Funktion dafür. Würde mich freuen wenn mir da jemand helfen kann. LG Anni P.S. Ich habe Delphi 10.1 in einer Schulversion |
AW: Kippen eines 2d Arrays um 90 Grad
Hey, willkommen in der DP.
Überleg dir mal, wie man die beiden Indizes des Arrays verwenden kann, um Spalten und Zeilen in dem Array zu vertauschen. Also insbesondere: Was passiert, wenn du anstelle von Baustein2[i,j] schreibst: Baustein[j,i]. Beste Grüße, Michael |
AW: Kippen eines 2d Arrays um 90 Grad
Hallo Anni,
geht es dir um die Darstellung, oder um etvl. Rechenoperationen ? Wenn die Delphi 10.1 hast dann käme doch auch Firemonkey in Frage, da kannst du einfach Controls definieren, und dann mit RotationAngle drehen. Ist es so etwas was du suchst ? Bei Rechenoperationen könnten die Matrixfunktionen hilfreich sein, aber da wird es dann Mathematiklastig. Rollo |
AW: Kippen eines 2d Arrays um 90 Grad
Hallo,
mir geht es eigentlich nur um die Rechenoperation. Also wie berechne ich die neue Zelle im Array? Wenn ich also z.b. Baustein[3,5] habe wie kann ich berechnen wo ich den Wert (nach dem kippen) in ein Temporäres Array TMP[?,?] hin kopieren muss. LG Anni |
AW: Kippen eines 2d Arrays um 90 Grad
@alleinherrscher
Dann würde ich das Array sozusagen diagonal rüberklappen... Also Rechte Ecke oben, wäre dann linke Ecke unten. ?!? Das ist aber nicht was ich brauche, oder verstehe ich das nicht richtig? |
AW: Kippen eines 2d Arrays um 90 Grad
Zitat:
Delphi-Quellcode:
result[I, J] := source[J, High(source) - I];
|
AW: Kippen eines 2d Arrays um 90 Grad
|
AW: Kippen eines 2d Arrays um 90 Grad
@Uwe Raabe
Suuuper.... Vielen Dank. Jetzt habe ich es hinbekommen. LG Annika |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz