ďťż

Ładny brzuch

Witam

A więc mam taki problem robie sobie program do pewnej gry ktory ma za zadanie policzyc miedyz innymi ilosc doświadczenia które mozemy zdobyć w ciągu godziny

procedura wyglaa tak:

var ExpGodzina: Integer; ....... procedure TGlowna.Timer4Timer(Sender: TObject); begin //Liczenie ExpGodzina := ZdobytyExp / Czas1 * 3600; //Wyswietlanie ExpNaGodzine.Caption := IntToStr(ExpGodzina); end;

Czas jest liczony w oddzielnym timerze ktory odsieaz sie co sekunde i zwieksza wartosc czas o 1. Timer wywoluje sie co minute czyli w pierwszej minucie przy ZdobytyExp rownym 18 wynik wedlug kalkulatora jest 1080 a komputera 1098 natomiast przy 36 jest to 2197 zamiast 2160.

Moze mi ktos wytlumaczyć co jest zle i wrazieczego poprawić kod



Integer sie dzieli za pomoca div
Chyba ze ZdobytyExp i Czas1 sa typu zmiennoprzecinkowego...

@up

gdy zmienie to w ten sposob

var     ExpGodzina: Double; ....................... procedure TGlowna.Timer4Timer(Sender: TObject); begin //Liczenie ExpGodzina := ZdobytyExp / Czas1 * 3600; //Wyswietlanie ExpNaGodzine.Caption := FloatToStr(ExpGodzina); end;

przy zdobytyexp = 18 to wyswietla mi 1098,30508474576

a nie moge dzielić przez div gdys jest to dzielenie bez reszty i w wypadku zdobytegoexpa = np 18 to 18 div 60 * 3600 da mi 0 czyli jescze gorszy wynik:(

Jesli czas1 i zdobytyexp sa typu double, to expgodzina niech bedzie integer i:
var    ExpGodzina: integer; ....................... procedure TGlowna.Timer4Timer(Sender: TObject); begin //Liczenie ExpGodzina := round (ZdobytyExp / Czas1) * 3600; //Wyswietlanie ExpNaGodzine.Caption := IntToStr(ExpGodzina); end;
Moze teraz jest dobrze ? Aha -
http://4programmers.net/Delphi/Mod //reszta z dzielenia
http://4programmers.net/Delphi/Div //dzielenie integer

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •