Chodzi mi o to jak zrobić żeby losowało wyświetlenie wiadomości.
Mam 2 wiadomości:
Udało ci się.
Nie udało ci się.
Chcę żeby było losowanie po po wciśnięciu przycisku “losuj” ale tak żeby procent posiadanych punktów zwiększała możliwość na 1 wiadomość ale mimo to żeby często losowało 2 wiadomości.
Po wciśnięciu będzie losowanie i wyświetlenie wiadomości.
To wyświetli ci udało się jeśli wartość zmiennej jest ponad 50.
if($zmienna>50)
echo 'udało się';
else
echo 'nie udało się';
Masz pkt od 0 do 250 i coś zwiększasz o 1. Nie wiem co więc muszę rozważyć 3 opcje. Zwiększasz pierwszy, drugi, albo oba. Ale nadal nie wiem jak ty chcesz liczyć te procenty.
Z tego co czytam, chcesz żeby na podstawie tego co masz (tego pkt), i na podstawie twojego wyniku (tego 250) losował ci coś.
Czyli ja bym wziął np policzył liczbę przez te 250. Np ja bym zrobił randoma od 0 do 500. I do tego doliczał te twoje pkt. Np wylosuje ci 200 do tego masz np 60pkt to wyjdzie 260 i wtedy możesz np od 50% dać że mu zaliczyło (czyli tobie zaliczyło). Czym większy próg losowania zrobisz tym większe znaczenie ma losowanie a nie punkty z twojej tabeli.
Ew możesz policzyć np 30/250 to masz 12% i do tego dodać randoma od 0 do 100. Oczywiście znów od 50dajesz udało się.
A takie losowanie nie będzie losowało zawsze tej samej wiadomości jak będę miał np 60 punktów w bazie??
To jest do niczego.Tak się uczę i chce wiedzieć jak to zrobić.
Mi chodzi o takie losowanie jak jest w niektórych grach.
Np na bloodwars.pl jak się idzie na wyprawe to jest losowanie i losuje co się dostanie. Wiem że ta gra nie jest w php dlatego się pytam czy da się tak zrobić.
Przy maksymalnej liczbie punktów będzie maksymalna szansa w wypadku tego doliczania procentów. Wszystko właśnie zależy od tego jaki udział mają mieć te punkty do tego farta z randoma. Wszystko kwestia szczęścia.
Co do rozdawania itemów w grach etc. To tam każdy gracz ma własne losowanie i są porównywane losowane liczby. (w przypadku przydzielania w mmo np)
if(rand()>rand())
echo 'udało ci się';
else
echo 'nie udało ci się';
W tym są takie same szanse na wylosowanie udało ci się, jak w wypadku ograniczenia do 100 i losowania tylko raz. Np tak:
if(rand()%100>100)
echo 'udało ci się';
else
echo 'nie udało ci się';
Uda się, albo się nie uda.
Natomiast w wypadku itemów w grach przeglądarkowych. W bazie są przydzielane id dla każdego itema, jaki można wygrać. Losujesz od minimalnego do maksymalnego id w bazie. I wtedy dostajesz item jaki wylosujesz. Np wylosujesz 45 to dostajesz item o id 45.
A co do twojego postępu w tym losowaniu (z tego co rozumiem). To mógłbyś wykorzystać tą drugą metodę. Zwiększanie szans nie ma szans bytu w takich grach grasz 365dni więc zwiększysz o 365 i potem losujesz najlepszy przedmiot ? Musiałbyś zrobić jakieś przedziały w tym zawierające konkretne itemy. Ale znów czym dalej tym szansa na itemy najgorsze wynosiłą by 0. A szansa na najlepszy na początku bynosiłaby niski procent, a potem coraz większa.
Wg ciebie na jakiej zasadzie jest losowanie u ciebie w tej grze co podałeś ?
Chodzi ci o to ? Po prostu losujesz tak jak w moim przykładzie z tym, że zamiast 50 dajesz “szanse na udaną wyprawę”. Szanse na przegraną są dość niskie, ale zawsze są. Do tego musisz doliczyć twoją siłę w stosunku do doświadczenia. Tutaj również musisz mieć jakiś próg przez który jest zaliczany. Potem oba muszą wyjść na true i wtedy zaliczasz daną wyprawę. To jest ustawiane z góry przy tworzeniu danych wypraw w tym wypadku. A co do gry to każda gra przeglądarkowa tworzona jest w php. Js i ew ajax.
Jeśli wylosujemy liczbę od 1-70 (bo 70%szans na udanie) to wtedy się udaje dość proste.
Jeśli wylosujemy liczbę większą 70-100.Nie* udaje się.
Tutaj właśnie jest ten czynnik losowy o którym mowa w tutku.
Szansę na udaną wyprawę liczymy na podstawie stosunku poziomu postaci do poziomu trudności / posiadanych przedmiotów / statystyk itd. Wszystko to kwestia konkretnej gry.
Np wyliczymy że jest to 70%. Wtedy patrzymy na maksymalną szansę powodzenia wyprawy. Jeśli mamy ponad limit ograniczamy do limitu. Jeśli mniejszy zostawiamy go w spokoju i podstawiamy do ifa.
I teraz losujemy sobie liczbę od 1 do 100. (rand(1,100);). I tą liczbę podstawiamy do ifa (po prostu czy się udało - if(rand(1,100)>szansa_na_wygraną) wygrana else przegrana.
W razie przegranej jakaś kara np do statów / utrata przedmiotu / wirtualnej waluty etc.
W razie wygranej losujemy coś co mamy wygrać. Dodajesz przedmiony do bany danych np mysql. Masz 4 pola. id, nazwa, wymagania, staty (wymagania / staty możesz rozwinąć na kilka komórek). Losujemy id i na podstawie tego id dajemy graczowi item o tym id.