Forum: Object-Pascal / Delphi-Language
by Bjoerk,
21. Mär 2013
Jetzt kannst du auch beim Array bleiben. Das ist ja nicht grundsätzlich schlecht, nur aufwendiger. Und um eine volle Line zu finden braucht man keine zusätzlichen Objectlisten.
Auf die Schnelle:
DeleteBlock und Clear hatten wir schon letztens.
ColCount (Spaltenanzahl) und RowCount(Zeilenanzahl) des Tetris (Spielfeld):
Die Instanz ruft DelFullLines auf.
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
6. Mär 2013
Warum steigst du denn nicht (endlich) auf ne Liste um?
Mit dem Array zur Not halt so (ungetestet). Nach DeleteBlock darf nur ein gültiger Index übergeben werden, sonst knallt's.
TBlock = class
private
FFarbe : TColor;
FPosition : TPoint;
FID : Integer;
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
6. Mär 2013
Arni, du machst es dir unnötig schwer. Wie findest du denn das Konzept von #25?
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
5. Mär 2013
Was soll denn um Gottes Willen die Stringlist?
Ich hab das Konzept ja von Dir und war damals so begeistert, daß ich es runter programmiert habe. Als ich mit dem Programm dann fertig war ist mir aufgefallen, daß wir es immer nur mir den letzen 4 Blöcken zu tun haben (in meinem Code das Current). Deshalb könnte man statt einer Liste von Blöcken auch einfach ein Spielfeld Array (Zeilen *...
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
21. Feb 2013
Ja, das Drehen ist in der Tat nicht so einfach. Hierzu muß man erst mal wissen um welchen Punkt man drehen will. Was die Sache aber wieder vereinfacht, ist daß sin+/-90° eins bzw. minus eins ist Und Cos Null ist).
Als Drehpunkt bietet sich den Schwerpunkt der Figur an. Dieser ist Näherungsweise SummeXi/4, SummeYi/4.
Dann verschiebt man das Koordinatensystem in diesen Punkt, dreht den...
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
16. Feb 2013
Achso. Verstehe. Probier' mal so (ungetestet):
function THaupt.CanMoveLast(const deltaX, deltaY: integer): boolean;
var
N, I, J: integer;
begin
Result := true;
N := High(Block);
for I := 0 to N - 4 do
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
14. Feb 2013
Mach aus dem Button ein Speedbutton.
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
14. Feb 2013
Eigentlich Ja. Und noch eigentlicher ein Paradebeispiel für eine Basisklasse mit abstrakten Methoden, wo gleich der ganze Stein erfasst wird. BTW, was du selbstgestrickte Speicherverwaltung nennst macht TObjectList aber auch so: TObject(Items).Free
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
14. Feb 2013
Hallo Arni,
war gestern Abend zu müde noch für Erklärungen. Sorry. Es gibt eigentlich nur 2 Änderungen,
a) aus dem Array ist eine TList geworden (weil einfacheres Hinzufügen und Löschen von Blöcken)
b) THaut und die Blöcke haben ein Canvas spendiert bekommen, damit z.B. so was nicht mehr vorkommt:
procedure TBlock.zeichen;
begin
Forum: Object-Pascal / Delphi-Language
by Bjoerk,
14. Feb 2013
Hab' mir den Code gründlich angeschaut. Zu dem Code gäbe es viel zu sagen. Hab' mal 'n bissel was gemacht. :wink:
Auf die einzelnen Blöcke kannst du mit der property Block zugreifen und die X und Y property brauchst du später.
Der Fehler tritt jetzt auch nicht mehr auf.
Gruß
Thomas