Hallo!
Zuerst: Der Code stammt nicht von mir, aber der Autor erlaubt es, seinen Code zu verändern. Also habe ich mir vorgenommen, den Figuren einen 3D-Look zu verpassen. Leider scheitere ich da kläglich: Alles, was ich mit
LineTo und
MoveTo erhalte, sind Linien, die sich langsam, Pixel für Pixel nach unten bewegen, noch dazu auf dem Hintergrund, ausserhalb der Figur und dabei zu einem Balken werden!
Wie muss ich den folgenden Code abändern, um ein Ergebnis wie in der rechten Hälfte von Grafik Tetris.jpg zu erhalten? Könntet ihr mir da helfen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TKozyTetris.DrawPieceTo(Canvas: TCanvas; X, Y: Integer; Piece: TPiece; Erase: Boolean); var R: TRect; I, J: Integer; P: TPiece; begin if not Assigned(Piece) then Exit;
P := Piece;
for I := 1 to P.PieceSize do for J := 1 to P.PieceSize do if P.Matrix[I, J] then begin R := Rect( (X + I - 2) * FBlockSize + 1, (Y + J - 2) * FBlockSize + 1, (X + I - 1) * FBlockSize, (Y + J - 1) * FBlockSize);
with Canvas do begin if Erase then Brush.Color := FColor else Brush.Color := P.PieceColor;
FillRect(R); end; end; end; |
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!