Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zliczanie prób.
Forum PHP.pl > Forum > Przedszkole
Durkane
Witam.

Mam do zrobienia grę, w której zgadujemy liczbę i muszę też zliczać ilość prób aż do odgadnięcia i gdy liczba zostanie odgadnięta to resetuje się wszystko tylko wcześniej daje komunikat, że gratuluje zgadłeś.
Więc moje pytanie tutaj jest czy funkcja count() nada się do zliczania tego? I co do niej wrzucić? Wrzucić przycisk tam tzn. odczytywanie wciśnięcia przycisku? Oraz jak zrobić by wylosowana liczba była zapamiętywana i resetowała się dopiero, gdy zostanie odgadnięta.
Proszę o nakierowanie mnie jakich funkcji użyć do tego.

Z góry dziękuje za pomoc.
Monter08
Zmienne, które chcesz aby były stałe zapisuj w ciasteczkach lub w sesji jeżeli nie chcesz, żeby jakiś ambitny użytkownik nie podpatrzył sobie liczby, którą ma zgadnąć smile.gif
Durkane
  1. <?php
  2. $num = (string)$_POST["text"];
  3. if(isset($_POST["Wyslij"]))
  4. {
  5. $los = rand(0,100);
  6. echo "$los";
  7. if ($num > $los)
  8. {
  9.  
  10. }
  11. if ($num < $los)
  12. {
  13. echo "Podana liczba jest za mala. Sprobuj jeszcze raz!";
  14. }
  15. else
  16. {
  17. echo "Gratulacje odgadles liczbe!";
  18. }
  19. }
  20. ?>


Mam taki kod, ktory uruchamia php dopiero po wcisnieciu przycisku... Tylko teraz jest taki problem, że nie wyświetla mi też wskazówek z if :/ Czy da się zrobić tak żeby liczby nie pokazywało wgl, a wskazówki dopiero po wpisaniu liczby i wciśnięciu przycisku?

Z tą sesją to nie do końca rozumiem jak to działa, bo czytałem trochę o tym.

Dodatkowo jeżeli usunę
  1. if(isset($_POST["Wyslij"]))
to ciągle mi się wyświetla 1 warunek z IF :/ A także mam podane warunki
  1. $num > $los
oraz
  1. $num < $los
i mimo to podaje np. wpisze poprawna liczbe i wyskoczy,ze odgadlem, ale nie usuwa poprzedniego napisu. -.-
Monter08
Nie usuwaj
  1. if(isset($_POST["Wyslij"]))
bo liczba będzie sprawdzana nawet jak jej nie będzie. Nie uważasz trochę te warunki dziwne? Tłumacząc na polski to wygląda tak:
Jeżeli $num jest większe od $los = nie rób nic,
jeżeli $num jest mniejsze od $los = napisz "Podana liczba jest za mala. Sprobuj jeszcze raz!", jeżeli jest inaczej to napisz "Gratulacje odgadles liczbe!".

^ Nie wydaję Ci się to trochę dziwne i nie logiczne? Jeżeli $num jest większe od $los to pisz, że jest liczba jest większa od wylosowanej i w drugim warunku, że jest mniejsza, a jeżeli $num==$los to wtedy pisz, że odgadł liczbę.

Jeżeli chodzi o sesje, zacznij najpierw od ciasteczek => tutorial a później sesje.
Durkane
Te warunki są tak jak mówisz biggrin.gif nie tą wersję wkleiłem ;p No dobra,ale jeżeli mam
  1. if(isset($_POST["Wyslij"]))
to nie wyświetla mi warunków : / A czy funkcja count() nadaje się do zliczania ilości prób?
Monter08
Pokaż kod HTML, może nie masz buttona nazwanego "Wyslij". Funkcja count służy do liczenia elementów tablicy.
Durkane
A masz rację ;p wartość Value miałem Wyślij, a name jako submit tongue.gif
To jaka funkcja jest do zliczania takich prób? Bo jeżeli dobrze rozumiem ona ma zliczać po prostu wciśnięcia przycisku.
I czy jest jakaś funkcja, która po odgadnięciu liczby zresetuje wszystko na czysto?
Monter08
Przeczytaj na temat ciasteczek, sprawdzasz czy masz ustawione ciastka, jeżeli nie - losujesz liczbę i wrzucasz do ciastka wartość, wpisywaną wartość porównujesz z ciastkiem, jeżeli zgadniesz to ustawiasz nową liczbę - proste. Tak samo z próbami, najpierw ustawiasz ciastko np. ilosc_prob = 0 i potem z każdą próbą dodajesz do tej zmiennej 1.
Durkane
Ok działa zapamiętywanie liczb... Tylko nie działa mi zliczanie prób :/ Robię tak jak w kodzie poniżej (pewnie jestem durny i jakiś banalny błąd tu jest). I mam jeszcze pytanie, czy jest jakaś funkcja czy coś, która resetuje cookies po odgadnięciu tej liczby? tzn. żeby wyzerowała liczbę prób.

  1. <?php
  2. $num = (string)$_POST["text"];
  3.  
  4. if(isset($_POST["submit"]))
  5. {
  6. if(isset($_COOKIE["trials"]))
  7. {
  8. $COOKIE_["trials"]+=1;
  9. echo "<h4>Liczba, ktora podales : ".$num;
  10. echo "<h4>Proby : ".$_COOKIE["trials"];
  11. }
  12. else
  13. {
  14. setcookie("trials");
  15. $COOKIE_["trials"]+=1;
  16. }
  17. }
  18. ?>


