За последние 24 часа нас посетили 31746 программистов и 1361 робот. Сейчас ищут 840 программистов ...

У кого есть функция уровн и опыта?

Тема в разделе "PHP для новичков", создана пользователем engine.energy, 5 июн 2015.

  1. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    Мне нужен функция уровень и функция опыта расчета и процент для прогресс бара.

    В гугл искал его нет, поделись кодом.
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Господи спаси нас от гнева норманнов и от engine.energy с его игрой.
     
  3. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
  4. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    VLK, я задал вопрос а не беседу разводить!

    Добавлено спустя 2 минуты 8 секунд:
    mahmuzar, не прогресс.

    А отрабатывает из опыта в расчет уровня или максимальный опыт который будет след уровень для игр.

    пример
    1 ур => 0 опыт
    2 ур => 10 опыт
    и так далее

    Например у меня опыт 12 то итог получаю 2 уровень получаю.
     
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Это уже у тебя по игре. Только ты можешь знать что и как делать.
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    engine.energy, а почему это надо искать в гугле? Тут же элементарная математика. С ней тоже не очень дружите, что-ли?
    Код (Text):
    1.  
    2. function level($experience) {
    3.    return ((int) ($experience / 10)) + 1;
    4. }
     
  7. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    mkramer мне нужно своя опыт а не каждый делитель.

    К примеру:

    Код (PHP):
    1.     $level = array(
    2.         1 => 0,
    3.         2 => 10,
    4.         3 => 50,
    5.         4 => 200
    6.     );
    7.     
    8.     function GetLevel($exp) 
    9.     {
    10.         
    11.     }
    12.     
    13.     function GetExp($exp) 
    14.     {
    15.         
    16.     }
    17.     
    18.     function GetMaxExp($exp) 
    19.     {
    20.         
    21.     }
    22.  
    23.     $exp = 10;
    24.     echo 'Level: ' . GetLevel($exp);
    Добавлено спустя 9 минут 45 секунд:
    Сделал так пофик на него и так норм работает!

    Код (PHP):
    1.     function __construct($user)
    2.     {
    3.         self::$_exp = $user->exp;
    4.         self::$_data = array_reverse(array(
    5.             1 => 0,
    6.             2 => 50,
    7.             3 => 200,
    8.             4 => 500
    9.         ), true);
    10.     }
    11.     
    12.     function GetLevel()
    13.     {
    14.         foreach(self::$_data AS $level => $max_exp)
    15.         {
    16.             if($max_exp <= self::$_exp)
    17.             {
    18.                 return $level;
    19.             }
    20.         }
    21.     } 
    Добавлено спустя 21 минуту 28 секунд:
    Напилил короче с гугла всяких бардаков и написал свой и все получилось.

    Поделю вам код.
    Тема #
    Код (PHP):
    1. <?php
    2.  
    3. namespace Classes\Models\User\Bar;
    4.  
    5. class Model
    6. {
    7.     static protected $_exp;
    8.     static protected $_data;
    9.     
    10.     function __construct($user)
    11.     {
    12.         self::$_exp = $user->exp;
    13.         self::$_data = array_reverse(array(
    14.             1 => 0,
    15.             2 => 50,
    16.             3 => 200,
    17.             4 => 500
    18.         ), true);
    19.     }
    20.     
    21.     function GetLevel()
    22.     {
    23.         foreach(self::$_data AS $level => $max_exp)
    24.         {
    25.             if($max_exp <= self::$_exp)
    26.             {
    27.                 return sprintf('%s уровень', $level);
    28.             }
    29.         }
    30.     }
    31.     
    32.     function GetMaxLevel()
    33.     {
    34.         return max(array_keys(self::$_data));
    35.     }
    36.     
    37.     function GetExp()
    38.     {
    39.         foreach(self::$_data AS $level => $max_exp)
    40.         {
    41.             if($this->GetMaxLevel() == $this->GetLevel())
    42.             {
    43.                 return self::$_exp;
    44.             }
    45.             elseif($this->GetLevel() == $level)
    46.             {
    47.                 return self::$_exp - $max_exp;
    48.             }
    49.         }
    50.     }
    51.     
    52.     function GetMaxExp()
    53.     {
    54.         foreach(self::$_data AS $level => $max_exp)
    55.         {
    56.             if($this->GetLevel() + 1 == $level OR $this->GetMaxLevel() == $this->GetLevel())
    57.             {
    58.                 return $max_exp;
    59.             }
    60.         }
    61.     }
    62.     
    63.     function GetPercent()
    64.     {
    65.         return ($this->GetExp() * 100 / $this->GetMaxExp());
    66.     }
    67. } 
     
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Вот интересно, человек глупые вопросы спрашивает, при этом вон код пишет и со статически методами и переменными, намеспейс использует, странно все это.
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Не глупые, а трудно понимаемые. Просто у него мышление немного иначе идет в плане общения и разговора ввиду того, что он глухой. Глухие и разговаривают тоже не то чтобы очень понятно. Но это не мешает ему логически мыслить, строить архитектуру, изучать программирование. Он так пишет не потому, что глупый, а потому, что испытывает трудности именно в плане построения речи. Он быть может, поумнее нас будет. Я уже советовал ему больше читать, чтобы речь структурировать. Пока же да, несколько сложно понимать.
     
  10. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну когда перестает работать один из органов чувств обостряются другие, исходя из этой логики он должен читать и писать лучше чем все мы взятые.
     
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    То, что ты сказал, не имеет никакого отношения к логике, если честно :)
    Чтение и письмо никак не связаны с развитием органов чувств. Человек в очках, по-твоему должен читать хуже/медленне/по слогам относительно человека без очков чтоли? :)
     
  12. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    Давай жить дружно и не тыкать носом. Просто код я хорошо понимаю основу, но важно для меня это оптимизация кода. Вот и думал у вас есть идея о оптимизации что я выложил выше кода.

    Добавлено спустя 3 минуты 32 секунды:
    так как foreach жрет много оперативки памяти

    Добавлено спустя 2 минуты 50 секунд:
    Так как школу закончил 7 лет назад, все предметы на отлично, но русского языка всегда плохо и литература.

    Добавлено спустя 2 минуты 32 секунды:
    Я могу написать нормально русского если хорошо мысль будет составить правильное предложение. Но у меня этого не очень выходит....
     
  13. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Зато быстро работает. Это, порой, решает. Ты делал какие-то замеры, чтобы быть уверенным, что именно foreach-и в данный момент как-то тормозят проект? Обычно "бутылочное горлышко" редко когда оказывается в таких местах.
    Как я уже говорил, читай больше книг. Все само на места встанет. Я понимаю, что это, наверное тяжело, говорить, толком не зная, не слыша, правильно говоришь или нет. Хотя мысли-то ясные при этом.

    Это, наверное, все равно, что изучать иностранный язык - чем больше практики, включая чтение, тем лучше. А у тебя практики не так много, сдается мне, для своего возраста в силу известных обстоятельств. Что забавно, тот факт, что ты понимаешь написанное, но сам испытываешь трудности с написанием, тоже вписывается в стадии изучения иностранного языка. Причем в самый финал уже. После которого только практика нужна, не более.
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Да ну. Особенно когда массив из 4 элементов, ну прямо всю оперативу съест, ага :)))
     
  15. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Оптимизировать надо используя вот такие штуки: Профилирование PHP с XHprof. Там будет видно где происходят затыки и куда текут ресурсы. Языковые же конструкции просто работают, плюс-минут микросекунда ничего не решает, а экономия на спичках лишь потеря времени и снижение качества кода, не более того.
     
  16. engine.energy

    engine.energy Новичок

    С нами с:
    31 май 2015
    Сообщения:
    149
    Симпатии:
    0
    romach, спасибо не знал о нем =)
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Я XDebug-ом профилирую. Он тоже умеет в это.