![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 1.02.2017 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam pewien problem, który wydaje się banalny. Otóż chciałbym stworzyć taką zmienną $zmienna["x"]["y"] 5 razy, tak, aby za każdym razem nie była taka sama. Np.
Kod <?php $ilosc = 5; for($i = 0; $i < $ilosc; $i++) { $rand_x = rand(0,10); $rand_y = rand(0,10); $zmienna[$rand_x][$rand_y] = true; } ?> To tworzy 5 razy zmienną, ale czasami jest ona taka sama jak wcześniej. Dałoby się zrobić to tak, aby za każdym razem była inna? PS przepraszam za niejasny język, ale jestem niewyspany i cały dzień myślałem nad poprawnością powyższego kodu. Ten post edytował Przemek19 24.04.2017, 22:12:41 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Musisz sprawdzać czy taki klucz już istnieje w tablicy (isset), jeżeli nie - to dodajemy, jeżeli istnieje to losujemy ponownie do skutku (pętlą while).
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 219 Pomógł: 10 Dołączył: 9.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
ale chcesz uzyskać zmienna[x][y] = losowa, czy zmienna[los1][los2] = boolean ?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No przeciez wyraznie widac co losuje
zmienna[los1][los2] = boolean ![]() @markuz to rozwiazanie ma jedna wade: teoretycznie moze trwac wieki, praktycznie w tym przypadky tak nie bedzie, ale i tak wykona zapewne wiecej operacji niz powinien. Lepsze wydaje sie w tym wypadku wygenerowanie poprostu tablicy z 10 elementami, a potem dac http://php.net/manual/en/function.shuffle.php i pobrac pierwsze 5 elementow. 100% pewnosci ze sie zakonczy ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
A mógłbyś powiedzieć do czego Ci taka tablica?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ja wiem, ja wiem... znaczy ja zgaduje, ja zgaduje:
Kolega Przemek ma mape/plansze i chce na tej mapie/plansze rozlozyc losowo jakies elementy ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 1.02.2017 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
Tak, robię coś w stylu sapera. Wszystko działa, tylko zostało mi losowanie bomb. W ustawieniach mam taką zmienną jak $sets['bombs'], która pokazuje ile bomb ma się znaleźć na planszy. Jest jeszcze zmienna $pole['szerokosc'] i $pole['wysokosc'], które tworzą rozmiar planszy, jako X jest oznaczona wysokość, a jako Y szerokość. Jak mówiłem, niby takie proste, ale nie chce działać. Zrobiłem takie coś dla losowania, ale nadal nie działa:
Kod for($i = 0; $i < $ilosc; $i++) { $rand_x = rand(0,10); $rand_y = rand(0,10); $zmienna[$rand_x][$rand_y] = true; if(isset($zmienna[$rand_x][$rand_y])) { $i--; } } Spróbuję coś zrobić z funkcją shuffle, Chociaż wydaje mi się, że wtedy np. X, skoro będzie musiał być inny za każdym razem, to na jedną wysokość, będzie tylko jedna bomba. Ma ktoś może jakiś pomysł jak to zastosować? Będę bardzo wdzięczny ![]() Ten post edytował Przemek19 25.04.2017, 15:56:20 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
W ramach porannego rozespania i nie kontaktowania skrótu na refactoring ...
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 1.02.2017 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
Bardzo dziękuję za pomoc! Można jeszcze prosić o zapisanie tego w formie zmiennej $_SESSION['bombs'][$x][$y] = true;? Bo uczę się PHP dopiero kilka miesięcy i jeszcze nie znam funkcji list, explode i array_rand.
![]() Ten post edytował Przemek19 26.04.2017, 19:46:14 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 15:52 |