![]() |
Re: [Game] 2.6D - Sandb(L)ox
Zitat:
*edit: moment das kann garnicht sein... es wird schon geguckt ob der focus auf dem fenster ist!... |
Re: [Game] 2.6D - Sandb(L)ox
Liste der Anhänge anzeigen (Anzahl: 1)
Hm, ich hatte ein paar Grafikfehler, als ich ganz im Eck (da wo schon ein Männlein steht) einen hohen Turm baue (siehe Anhang) .. d.h. der oberste Klotz ist nicht sichtbar und in der Mitte irgendwo hat ein Block "Löcher"...
|
Re: [Game] 2.6D - Sandb(L)ox
das passiert wenn du zu hoch baust... ich muss gucken was ich machen kann damit das nichtmehr passiert weil ich nicht "erlauben" kann dass man unendlich hoch baut da sonst zuviel arbeitspeicher verbraucht wird (obwohl ich eigendlich eine idee hätte den code umzuschreiben, sodass das ganze spiel weniger verbruacht und die blöcke in alle richtungen unbegrenzt sind...)
|
Re: [Game] 2.6D - Sandb(L)ox
Du speicherst die Blöcke in einem dreidimensionalen Array? :shock:
Warum nicht einfach eine Liste? |
Re: [Game] 2.6D - Sandb(L)ox
Zitat:
Zitat:
und mit einer solchen liste habe ich bis jetzt noch nicht gearbeitet, da ich bis jetzt nur "TSRings" oder "TStringList" benutzt habe... |
Re: [Game] 2.6D - Sandb(L)ox
Also ich benutze die ständig.
Ist doch einfach!
Delphi-Quellcode:
for i := 0 to 10 do
begin VarX := TX.create(...); VarX.X := 100; Liste.add(VarX); end; |
Re: [Game] 2.6D - Sandb(L)ox
was für eine klasse ist "liste" es muss ja eine liste sein in der ich positionX,positionY,positionZ,(evtl noch einige andere daten wie textur farbe etc) speichern kann... natürlich geht das auch als string den man dann splittet aber die variante mag ich irgendwie nicht ^^
|
Re: [Game] 2.6D - Sandb(L)ox
Du kannst doch auch Listen mit Klassen als Listenelement machen.
|
Re: [Game] 2.6D - Sandb(L)ox
Records sind natürlich auch möglich:
Delphi-Quellcode:
type TBlock = record
posx, posy, posz : integer; end; PBlock = ^TBlock; var lst : TList; p : PBlock; Hinzufügen: lst := TList.Create; New(p); p^.posx := 0; lst.Add(p); Auslesen: p := lst.Items[i]; xpos := p^.posx; Löschen: p := lst.Items[i]; Dispose(p); Delete(i); |
Re: [Game] 2.6D - Sandb(L)ox
Zuerstmal hast du wohl eine "Feldklasse":
Delphi-Quellcode:
Und entweder nimmst du einfach so eine Liste (Da das Object alles sein könnte, muss man sich sicher sein, was man da macht!):
TBlock = class(TObject)
private FX, FY : Integer; public property X : Integer read FX; property Y : Integer read FY; constructor Create(const AX, AY : Integer); end;
Delphi-Quellcode:
Oder du erstellst dir selber eine Liste (aufwendiger ab im endeffekt Fehlersicherer):
FList : TObjectList;
[...] FList := TObjectList.Create; [...] block := TBlock.Create([...]); [...] FList.Add(block); [...]
Delphi-Quellcode:
Und fertig ;)
TBlockList = class (TObject)
private FList : TObjectList; function GetBlock(AIndex : Integer) : TBlock; procedure SetBlock(AIndex : Integer; Value : TBlock); public procedure Add(ABlock : TBlock); procedure Delete(ABlock : TBlock); property Bloecke[AIndex : Integer] : TBlock read GetBlock write SetBlock; default; constructor Create; destructor Destroy; end; Naja jedenfalls die Definition der Klassen. Diese kannst du genauso wie eine TObjectList-Liste verwenden. MfG xZise PS: Das "default;" hinter der Property bedeutet, dass man die nicht aufrufen muss. Wenn du das bei TStrings machst, machst du ja meißt "MyTStrings[<Zeile>]" ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:29 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