Целочисленное преобразование в WoW Gold - PullRequest
6 голосов
/ 28 сентября 2010

Для MMORPG World of Warcraft я пытаюсь написать библиотеку. Деньги в этих играх хранятся в виде целого числа, а в игровой валюте это не целое число, основанное на золотых, серебряных и медных монетах.

Каждые 100 медей - это 1 серебро, а каждые 100 серебра - 1 золото.

Теперь мне нужно преобразовать такое целое число в формат WoW Money: например,

123123 должен вернуть: 23c 31s 12g

Кто-нибудь знает, как это сделать

Ответы [ 5 ]

10 голосов
/ 28 сентября 2010

C #:

int[] WoWMoney(int m)
{
        int[] result = new int[3];
        int copper = m % 100;
        m = (m - copper) / 100;
        int silver = m % 100;
        int gold = (m - silver) / 100;
        result[0] = copper;
        result[1] = silver;
        result[2] = gold;
        return result;
}
3 голосов
/ 28 сентября 2010

питон:

def fmtGold(value):
    return "%sc %ss %sg"%(value%100,value/100%100,value/10000%100) 
2 голосов
/ 28 сентября 2010
  1. Разделите целое число на 10 000 (медь в золоте), примите целую часть, это будет количество золота.
  2. Возьмите остаток от предыдущего шага.Разделите на 100 (медь в серебре), это будет количество серебра.
  3. Возьмите остаток от предыдущего шага.Это будет медь.
2 голосов
/ 28 сентября 2010

Прежде всего, делите 123123 на 10000. Это дает вам 12,3123. Целое число (12) - это золотое число. Остальные (после разделителя) 3123 делятся на 100, чтобы получить серебро. Это дает вам 31,23. Снова первая часть (31) - это серебро, а остальная часть (23) - ваша медь.

Например, в C ++ этот алгоритм будет выглядеть как

int number = 123123;
int gold = number/10000; //this will give you the whole part because of the int type
number = number%10000; //this will make 'number' 3123
int silver = number/100; //this will get the silver
int copper = number%100; //this will get the copper
0 голосов
/ 04 июля 2013

Perl:

print "How much : ";
$money = <>;
chomp $money;

$gold = int($money/10000);
$money = int($money%10000);
$silver = int($money/100);
$copper = int($money%100);


$result = sprintf("You need : %dg %ds %dc", $gold, $silver, $copper);
print "\n$result\n";

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