SAIL - Funkcja RandPointsFromArea

Wszelkie pytania na temat SAIL'a i modowania OW.
Post Reply
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

SAIL - Funkcja RandPointsFromArea

Post by Serpent »

Hi, napisałem funkcję dla Nefarema która zwraca losowe koordynaty (hexy) z danego obszaru. Myślę że może się komuś przydać.

Poniżej znajduje się ulepszona funkcja.
Spoiler:

Code: Select all

// Losuj "num" razy punkty z obszaru pomiedzy koordynatami
Export Function RandPointsFromArea(x1, y1, x2, y2, num);
var list, i;
begin
list := [];

     for i = 1 to num do
         begin
         list := list ^ Rand(x1, x2);
         list := list ^ Rand(y1, y2);
         end;

result := list;
End;  

Oznaczenia:
x1,y1 - koordy hexa położonego w lewym górnym rogu obszaru
x2,y2 - koordy hexa położonego w prawym dolnym rogu obszaru

x1,y1________________________|
|                                            
|              OBSZAR                   
|__________________________x2,y2

num - ilość wylosowanych punktów
Funkcja zwraca listę z koordynatami.
Przykład zastosowania:

Code: Select all

Every 0$01 do
var i, list, un, p;
begin
list := RandPointsFromArea(31, 49, 46, 53, 4);
display_strings := list;
p := 1;

for i = 1 to 4 do
    begin
    PrepareHuman(false, 1, 1);
    un := CreateHuman;
    PlaceUnitArea(un, area02, false);
    ComMoveXY(un, list[p], list[p+1]);
    AddComHold(un);
    p := p + 2;
    end;

End;
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
User avatar
Serpent
Soldier level 10
Soldier level 10
Estonia
Posts: 4175
Joined: Tue Jul 07, 2009 9:13 pm
Location: Polska - EuroStan ZSRE
Contact:

Re: SAIL - Funkcja RandPointsFromArea

Post by Serpent »

Wklejam nieco ulepszoną funkcję. Teraz wybierane są hexy które są puste, dodatkowo hexy na liście nie powtarzają się :P

Code: Select all

Export Function RandPointsFromArea(x1, y1, x2, y2, num);
var list, i, x, y;
begin
list := [];

     for i = 1 to num do
         begin
         x := MultiRand(x1, x2, 1);
         y := MultiRand(y1, y2, 1);

         if HexInfo(x, y) = 0 and not [x,y] in list then
            begin
            list := list ^ x;
            list := list ^ y;
            end
             else
              num := num + 1;

         end;

result := list;
End;
Epickie teksty:
Marek1906: jak zrobic aby sail był zielony?
Kvantovy: Wszystko normalne, wszystko w koło było dziwne
Kvantovy:: To jest fajne, że to nie jest takie głupie
Kvantovy:: remove sos from kanapeczka
Kvantovy:: zdarzają się rzezy które sie filozofom nie śniły
Cenwen: problemem jest gejostwo
"Taki z niego fizyk jak ze mnie baletnica" - Profesor Scholtze o Kvantovym.
JAKBYŁ BYM CZECHEM TO BYM ROZŁOŻYŁ NAMIOT ~Kvanciak
Post Reply