Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]funkcja
damian238
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 3.11.2013

Ostrzeżenie: (0%)
-----


Witam,
mam taką funkcję:
  1. function calculateChance($int)
  2. {
  3. $rand = rand(0, 100);
  4.  
  5. if($rand <= $int)
  6. {
  7. return true;
  8. }
  9. else
  10. {
  11. return false;
  12. }
  13. }
  14.  
  15. function biegnij($szybkosc, $technika, $kondycja, $first = 0)
  16. {
  17.  
  18. $szybkoscSkut = floor($szybkosc/200*100);
  19. $technikaSkut = floor($technika/200*100);
  20. $kondycjaSkut = floor($kondycja/200*100);
  21.  
  22. $tor = array(2400, 3000);
  23.  
  24. $value = 0;
  25.  
  26. if(calculateChance($szybkoscSkut)) $value += 1000;
  27. if(calculateChance($technikaSkut)) $value += 1000;
  28. if(calculateChance($kondycjaSkut)) $value += 1000;
  29.  
  30.  
  31. $procentowyBieg = rand($value,100)/100;
  32. echo $first.'<br>';
  33. $bieg = $procentowyBieg * $tor[1];
  34. if($first > 0)
  35. {
  36. $first = floor($first);
  37. $bieg = rand($first+2, $first+7);
  38. }
  39. echo $bieg.'<br>';
  40. if($bieg < $tor[0]) $bieg = $tor[0];
  41.  
  42. return $bieg;
  43. }
  44.  


a w bazie mam taką linijkę odpowiadającą zapisowi tej wartości:
  1. `bieg` varchar(10) NOT NULL,

i kiedy wykonam ją sobie cronem to mi się nieraz pojawia większa wartość niż 3000, która jest losowana od 2400 do 3000
wie ktoś co tu jest źle? dam pomógł (IMG:style_emoticons/default/wink.gif)

dobra, poradziłem sobie
ma teraz tylko 1 problem, bo im gracz jest lepszy pod względem szybkości, techniki i kondycji tym wartość (czas w sekundach np. 2547) jest większa, a chodzi mi o to by była mniejsza, pomoże ktoś?
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Matematykę w podstawówce miał?

A jak naprawdę, nie miałeś, bądź jesteś na poziomie intelektualnym niższym niż szóstoklasista. To wstaw poprawiony kod, że wyświetla między 2400 a 3000, to ktoś Ci pewnie podpowie.
Go to the top of the page
+Quote Post
--damian238--
post
Post #3





Goście







Nie wiem czy widziałeś, ale napisałem już tam, że problem rozwiązałem, ale mam z czym innym teraz.
I nie wiem czy wiesz, ale ta część jest odpowiedzialna za wynik
  1. $tor = array(2400, 3000);

Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ma teraz tylko 1 problem, bo im gracz jest lepszy pod względem szybkości, techniki i kondycji tym wartość (czas w sekundach np. 2547) jest większa, a chodzi mi o to by była mniejsza, pomoże ktoś?

3000 - $bieg
i bedziesz mial wartosci mniejsze im wieksze.... Dosc logiczne.

Poza tym bieg to liczba a nie zaden tekst, wiec VARCHAR jest lekko chybiony
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.01.2026 - 08:10