Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
1

Система уровня и опыта!

03.09.2014, 20:17. Просмотров 827. Ответов 20
Метки нет (Все метки)

Добрый вечер! подскажите пожалуйста как можно сделать в игре уровни и опыт.... никаких соображений нет((
объясните или скиньте пример код!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2014, 20:17
Ответы с готовыми решениями:

Импорт пакетов из директории высшего уровня
грубо говоря: в дирректории проекта папки Globals, Modules и основной файл...

Не получается настроить персонажа на понимание уровня земли
Создал персонажа, настроил бег, сделал нормальный прыжок с гравитацией. Теперь...

Система расчета опыта, как в Steam
checkRank()//каждый раз идет обращение к функции при операциях, связанных с...

Подскажите как побороть такую задачу: Есть формула по которой просчитывается значение для каждого опыта. Например для опыта
Добрый день форумчане. Подскажите как побороть такую задачу: Есть формула по...

Однозначное отделение (классификация) оборудования уровня ядра/аггрегации от уровня доступа
Всем привет. Возник такой вопрос: можно ли по функциям или по железу понять...

20
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
03.09.2014, 21:28 2
Создается таблица (можно и по формуле вычислять) с указанием какому уровню сколько опыта соответствует. За каждое ключевое событие начисляется опыт. Количество выбирает разработчик/гейм-дизайнер. Показатели сравниваются. Профит.
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
04.09.2014, 00:42  [ТС] 3
TanaTiX, извини пожалуйса..... но можно пример кода..?? я всеравно не врубился....
0
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
04.09.2014, 18:11 4
60reg, с примером кода вряд ли - сейчас почти нет времени.
Ну например, допустим у нас опыт для получения уровня равен уровень*500. Следовательно если у персонажа 1485 опыта, то это соответствует 2-му уровню (тут чисто математика, код не должен понадобиться). Персонаж выполнил квест на 30 очков, следовательно у него 1515 опыта, что больше 1500, что соответствует 3-му уровню. Как-то так.
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
04.09.2014, 21:39  [ТС] 5
TanaTiX, я так понял тут нужны массивы..., а у меня с ними полное горе....
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
05.09.2014, 18:54 6
Цитата Сообщение от 60reg Посмотреть сообщение
я так понял тут нужны массивы..., а у меня с ними полное горе....
Придется изучать - без них Вы ничего сделать не сможете. На самом деле ничего сложного в массивах нет, если по-русски, то это обычный нумерованный список. Так как любой массив - это экземпляр класса Array, то предварительно его нужно объявить.
Два способа объявления масива ниже идентичны - выбирайте тот, который больше нравится.
ActionScript 3
1
2
var arr:Array = new Array();
var arr:Array = [];
Массив готов, теперь вы можете обращаться к любому номеру в списке.
Все, что вы можете сделать это либо записать значение, либо прочитать его.
Обращение к элементам массива происходит следующим образом:
ActionScript 3
1
arr[i]; // i - номер элемента массива - нумерация начинается с нуля.
вернемся к нашему массиву и запишем в него данные
ActionScript 3
1
2
3
trace(arr[1]); // пока что тут ничего нет
arr[1] = "one";
trace(arr[1]); // у нас появилась запись
Также забыл упомянуть, что при инициализации массива его можно сразу заполнить даннымиЖ
ActionScript 3
1
2
var arr:Array = [ "one", "two", "three" ];
trace(arr[1]);
также существуют различные метода для управления массивом (нахождение индекса элемента, удаление элементов, добавление элементов - о них вы можете прочитать подробнее в руководстве Adobe).
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
05.09.2014, 20:16  [ТС] 7
Theoryofgames, я Вас правильно понял??

ActionScript 3
1
2
3
4
5
6
function exp():void {
    var levels:Array = [100, 250, 400, 550, 700];
    if (levels = rating) {
        leves +1;
    }
}
rating - это значение из БД.
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
07.09.2014, 18:10 8
Цитата Сообщение от 60reg Посмотреть сообщение
if (levels = rating)
наверно все-таки
ActionScript 3
1
levels == rating;
А вообще это сравнение некорректно - вы сравниваете массив с числом.
Должно быть что-то вроде этого
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const levels:Array = [ 10, 20, 30, 40, 50, 60 ];
var curExp:int = 45; // значение опыта
var curLevel:int = 3; // текущий уровень
var getRealLevel:Function = function() : int
{
  for (var i:int = 0; i < levels.length; ++i)
  {
    var data:int = levels[i];
    if (data > curExp) return i;
  }
  return level.length; // максимальный уровень
}
var realLevel:int = getRealLevel();
if (curLevel != realLevel)
  curLevel = realLevel; // меняем уровень
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
07.09.2014, 19:05  [ТС] 9
Theoryofgames, все равно что-то не то.... или я не так делаю....
Все по порядку!

Объявлена переменная rating
ActionScript 3
1
var rating:Number;
rating берется из БД, и выводиться во флеш так:
ActionScript 3
1
rating_res.text = String(xml.user.rating);
подставил код, который выше указан, немного изменив....,
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const levels:Array = [ 10, 20, 30, 40, 50, 60 ];
var rating:int = 45; // значение опыта
var curLevel:int = 3; // текущий уровень
var getRealLevel:Function = function() : int
{
  for (var i:int = 0; i < levels.length; ++i)
  {
    var data:int = levels[i];
    if (data > rating) return i;
  }
  return level.length; // максимальный уровень
}
var realLevel:int = getRealLevel();
if (curLevel != realLevel)
  curLevel = realLevel; // меняем уровень
сделал текстовое поле level,
но безрезультатно.... ошибок нет, и в поле level тоже ничего нет!!
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
08.09.2014, 12:37 10
Цитата Сообщение от 60reg Посмотреть сообщение
return level.length; // максимальный уровень
Здесь у меня опечатка
ActionScript 3
1
return levels.length
Цитата Сообщение от 60reg Посмотреть сообщение
но безрезультатно.... ошибок нет, и в поле level тоже ничего нет!!
а где вы ему что-то присваиваете?
После вот этого:
Цитата Сообщение от 60reg Посмотреть сообщение
if (curLevel != realLevel) curLevel = realLevel; // меняем уровень
пропишите
ActionScript 3
1
trace(curLevel);
и посмотрите, что выводится.
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
08.09.2014, 14:03  [ТС] 11
Theoryofgames, в трейсе вроде как выводт уровень т.к. написано у Вас, но вот в чем беда..

когда вставляю своё значение rating, выводит 0 (ур.) это получается что мои данные не читает...

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const levels:Array = [ 50, 100, 200, 400, 800, 1600, 3200, 6400, 12800, 25600 ];
var xml:XML = new XML(loader.data);
var rating:int = xml.user.rating;
var curLevel:int;
var getRealLevel:Function = function() : int
{
  for (var i:int = 0; i < levels.length; ++i)
  {
    var data:int = levels[i];
    if (data > rating) return i;
  }
  return levels.length
 
}
var realLevel:int = getRealLevel();
if (curLevel != realLevel)
  curLevel = realLevel; 
 
trace(curLevel);
Добавлено через 17 минут
Theoryofgames, Спасибо огромное разобрался!!!

Добавлено через 23 минуты
Theoryofgames, а такой вопрос...... как прикрутить прогресс бар??

я сделал мувик levelBar

ActionScript 3
1
2
levelBar.width = 139;
levelBar.x ==rate;
но ничего не выходит(
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
08.09.2014, 17:54 12
Цитата Сообщение от 60reg Посмотреть сообщение
evelBar.x ==rate;
= - это присвоение
== - это сравнение
Вы что хотели сделать ?

Вам нужно знать следующие вещи
1 - количество опты до след уровня
2 - текущее кол-во опыта на данном уровне
ActionScript 3
1
2
3
4
5
const maxBarWidth:Number = 100; // максимальная длина прогресс бара
var expAtCurLevel:int = 500;
var expTillNextLevel:int = 1000;
var realWidth:Number = maxBarWidth * (expAtCurLevel / expTillNextLevel);
bar.width = realWidth;
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
08.09.2014, 18:06  [ТС] 13
Theoryofgames, что-то не понял:
ActionScript 3
1
2
3
4
5
const maxBarWidth:Number = 133; // максимальная длина прогресс бара
var expAtCurLevel:int = 5000; //что именно тут?
var expTillNextLevel:int = 10000; // тут писать levels?
 var realWidth:Number = maxBarWidth * (expAtCurLevel / expTillNextLevel);
levelBar.width = realWidth;
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
08.09.2014, 18:22 14
ActionScript 3
1
2
var expAtCurLevel:int = 5000;      // количество опыта на текущем уровне
var expTillNextLevel:int = 10000;  // количество опыта необходимое до следующего опыта
например:
ActionScript 3
1
2
3
4
var level:Array = [ 10, 20, 30, 40, 50, 60 ];
var exp:int = 53;
var expAtCurLevel:int = 3; // [53 - 50];
var expTillNextLevel:int = 7; // [60 - 53];
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
08.09.2014, 18:35  [ТС] 15
Theoryofgames, все равно у меня ничего не выходит......

не могли-бы Вы мне помочь собрать два кода в один.?
вот:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const levels:Array = [10,30,100,200,400,700,1200,2000,3300,4800,6500,9100,12500,17100,25400,,152000,201200];
var rating:int = xml.user.rating;
var curLevel:int;
var getRealLevel:Function = function() : int
{
  for (var i:int = 0; i < levels.length; ++i)
  {
    var data:int = levels[i];
    if (data > rating) return i;
  }
  return levels.length
 
}
var realLevel:int = getRealLevel();
if (curLevel != realLevel)
  curLevel = realLevel; 
 
level.text = String(curLevel);
и вот:
ActionScript 3
1
2
3
4
5
const maxBarWidth:Number = 133; // максимальная длина прогресс бара
var expAtCurLevel:int = 5000; //что именно тут?
var expTillNextLevel:int = 10000; // тут писать levels?
 var realWidth:Number = maxBarWidth * (expAtCurLevel / expTillNextLevel);
levelBar.width = realWidth;
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
08.09.2014, 18:54 16
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const levels:Array = [10,30,100,200,400,700,1200,2000,3300,4800,6500,9100,12500,17100,25400,,152000,201200];
var rating:int = xml.user.rating;
var curLevel:int;
var getRealLevel:Function = function() : int
{
  for (var i:int = 0; i < levels.length; ++i)
  {
    var data:int = levels[i];
    if (data > rating) return i;
  }
  return levels.length
 
}
var realLevel:int = getRealLevel();
if (curLevel != realLevel)
  curLevel = realLevel; 
 
level.text = String(curLevel);
 
const maxBarWidth:Number = 133; // максимальная длина прогресс бара
var expAtCurLevel:int = rating - levels[curLevel];
var expTillNextLevel:int = levels[curLevel + 1] - rating;
var realWidth:Number = maxBarWidth * (expAtCurLevel / expTillNextLevel);
levelBar.width = realWidth;
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
08.09.2014, 19:00  [ТС] 17
Theoryofgames, все равно прогресс бар не шевелиться...
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
09.09.2014, 10:07 18
Цитата Сообщение от 60reg Посмотреть сообщение
Theoryofgames, все равно прогресс бар не шевелиться...
Так он должен меняться только при изменении каких-то значений.
0
60reg
0 / 0 / 2
Регистрация: 07.07.2013
Сообщений: 69
09.09.2014, 15:09  [ТС] 19
Theoryofgames, так я и так изменяю параметр rating, а прогресс бар всегда полный!
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
09.09.2014, 17:28 20
вместо
Цитата Сообщение от Theoryofgames Посмотреть сообщение
var expTillNextLevel:int = levels[curLevel + 1] - rating;
ActionScript 3
1
var expTillNextLevel:int = levels[curLevel + 1] - levels[curLevel];
0
09.09.2014, 17:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2014, 17:28

Как отсортировать элементы 1 уровня многомерного массива по значениям 2 уровня?
Доброе время суток. Есть массив фруктов, у каждого элемента есть название и...

Как выбрать элемент 1 уровня многомерного массива по значениям 2 уровня?
Доброе время суток. Есть массив фруктов, у каждого элемента есть название и...

Как найти элемент 1 уровня многомерного массива по значению его элемента 2 уровня?
Есть многомерный массив типа такого: Array ( =&gt; Array ( ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru