Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Ilość EXP usera w formie grafiki (belki)
Soulast
post
Post #1





Grupa: Zarejestrowani
Postów: 133
Pomógł: 6
Dołączył: 26.10.2009

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


Mam oto taki kod leveli użytkownika:

  1. if ($points >= 0 && $points < 100){
  2. $level_up="1";
  3. }
  4. if ($points >= 100 && $points < 200){
  5. $level_up="2";
  6. }
  7. if ($points >= 200 && $points < 400){
  8. $level_up="3";
  9. }
  10. if ($points >= 400 && $points < 600){
  11. $level_up="4";
  12. }
  13. if ($points >= 600 && $points < 900){
  14. $level_up="5";
  15. }


próbuje zrobić tak aby poza nr levela była pokazana belka a długość jej pokazywałby ile np % jest aktualnie zdobyte w danym levelu.

dodałem jescze css:

  1. <div class='bar' style='width:-----a tutaj właśnie jakiś kod np ile % zostało zdobyte w danym levelu ----;'>$level</div>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Blame
post
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Hę? To skąd ty bierzesz te punkty? Znaczy ile kto ma na danym poziomie?
No ale przyjmijmy, że skądś je tam wczytujesz, to teraz przedstawię ci schemat jak ja bym to zrobił, tak żeby zbytnio nie komplikować sprawy i żeby to działało:
$poziom - to będzie poziom usera,
$punkty - a to będą jego punkty na danym poziomie,
$punkty_max - tu mamy ilość punktów potrzebną do następnego poziomu.
Na początek tworzysz switch'a, który w zależności od wartości zmiennej $poziom będzie obliczał % doświadczenia, trzeba to zrobić z racji tego, że jak powiedziałeś im wyższy poziom, tym więcej punktów trzeba zdobyć do następnego. Ale uwaga, ma to sens, dopóty dopóki poziomów jest niedużo, tak <10. Potem najlepiej jakbyś sobie wypracował jakiś wzór, nie wiem, może $punkty_max = $poziom * 100 i wtedy będziesz mógł mieć tylko jedno działanie. No ale wróćmy do switch'a, przykład(zakładamy, że user ma 40pkt a do następnego poziomu musi mieć 200):
  1. switch($poziom){
  2. case 1:
  3. $punkty_max = 200;
  4. $exp = intval($punkty/$punkty_max*100); // wychodzi nam 20
  5. break;
  6. }

Intval użyłem, abyśmy nie otrzymywali liczb dziesiętnych, bo nie można ustalić czemuś szerokości np. 0,3 px. Teraz pora na html i CSS. Cała filozofia polega na tym, aby - jak już ktoś napisał - zrobić dwa div'y, jeden w drugim. Nazwijmy je #max i #exp. #max ma ustawioną szerokość 100px i wysokość dowolną, byleby taką samą miał #max, temu drugiemu ustawiamy tylko wysokość i jakieś tło na początek, szerokość będziemy mu ustalać dynamicznie za pomocą wcześniej otrzymanej zmiennej $max. Teraz następny przykład(zawieje trochę gotowcem (IMG:style_emoticons/default/winksmiley.jpg) , sam HTML, z CSS musisz sobie poradzić sam według moich wskazówek):
  1. <div id="max">
  2. <div id="exp" style="width=<?echo $exp;?>;">
  3. </div>
  4. </div>

I to już koniec, ale się upisałem (IMG:style_emoticons/default/tongue.gif) Dwa kilo mięsa się należy (IMG:style_emoticons/default/cool.gif)
Wszystko pisane z głowy także przepraszam za ew. błędy.

Ten post edytował Blame 25.06.2010, 20:31:55
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: 10.10.2025 - 19:14