Witam. Nadal bawie się w tworzenie własnej gry "Kości" i dorobiłem sortowanie kostek według oczek.
Kostek jest jak widać w poniższym kodzie pięć i wylosowane na nich oczka mogą się powtarzać. No
i pytanie czy moiżna jakoś inacze je posortować? Ja tworzę tabliće, którą sortuję procedurą rosnąćo,
a później nazwy dodaje do StringListy. Póki co ważne, że działa ale może ktoś z Was ma jakiś pomysł
jak to uprościć. Używając samej pętli oraz tablicy. A może w ogóle inaczej. Prosiłbym o jakieś źródła.
const
Ile_Kostek = 5;
Odstep_Pomiedzy = 20;
var
I, J : Byte;
SL : TstringList;
PozycjaX, PozycjaY : integer;
TempArray : array[1..Ile_Kostek] of Byte;
begin
for I := Low(TempArray) to High(TempArray) do
begin
Img := TImage(FindComponent(Image_Nazwa + IntToStr(I)));
TempArray[I] := Img.Tag;
end;
SortujTabliceByte(TempArray);
SL := TstringList.Create;
for I := 1 to Ile_Kostek do
begin
for J := 1 to Ile_Kostek do
begin
Img := TImage(FindComponent(Image_Nazwa + IntToStr(J)));
if (Img.Tag = TempArray[I]) and (Pos(Img.Name, SL.Text) = 0) then
begin
sL.Add(Img.Name);
Break;
end;
end;
end;
PozycjaX := 10;
PozycjaY := 20;
for I := 0 to SL.Count - 1 do
begin
Img := TImage(FindComponent(SL[I]));
Img.Left := PozycjaX;
Img.Top := PozycjaY;
PozycjaY := PozycjaY + Img.Height + Odstep_Pomiedzy;
end;
SL.Free;
end;