![]() |
AW: Tetris mit Canvas funktioniert nicht wie es soll
Zitat:
Gruß Arni |
AW: Tetris mit Canvas funktioniert nicht wie es soll
Mach aus dem Button ein Speedbutton.
|
AW: Tetris mit Canvas funktioniert nicht wie es soll
Danke :thumb:
|
AW: Tetris mit Canvas funktioniert nicht wie es soll
Hallo
Es ist wieder ein Problem erschienn aber diesmal liegt es an mir ich erkenne den Felher nicht
Delphi-Quellcode:
Die Blöcke fallen nicht sondern werden sofort neu erzeugt?
procedure THaupt.Neufallen;
var i :integer; kannbewegen : boolean; begin Form2.Spielfeld.Canvas.Brush.Color := clwhite; Form2.Spielfeld.Canvas.Brush.Style := bssolid; Form2.Spielfeld.Canvas.Rectangle(0,0,form2.Spielfeld.Width, form2.Spielfeld.Height); kannbewegen:= false; for i := 0 to high(Block) do begin if (i<>high(block)-3) and (i<>high(block)-2) and (i<>high(block)-1) and (i<>high(block)-0) then begin if not (Block[high(Block)-3].fPosition.y +1 = Block[i].fPosition.y) and (Block[high(Block)-3].fPosition.y +1 <>0) then begin if not (Block[high(Block)-2].fPosition.y +1 = Block[i].fPosition.y) and (Block[high(Block)-2].fPosition.y +1 <>0) then begin if not (Block[high(Block)-1].fPosition.y +1 = Block[i].fPosition.y) and (Block[high(Block)-1].fPosition.y +1 <>0) then begin if not (Block[high(Block)-0].fPosition.y +1 = Block[i].fPosition.y) and (Block[high(Block)-0].fPosition.y +1 <>0) then begin kannbewegen:= true; end; end; end; end; end; end; if kannbewegen then begin Block[high(Block)-3].fPosition.Y := Block[high(Block)-3].fPosition.Y +1 ; Block[high(Block)-2].fPosition.Y := Block[high(Block)-2].fPosition.Y +1 ; Block[high(Block)-1].fPosition.Y := Block[high(Block)-1].fPosition.Y +1 ; Block[high(Block)].fPosition.Y := Block[high(Block)].fPosition.Y +1 ; end; for i := 0 to high(Block) do begin Block[i].zeichen; end; if not kannbewegen then neu; |
AW: Tetris mit Canvas funktioniert nicht wie es soll
Kumpel, du machst mich echt fertig. :)
Delphi-Quellcode:
Das ist sehr unsauber (und geht auch nur, weil TBlock in der selben unit steht). Spendier' TBlock mal eine property X und Y, wie ich‘s dir letztens gezeigt habe.
Block[high(Block) - 3].fPosition.Y
Deine Schleife wird so auch etwas lesbarer. Was soll die eigentlich machen? :gruebel:
Delphi-Quellcode:
n := high(Block);
for i := 0 to n do if (i <> n - 3) and (i <> n - 2) and (i <> n - 1) and (i <> n - 0) then if (Block[n - 3].y + 1 <> Block[i].y) and (Block[n - 3].y + 1 <> 0) then if (Block[n - 2].y + 1 <> Block[i].y) and (Block[n - 2].y + 1 <> 0) then if (Block[n - 1].y + 1 <> Block[i].y) and (Block[n - 1].y + 1 <> 0) then if (Block[n - 0].y + 1 <> Block[i].y) and (Block[n - 0].y + 1 <> 0) then kannbewegen := true; |
AW: Tetris mit Canvas funktioniert nicht wie es soll
Achso. Verstehe. Probier' mal so (ungetestet):
Delphi-Quellcode:
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 for J := 0 to 3 do if (Block[N - J].X + deltaX = Block[I].X) and (Block[N - J].Y + deltaY = Block[I].Y) then Result := false; end; |
AW: Tetris mit Canvas funktioniert nicht wie es soll
Zitat:
|
AW: Tetris mit Canvas funktioniert nicht wie es soll
Zitat:
|
AW: Tetris mit Canvas funktioniert nicht wie es soll
|
AW: Tetris mit Canvas funktioniert nicht wie es soll
Liste der Anhänge anzeigen (Anzahl: 1)
Tja und leider auch wieder Probleme. Aber wieder ein Denkfehler beim drehen von winkelrechts.
Ich hab das spiel jetzt so um geschrieben das man zum testen nur die Nummer des jeweiligen steins eingeben muss damit es erscheint. Für die Verbessrungsvorschläge von Thommas hatte ich bis jetzt noch keine Zeit Winkelrechts = 3 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 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