Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Procentowe obliczanie szans
Maveral
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 8
Dołączył: 30.07.2005

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


Witam. Mam nastepujący problem. Otóż chciałem stworzyć sobie małą symulację kaprysu hehehe Coś na zasadzie jak człowiek ma np. swój ulubiony trunek, ale czasem ma kaprys napić się czegoś innego. Stworzyłem sobie coś takiego:

  1. <?php
  2. if(empty($_POST[submit])) {
  3. echo 'Co pije Adam?<br>
  4. <form action="aaa2.php" method="post">
  5. <select name="trunek">
  6. <option>wino</option>
  7. <option>piwo</option>
  8. </select>
  9. <input type=submit name=submit value=Wyślij>
  10. </form>';
  11. }
  12.  
  13. else {
  14. $look=rand (1,4);
  15. $trunek=$_POST['trunek'];
  16. if ($look==1) {
  17. switch ($trunek) {
  18. case "wino":
  19. echo 'Ahhh dzis dla odmiany piwko :)';
  20. break;
  21. case "piwo":
  22. echo 'Ahhh dziś dla odmiany winko (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ';
  23. }
  24. }
  25. elseif ($look>&& $look<4) {
  26. switch ($trunek) {
  27. case "wino":
  28. echo 'Standardowo winko :)';
  29. break;
  30. case "piwo":
  31. echo 'Super - jak zawsze wypije sobie piwko (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ';
  32. break;
  33. }
  34. }
  35. elseif ($look==4) {
  36. switch ($trunek) {
  37. case "wino":
  38. echo 'A doleje troche piwa do wina :)';
  39. break;
  40. case "piwo":
  41. echo 'Doleje sobie troszkę wina do piwa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ';
  42. break;
  43. }
  44. }
  45.  
  46. }
  47. ?>


Niby to działa (tutaj można zobaczyć), ale:

1. Nie wiem czy nie można by tego kodu jeszcze uprościć. Switch jest wygodny, gdyby doszło więcej opcji w formularzu, ale może jednak da się prościej?
2. Może da się jakoś inaczej (czyt. prościej) ustawić procent szans na wylosowanie jednego z trunków? Teraz robię to przez rand(), który losuje liczby z przedziału 1-4. Wylosowanie 2 lub 3 powoduje wylosowanie zaznaczonego w formularzu trunku (czyli 50% szansy).
3. Jak określić zbiór liczb w if? Mam to zrobione jako "$look>1 && $look<4" czyli przedział (2,3), ale może da się jakoś prościej?

Z góry dzięki za odp (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Maveral 19.06.2007, 14:34:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Nie wiem na co Ci się taki skrypt przyda co prawda, ale może zaciekawi Cię takie rozwiązanie:

  1. <?php
  2.  
  3. $piwo = array('Ahhh dzis dla odmiany piwko :)', 'Super - jak zawsze wypije sobie piwko (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ', 'Doleje sobie troszkę wina do piwa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ');
  4. $wino = array('Ahhh dziś dla odmiany winko (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ', 'Standardowo winko :)', 'A doleje troche piwa do wina :)');
  5.  
  6. if (isset($_POST['trunek'])) echo ${$_POST['trunek']}[array_rand(${$_POST['trunek']}, 1)];
  7. else {
  8. echo '
  9. Co pije Adam?<br />
  10. <form action="'.$_SERVER['PHP_SELF'].'" method="post">
  11. <select name="trunek">
  12. <option value="wino">wino</option>
  13. <option value="piwo">piwo</option>
  14. </select>
  15. <input type="submit" value="wyślij" />
  16. </form>';
  17. }
  18.  
  19. ?>


Ten post edytował nexis 18.06.2007, 23:44:05
Go to the top of the page
+Quote Post
Darti
post
Post #3





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


  1. <?php
  2. else {
  3. $look=rand (0,3);
  4. $trunek=$_POST['trunek'];
  5.  
  6. $piwo = array(
  7. 'Ahhh dziś dla odmiany winko (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ',
  8. 'Super - jak zawsze wypije sobie piwko (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ',
  9. 'Super - jak zawsze wypije sobie piwko (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ',
  10. 'Doleje sobie troszkę wina do piwa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) '
  11. );
  12.  
  13. $wino = array(
  14. 'Ahhh dzis dla odmiany piwko :)',
  15. 'Standardowo winko :)',
  16. 'Standardowo winko :)',
  17. 'A doleje troche piwa do wina :)'
  18. );
  19.  
  20. echo ${$trunek}[$look];
  21. }
  22. ?>


@nexis był szybszy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Darti 18.06.2007, 23:50:59
Go to the top of the page
+Quote Post
Maveral
post
Post #4





Grupa: Zarejestrowani
Postów: 45
Pomógł: 8
Dołączył: 30.07.2005

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


Dzięki wam obu. Wasze propozycje działają tak jak mają działać i zajmują mniej miejsca (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Tak więc dzięki za szybką odpowiedź i pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 23.08.2025 - 17:02