Planet Value
Dla ciekawych w jaki sposób obliczana jest Wartość planety w Stars!
W Stars Calculatorze (do ściągnięcia ze strony Wodza) jest odpowiednia zakładka. Jeśli zależy ci na wzorze to poniżej podaję kilka:
Podstawowy wzór wygląda tak:
intValue:=Integer(Round((Sqrt( Sqr(g) + Sqr(t) + Sqr(r) )/Sqrt(3))*100));
Inaczej : Całkowita zaokrąglona odmiana średniej ważonej odległością od hubów idealnych (pierwiastkowanie pomijalne - ma zmieniać tylko charakterystykę krzywych a nie zmienia charakteru całego wyrażenia).... // tłumaczenie Cozina co z tego wyrażenia wynika ... :) //
gdzie:
g, t, r = Clicks_from_center/Total_clicks_from_center_to_edge
Główne parametry podawane są w "kliknięciach" (od 0 do 100). Dla Rad "kliknięcia" są równe wartości radiacji, wartości Temp i Grav trzeba przeliczyć na kliknięcia (np. w edytorze rasy).
A tutaj kawałek kodu, starałem się go pokomentować.
intGravStat, intTempStat, intRadStat - parametry życiowe planety w "kliknięciach"
Grav.Left, Grav.Right itd. - przedziały życiowe danej rasy w "kliknięciach"
//obliczanie g, t, r
g:=Min((intGravStat - Grav.Left), (Grav.Right - intGravStat)); //Clicks_from_center
g:=g/(Grav.Right - Grav.Mid); // /Total_clicks_from_center_to_edge
t:=Min((intTempStat - Temp.Left), (Temp.Right - intTempStat)); //Clicks_from_center
t:=t/(Temp.Right - Temp.Mid); // /Total_clicks_from_center_to_edge
r:=Min((intRadStat - Rad.Left), (Rad.Right - intRadStat)) //Clicks_from_center
r:=r/(Rad.Right - Rad.Mid); // /Total_clicks_from_center_to_edge
//dla ujemnej planety
NegGrav:=0;
NegTemp:=0;
NegRad:=0;
//ujemna wartość danego parametru to po prostu liczba kliknięć o jakie dany parametr wystaje poza przedział życiowy danej rasy
if (g<0) then
if (intGravStat<Grav.Left) then NegGrav:=(Grav.Left - intGravStat)
else NegGrav:=(intGravStat - Grav.Right);
if (t<0) then
if (intTempStat<Temp.Left) then NegTemp:=(Temp.Left - intTempStat)
else NegTemp:=(intTempStat - Temp.Right);
if (r<0) then
if (intRadStat<Rad.Left) then NegRad:=(Rad.Left - intRadStat)
else NegRad:=(intRadStat - Rad.Right);
//wartość ujemna danego parametru nie może jest maksymalnie -15, stad maksymalna ujemna wartość planety to -45
if (NegGrav>15) then NegGrav:=15;
if (NegTemp>15) then NegTemp:=15;
if (NegRad>15) then NegRad:=15;
//jesli któryś z parametrów życiowych jest immune to g, t lub r przyjmują wartosc 1
if (chkGravImune.Checked) then g:=1;
if (chkTempImune.Checked) then t:=1;
if (chkRadImune.Checked) then r:=1;
//i tu liczymy końcową wartość
if (g>=0) and (t>=0) and (r>=0) then
begin
intValue:=Integer(Round((Sqrt( Sqr(g) + Sqr(t) + Sqr(r) )/Sqrt(3))*100));
//dla małych g, t, r trzeba zmodyfikować nieco wzór
if g < 0.5 then intValue := Integer(Round(intValue * (g + 0.5)));
if t < 0.5 then intValue := Integer(Round(intValue * (t + 0.5)));
if r < 0.5 then intValue := Integer(Round(intValue * (r + 0.5)));
end
else
begin
//a tu wartość ujemnej planety - po prostu suma negatywnych wartości w każdym parametrze
intValue:=-(NegGrav+NegTemp+NegRad);
end;
One
column layout
Two
column layout
Original Author: Henk Poell - Additions by: Tiib, M.A, C.R et al
Raven
Źródło: pl.rec.gry.strategiczne
24 lipca 2002