W losowaniu nowej liczby po odgadnięciu zrobiłem takie coś :
  1. elseif ($_COOKIE["losowa"] == $num)
  2. {
  3. echo "Gratulacje odgadles liczbe!";
  4. echo "Zagraj jeszcze raz !";
  5. goto los;
  6. }


Ktoś pomoże? snitch.gif Bo nie mogę sobie z tym poradzić od wczoraj sad.gif
czychacz
8 i 15 linia - wywołujesz $COOKIE_, a raczej nie masz w kodzie tej zmiennej - chodzi prawdopodobnie o $_COOKIE, tak, jak w liniach 6 i 10.
Durkane
Ok dzięki nie zauważyłem tego tongue.gif Ale mimo to i tak nie działa zliczanie smile.gif Daje tylko "Proby : 1" i na tym kończy sad.gif

  1. <?php
  2. $Number = (string)$_POST["text"];
  3. echo "<p>Odgadnij Liczbe od 1 do 100</p>";
  4. if(isset($_POST["submit"]))
  5. {
  6. if(isset($_COOKIE["Trials"]))
  7. {
  8. $_COOKIE["Trials"]+=1;
  9. echo "<h4>Liczba, ktora podales : ".$Number."<br>";
  10. echo "<h4>Proby : ".$_COOKIE["Trials"]."<br><br>";
  11. }
  12. else
  13. {
  14. setcookie("Trials",0);
  15.  
  16. }
  17. }
  18. ?>
czychacz
raczej nie bawię się cookiesami, ale domyślam się, że musisz skorzystać tak samo, jak w 14. linii z setcookie() - możliwe, że $_COOKIE['Trials'] jest w trybie read-only i nie wysyła cookiesów do przeglądarki.

//edit: i tak uważam, że szybciej byś to ogarnął na sesjach - session_start() i lecisz smile.gif
Durkane
  1. <?php
  2. $Number = (string)$_POST["text"];
  3. echo "<p>Odgadnij Liczbe od 1 do 100</p>";
  4. if(isset($_POST["submit"]))
  5. {
  6. if(isset($_SESSION["Trials"]))
  7. {
  8. $_SESSION["Trials"]+=1;
  9. echo "<h4>Liczba, ktora podales : ".$Number."<br>";
  10. echo "<h4>Proby : ".$_SESSION["Trials"]."<br><br>";
  11. }
  12. else
  13. {
  14. $_SESSION["Trials"] = 0;
  15.  
  16. }
  17. }
  18. ?>


Zrobiłem takie coś i wgl mi nic nie wyświetla : /
czychacz
a gdzie session_start()?

http://php.net/manual/en/function.session-start.php
Durkane
Masz warunek sprawdzający czy jest sesja tak jak wcześniej sprawdzałem ciasteczka. Jeżeli nie ma to przechodzi do fragmentu kodu
  1. else
  2. {
  3. $_SESSION["Trials"] = 0;
  4.  
  5. }
czychacz
session_start musisz mieć przed JAKĄKOLWIEK operacją na sesji - więc najlepiej na początku pliku
Durkane
Ok działa teraz mam pytanie : > Bo mam tak, na górze mam
  1. <?php
  2. $Number = (string)$_POST["text"];
  3. echo "<p>Odgadnij Liczbe od 1 do 100</p>";
  4. if(isset($_POST["submit"]))
  5. {
  6. if(isset($_SESSION["Trials"]))
  7. {
  8. $_SESSION["Trials"]+=1;
  9. echo "<h4>Liczba, ktora podales : ".$Number."<br>";
  10. echo "<h4>Proby : ".$_SESSION["Trials"]."<br><br>";
  11. }
  12. else
  13. {
  14.  
  15. $_SESSION["Trials"] = 0;
  16.  
  17. }
  18. }
  19. ?>


Później jest
  1. <input type="text" name="text" </input>
  2. <input type="submit" value="Wyslij" id="submit" name="submit">
  3. <br><br>


