Поиск подходящей структуры данных для управления статистикой игрока в игре - PullRequest
0 голосов
/ 23 сентября 2010

Я планирую хранить статистику игрока в базе данных для игры, и мне нужно найти подходящую структуру данных для тестирования на соответствие им в коде. Структура должна хорошо работать в php, но меня интересуют любые идеи в учебных целях.

В этой первой итерации псевдокода я представляю многомерные массивы для структур данных, но не думаю, что они достаточно хороши. Какие еще структуры доступны и как программа может получить к ним эффективный доступ, поскольку количество характеристик и ключей, необходимых для нахождения каждого показателя, увеличивается?

Псевдокод: все в масштабе от 1 до 10

$player_base_skill_level
{
  [driving] = 4
  [running] = 6
}

$handicaps
{
  [driving][monster_trucks] = -5
  [running][long_distance] = -3
}

//User wants to drive a monster truck
$action[base_action] = 'driving'
$action[sub1_action] = 'monster_trucks'

function chance_of_success($action)
{
  $degree_of_difficulty = 8;
  $player_actual_skill_level = $player_base_skill_level[$base_action] + $handicaps[$base_action][$sub1_action];

  if($player_actual_skill_level > $degree_of_difficulty = 8)
    return 'success';
  else
    return 'failure';
}

Ключи массива вырастут из-под контроля в этом решении, поскольку все усложняется; Пример: [Driving] [Monster_trucks] [Large_Wheels] или [Driving] [Monster_Trucks] [Small_Wheels], поэтому должен быть лучший способ структурировать данные.

Спасибо

1 Ответ

2 голосов
/ 23 сентября 2010

Одной вещью, которая может быть полезна, является создание объекта статистики игрока. Этот объект может быть либо набором «статистических объектов», т.е. недостатки, навыки и т. д. Если вы делаете это таким образом, вы можете инкапсулировать всю свою работу. Например, у каждого объекта может быть свой собственный метод chance_of_success, который можно вызывать, не беспокоясь о специфике этого объекта.

Я не уверен, какую версию php вы используете, но руководство для классов / объектов: здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...