Zitat:
Aber wofür benutzt du ALengthX noch?
Damit ich ohne viele Abfragen die Mitte der X-Achse bestimmen kann.
Zitat:
... sondern darüber was wann wo gezeichnet werden müsste!
... solltest du dir ein ganz einfaches Ausgabe-Modul bauen.
Werd ich machen
:: Hab ich gemacht, rausgekommen sind 2 Fehler:
- FormBlocks Y-Wert muss "BlockY-i2" gerechnet werden
- Fehler im FormBlocks format, da im Textdokument steht
aber auf der Form ein Platz zuviel zischen dem untersten Block und dem abzweigendem Block (1 weiter rechts); habe aber noch keine Lösung
Jetziger Code:
Delphi-Quellcode:
For i1 := 0 to 3 do s[i1] := '';
For i1 := 0 to 3 do // Block aussehen angeben
For i2 := 0 to 3 do
If ObjType[FallingObject.aType].VMatrix[i1][i2] then
begin
s[i2] := s[i2] + 'x';
FormBlocks
[Round(FallingObject.pX+i1)]
[Round(FallingObject.pY-i2)]
:= 1;
end;
For i1 := 0 to 3 do sl.Add(s[i1]);
sl.SaveToFile('C:\VMatrix2.txt');
sl.Free;
:: Fehler liegt in der Größer der Blöcke; bei Größer 30x30 passt alles; Ich gucke mal was da falsch ist...
:: Fehler gefunden: Es muss einzeln gerundet werden, also:
Delphi-Quellcode:
FormBlocks
[Round(FallingObject.pX)+Round(i1)]
[Round(FallingObject.pY)-Round(i2)]
:= 1;
Vielen Dank, an alle die mir bis jetzt mit der Vorgehensweise geholfen haben
Werde jetzt mich ans bewegen der Objekte machen...
:: So... Jez hab ich kleines bisschen gemacht, funzt auch, nur dass der Block anhält wenn da schon einer is funzt net...
:: Der 1. Code war mist xD ^^ hier ist mein neuer Code (Timer):
Delphi-Quellcode:
// Bewegung
procedure TForm1.tiBewegungTimer(Sender: TObject);
procedure NewBlock;
var
i1, i2: Integer;
begin
FallingObject.aType := 2;
FallingObject.pX := (SizeX/2-BlockSizeX*ObjType[FallingObject.aType].ALengthX/2)/BlockSizeX;
FallingObject.pY := (SizeY-50)/BlockSizeY;
For i1 := 0 to 3 do // Block aussehen angeben
For i2 := 0 to 3 do
If ObjType[FallingObject.aType].VMatrix[i1][i2] then
FormBlocks
[Round(FallingObject.pX)+i1]
[Round(FallingObject.pY)-i2]
:= 1;
end;
const
Verkleinerung = 1;
begin
If FallingObject.pY <= ObjType[FallingObject.aType].ALengthY then
begin
FallingObject.pY := ObjType[FallingObject.aType].ALengthY;
SetFormBlockColors;
NewBlock;
end
{else if FormBlocks[Round(FallingObject.pX)]
[Round(FallingObject.pY -Verkleinerung)]
<> 0 then
begin
SetFormBlockColors;
NewBlock;
end} // FUNZT NIT!!!
else
begin
FallingObject.pY := FallingObject.pY - Verkleinerung;
SetFormBlockColors;
end;
end;
Bloß wie kriege ich's hin, dass das funzt, wo steht "FUNZT NIT!!!"?
Also, mit welchem "Gedanken"? ^^
Mfg, Destroxi