PDA

Просмотр полной версии : Расчет получения вещей в galaxy gates Darkorbit


Пиу Пиуу
12.11.2012, 18:46
procedure TForm7.Button1Click(Sender: TObject);
var q,w,e,b,dp,dpk,pt,ptk:double;
I,a:integer;
begin
q:=0;
w:=0;
e:=0;
dpk:=0;
ptk:=0;
a:=StrToInt (Edit1.Text);
for I:=1 to a do
Begin
b:=random()*100;
if (b>=1) and (b<=15) then
q:=q+1 else
if (b>=16) and (b<=40) then
if (b<=24) then
dp:=8000;
if (b<=32) then
dp:=10000;
if (b<=40) then
dp:=12000;
dpk:=dpk+dp;
w:=w+1;
if (b>=41) and (b<=100) then
if (b<=60) then
pt:=80;
if (b<=80) then
pt:=100;
if (b<=100) then
pt:=120;
ptk:=ptk+pt;
e:=e+1;
End;
Edit2.Text:=FloatToStr(q);
Edit3.Text:=FloatToStr(w);
Edit4.Text:=FloatToStr(dpk);
Edit5.Text:=FloatToStr(e);
Edit6.Text:=FloatToStr(ptk);
end;

end.
[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
вот какой ответ выдает , проверил вроде без ошибок , в чем может быть проблема? , да и подскажите как можно получить рандомно целое число , a:=b div 1; не прокатывает

metraz
12.11.2012, 20:39
Не поленись расписать что для чего в своем коде. Здесь нет экстрасенсов.

Пиу Пиуу
12.11.2012, 21:15
procedure TForm7.Button1Click(Sender: TObject);
var q,w,e,b,dp,dpk,pt,ptk:double;
I,a:integer;
begin
q:=0;
w:=0;
e:=0;
dpk:=0;
ptk:=0;
a:=StrToInt (Edit1.Text); //количество энергий
for I:=1 to a do //выполняю цикл столько раз сколько есть энергий
Begin
b:=random()*100; //рандомно выбираю число (1..100)
if (b>=1) and (b<=15) then //15% на выпадения части телепорта
q:=q+1 else
if (b>=16) and (b<=40) then //25% на выпадение доп прочки
if (b<=24) then //с них 25/3% 8к , 25/3% 10к и 25/3% 12к
dp:=8000;
if (b<=32) then
dp:=10000;
if (b<=40) then
dp:=12000;
dpk:=dpk+dp;
w:=w+1;
if (b>=41) and (b<=100) then //и 60% выпадения боеприпас
if (b<=60) then //так же и боеприпасы выпадают по 80 , 100, 120
pt:=80;
if (b<=80) then
pt:=100;
if (b<=100) then
pt:=120;
ptk:=ptk+pt;
e:=e+1;
End;
Edit2.Text:=FloatToStr(q); //выводим сумму всей выпавшей живности
Edit3.Text:=FloatToStr(w);
Edit4.Text:=FloatToStr(dpk);
Edit5.Text:=FloatToStr(e);
Edit6.Text:=FloatToStr(ptk);
end;

end.
Решил написать когда не было интернета , так что в цифрах неточности

SunRRRice
12.11.2012, 21:20
b:=random()*100;
Меня напрягает это . Нужно ведь b:=random(100) чтобы был рандом 1-100.

Пиу Пиуу
12.11.2012, 21:32
Меня напрягает это . Нужно ведь b:=random(100) чтобы был рандом 1-100.

щас поменяю , но с этим оно работало

Добавлено через 3 минуты
[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

вот , теперь число целое , но пишет 1 туда и туда , хотя должно только в одну форму , и еще как не крути все равно выдает 120 патронов и 12к прочки/okay

Вот еще что пишет
[dcc32 Warning] Unit7.pas(48): W1036 Variable 'b' might not have been initialized
[dcc32 Warning] Unit7.pas(69): W1036 Variable 'pt' might not have been initialized
[dcc32 Warning] Unit7.pas(58): W1036 Variable 'dp' might not have been initialized

metraz
12.11.2012, 21:52
if (b>=16) and (b<=40) then //25% на выпадение доп прочки
if (b<=24) then //с них 25/3% 8к , 25/3% 10к и 25/3% 12к
dp:=8000;
if (b<=32) then
dp:=10000;
if (b<=40) then
dp:=12000;
dpk:=dpk+dp;
w:=w+1;
if (b>=41) and (b<=100) then //и 60% выпадения боеприпас
if (b<=60) then //так же и боеприпасы выпадают по 80 , 100, 120
pt:=80;
if (b<=80) then
pt:=100;
if (b<=100) then
pt:=120;
ptk:=ptk+pt;
e:=e+1;


Изза этого у тебя и 12 к прочки и 120 патриков. Исправляй условия.

Пиу Пиуу
12.11.2012, 22:23
if (b>=16) and (b<=40) then //25% на выпадение доп прочки
if (b<=24) then //с них 25/3% 8к , 25/3% 10к и 25/3% 12к
dp:=8000;
if (b<=32) then
dp:=10000;
if (b<=40) then
dp:=12000;
dpk:=dpk+dp;
w:=w+1;
if (b>=41) and (b<=100) then //и 60% выпадения боеприпас
if (b<=60) then //так же и боеприпасы выпадают по 80 , 100, 120
pt:=80;
if (b<=80) then
pt:=100;
if (b<=100) then
pt:=120;
ptk:=ptk+pt;
e:=e+1;


Изза этого у тебя и 12 к прочки и 120 патриков. Исправляй условия.
ситуация стала лучше , теперь выскакивает то 80/100/120 , но в Edit3(количество зарядов доп прочки 1,2,3) и Edit5(количество зарядов с патронами) ставит "1" сколько бы энергий не было , в Edit4(сколько самой доп прочки) Edit6(всех патронов) периодически то там то там выскакивает не целое число виду 3.21435465436

metraz
12.11.2012, 22:41
ситуация стала лучше , теперь выскакивает то 80/100/120 , но в Edit3(количество зарядов доп прочки 1,2,3) и Edit5(количество зарядов с патронами) ставит "1" сколько бы энергий не было , в Edit4(сколько самой доп прочки) Edit6(всех патронов) периодически то там то там выскакивает не целое число виду 3.21435465436
Исправляй) так же и с edit5

if (b>=16) and (b<=40) then //25% на выпадение доп прочки
begin
if (b<=24) then //с них 25/3% 8к , 25/3% 10к и 25/3% 12к
dp:=8000;
if (b<=32) then
dp:=10000;
if (b<=40) then
dp:=12000;
dpk:=dpk+dp;
w:=w+1;
end;

Пиу Пиуу
12.11.2012, 23:29
Спасибо за ответы , не зря голову морочил/dgs уже понял в чем косяк