I znów mam.
  1. <?php
  2.  
  3. $number = (string)$_POST["text"];
  4. if(isset($_COOKIE["Random"]))
  5. {
  6. if(isset($_POST["submit"]))
  7. {
  8.  
  9. if ($_COOKIE["Random"] > $Number)
  10. {
  11. echo "Podana liczba jest za mala. Sprobuj jeszcze raz!";
  12. }
  13. if ($_COOKIE["Random"] < $Number)
  14. {
  15. echo "Podana liczba jest za duza. Sprobuj jeszcze raz!";
  16. }
  17. elseif ($_COOKIE["Random"] == $Number)
  18. {
  19. echo "Gratulacje odgadles liczbe ! ";
  20. echo "Zagraj jeszcze raz !";
  21. goto los;
  22. }
  23. }
  24. }
  25. else
  26. {
  27. los:
  28. $Draw= rand(0,100);
  29. setcookie("Random",$Draw);
  30.  
  31. }
  32.  
  33. ?>


Więc moje pytanie jest jak połączyć te 2 części php ?snitch.gif Bo chce mieć wyświetlane napisy na górze ile prób itd, a napis, że odgadł czy za mała liczba itd na dole przycisku. I do sesji potrzebne to też jest, że jak liczba w ciasteczku zgadza się z tą wylosowaną to resetuje ciasteczko dając nową wylosowaną liczbę + resetuje ilość prób wyświetlając ile prób było.

Ok zrobiłem już to sam biggrin.gif Mam jedynie pytanie jak zrobić, że gdy ktoś odgadnie liczbę to mój przycisk "Wyślij", zamieni się na "Zagraj jeszcze raz" i ten przycisk będzie przechodził od nowa do strony. : > (końcówkę wiem jak zrobić tylko gorzej z zamianą jednego przycisku na drugi).
kapslokk
Ustawiaj sobie zmienną np $odgadniete = 1; a później:
  1. <?php
  2. if($odgadniete == 1) {
  3. echo(' <input type="submit" value="wyslij" id="submit" name="submit">');
  4. }else{
  5. echo('<a href="jakis_link">Zagraj jeszcze raz</a>');
  6. }
  7. ?>
  8.  



Ale z tym:
  1. goto los;

to już przesadziłeś...
Durkane
Ok spróbuję zaraz tak zrobić smile.gif Już tego nie mam biggrin.gif Jest inaczej kod zrobiony tongue.gif

  1. <?php
  2. $Number = (string)$_POST["text"];
  3.  
  4. if(isset($_POST["submit"]))
  5. {
  6. if ($Number == null)
  7. {
  8. $_SESSION["Trials"]=$_SESSION["Trials"];
  9. $num1 ="Liczba, ktora podales :".$Number;
  10. $num2 ="Proby :".$_SESSION["Trials"];
  11. $num3 = "Wprowadź liczbę! ";
  12. }
  13. else
  14. {
  15. if(isset($_SESSION["Trials"]))
  16. {
  17. $_SESSION["Trials"]+=1;
  18. $ses1 = "Liczba, ktora podales :".$Number;
  19. $ses2 = "Proby : ".$_SESSION["Trials"];
  20. }
  21. else
  22. {
  23. $_SESSION["Trials"] = 0;
  24. }
  25. }
  26. }
  27.  
  28.  
  29. $number = (string)$_POST["text"];
  30. if(isset($_COOKIE["Random"]))
  31. {
  32. if(isset($_POST["submit"]))
  33. {
  34. if ($_COOKIE["Random"] > $Number)
  35. {
  36. $kom1 = "Podana liczba jest za mala. Sprobuj jeszcze raz!";
  37. }
  38. elseif ($_COOKIE["Random"] < $Number)
  39. {
  40. $kom1 = "Podana liczba jest za duza. Sprobuj jeszcze raz!";
  41. }
  42. elseif ($_COOKIE["Random"] == $Number)
  43. {
  44. $kom1 = " Gratulacje odgadles liczbe ! ";
  45. $kom1 .= " Zagraj jeszcze raz ! ";
  46. setcookie("Random","");
  47. }
  48. }
  49. }
  50. else
  51. {
  52. $Draw= rand(1,100);
  53. setcookie("Random",$Draw);
  54. }


Dziękuję bardzo wszystkim za pomoc smile.gif Udało mi się wykonać to co chciałem na ciastkach i sesji tongue.gif

A także jeżeli można to mógłby ktoś mi dać jakieś zadanie dla osoby początkującej ? Bo uczę się przez robienie zadań smile.gif A osoby z doświadczeniem bardziej wiedzą jakie zadania pomogą w nauce i utrwaleniu PHP.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.