Tablice

psychoszayber

Tablice

Tablice Hmm... jeżeli czytaliście jakiś kurs Delphi Pascala to powinien być tam oddzielny dział "TABLICE". Tablice to są po prostu kilka zmiennych o takiej samej nazwie ale każda ma dopasowany numerek. Tablice mogą mieć 1,2,3 i dalej numerków. np.

```delphi 1 cos :array [0..20] of string;
2 cos :array [0..20,0..20] of string;
3 cos :array [0..20,0..20,0..20] of string;  
4 cos :array [0..20,0..20,0..20,0..20] of string;   ```

itd.. Dzięki temu możemy mieć układ współrzędnych np.

<font face="Courier New"> 3|
2|
1|
0+----
 01234</span>

Można tworzyć mapy gier np. mapa labiryntu:

<font face="Courier New">0
 11111111111111111
 10101010001010101
 10010000101010101
 10101010100010101
 10101110101010101
 10001010101000101
 10100010001010001
 11111111111111111</span>

i teraz bez problemu odczytamy czy np. w pozycji 3,4 (x,y) ma być blok czyli kod

```delphi if cos[3,4]=1 then {procedury} ```

Na zakładce Additional jest komponent DrawGrid on także daje możliwość 2D

Żeby narysować taką mapkę na DrawGird trzeba zrobić prostą procedurę (DrawGird Ustaw FixedCols i FixedRows na 0).

Procedure LoadDrawMap(plik:string;iloscx,iloscy:integer;drawgrid:TDrawGrid;coloroffill,colorofempty:Tcolor);
begin
assignfile(TF,plik);
reset(tf);
licz:=-1;
while not(eof(TF)) do
begin
inc(licz);
readln(TF,str);
for I:=1 to length(str) do
begin
if str[I]='1' then map[I-1,licz]:=true else map[I-1,licz]:=false;
end;
end;
closefile(TF);
{rysowanie-start}
for XX:=0 to 17-1 do
begin
for YY:=0 to 8-1 do
begin
if map[xx,yy] then
begin
 drawgrid.Canvas.Brush.Color:=coloroffill;
 drawgrid.Canvas.PEN.Color:=coloroffill;
 drawgrid.Canvas.Rectangle(drawgrid.CellRect(xx,yy));
 end else
 begin
 drawgrid.Canvas.Brush.Color:=colorofempty;
 drawgrid.Canvas.PEN.Color:=colorofempty;
 drawgrid.Canvas.Rectangle(drawgrid.CellRect(xx,yy));
 end;
 end;
end;
{rysowanie-koniec}
end;

Oczywiście procedurę tą należy używać w Form OnPaint. Świetnie wychodzi ta procedura (Speeeed nawet przy mapach 1000 na 1000). WIEM że można było się obejść bez tablic ale np. w 3D już się nie da.

Jeszcze jedno w openGL do 1 vertexu trzeba X,Y,Z. Wtedy tablice okażą się bardzo pomocne np. gdy chcemy wykonać jakiś szczegółowy model.

Autor PsYcHoSzAyBeR.

 Zaglądajcie na moją stronę psychoszayber.republika.pl tam są przykłady i moje programy.

KONIEC. Napisałem to w 14 min. i 35 s. +- 10s (liczyłem).

4 komentarzy

Czemu beznadziejny? Może san sie wychylisz i coś skrobniesz?
PsYcHoSzAyBeR Dziękim zawsze to coś wiedzy dla mnie he he :) i pozdro

dzieki, bo właśnie szukałem tematu na zaliczenie. Może uda mi się na podstawie tego zrobić jakąś prostą grę.

ta, a ja szukalem sortowania dynamicznych tablic po stringu :/

Ale beznadziejny artykuł... Bosheeeee