Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]funkcja
damian238
post 24.11.2013, 15:32:54
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ł 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 24.11.2013, 15:52:39
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 24.11.2013, 17:05:47
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 25.11.2013, 08:01:18
Post #4





Grupa: Moderatorzy
Postów: 36 557
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 14:37