Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pętla for
kropamk
post
Post #1





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


Witam,

mam pętle for w której przechowuje zmienną. Za każdym wywołaniem pętli chciałbym ją zwiększyć (ilość pętli) o tę wartość przechowywaną w pętli. Pokażę kod (IMG:style_emoticons/default/wink.gif)

  1. <?php
  2. if (isset($nowa_wartosc)) {
  3. $wartosc = $nowa_wartosc;
  4. } else {
  5. $wartosc = 2;
  6. }
  7.  
  8. for ($i = $wartosc; $i <5; $i++) {
  9.  
  10. if(isset($_GET['value'])){
  11. $nowa_wartosc = 1 + $wartosc;
  12. echo 'wartosc równa = '.$nowa_wartosc.'</br>';
  13. } else {
  14. echo 'Wartosc bez zmian';
  15. }
  16. }
  17. ?>


Czyli jeżeli w pętli będzie zmienna $nowa_wartosc to chciałbym ją dodać do pętli for ale nie mogę zrobić tego w taki sposób.

Jest taka możliwość ?

[Edit]
Chodzi o to, że jeżeli np. wyślę sobie getem wartość (nie zawszę będzie ona wysłana) to wtedy pętla zwiększa swoją ilość ile razy się wykona a wartość ze zmienna $nowa_wartosc

Pozdrawiam.

Ten post edytował kropamk 6.11.2013, 23:39:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jackussa
post
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 2.09.2010

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


Moja propozycja z "losowaniem"
Możesz ustawić kwotę początkową, maksymalną ilość gier. W metodzie haveIWin domyślnie ustawiłem 25% szans na wygraną

  1. <?php
  2.  
  3. if (isset($_GET['start']))
  4. {
  5. $initMoney = $_GET['start'];
  6. }
  7. else
  8. {
  9. $initMoney = 10;
  10. }
  11. $maxPlays = 5;
  12.  
  13. /////// gramy
  14.  
  15. $bookie = new bookie($initMoney, $maxPlays);
  16. $bookie->play();
  17.  
  18. ///////
  19.  
  20. class bookie
  21. {
  22. const BET_VALUE = 3;
  23. const WIN_VALUE = 10;
  24.  
  25. private $actualMoney;
  26. private $maxPlays;
  27.  
  28. public function __construct($initMoney, $maxPlays)
  29. {
  30. $this->actualMoney = $initMoney;
  31. $this->maxPlays = $maxPlays;
  32. echo 'Kwota poczatkowa: ' . $this->actualMoney . ' zl <br/>';
  33. }
  34.  
  35. public function play()
  36. {
  37. $haveIWin = false;
  38. $maxBids = $this->getMaxBids();
  39. for($i=1; $i<=$maxBids; $i++)
  40. {
  41. if($this->maxPlays > 0)
  42. {
  43. $haveIWin = $this->bid();
  44. echo '<br/>';
  45. if($haveIWin)
  46. {
  47. break;
  48. }
  49. }
  50. }
  51.  
  52. if($haveIWin)
  53. {
  54. $this->play();
  55. }
  56. }
  57.  
  58. private function getMaxBids()
  59. {
  60. return floor($this->actualMoney/self::BET_VALUE);
  61. }
  62.  
  63. private function bid()
  64. {
  65. echo 'Zawieram zaklad <br/>';
  66. $this->actualMoney -= self::BET_VALUE;
  67. $this->maxPlays--;
  68. if($this->haveIWin())
  69. {
  70. echo 'wygrales ' . self::WIN_VALUE . 'zl <br/>';
  71. $this->actualMoney += self::WIN_VALUE;
  72. $result = true;
  73. }
  74. else
  75. {
  76. echo 'nie udalo sie <br/>';
  77. $result = false;
  78. }
  79. $this->printActualMoney();
  80. return $result;
  81. }
  82.  
  83. private function printActualMoney()
  84. {
  85. echo 'aktualny stan portfela: ' . $this->actualMoney . ' zl <br/>';
  86. }
  87.  
  88. private function haveIWin($chance = 25)
  89. {
  90. return (rand(1,100) <= $chance);
  91. }
  92. }
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 03:15