2010-09-28 6 views
6

Pour un MMORPG World of Warcraft im essayant d'écrire une lib. L'argent dans ces jeux est stocké en tant que nombre entier et dans la monnaie du jeu n'est pas un nombre entier il est basé sur les pièces d'or, d'argent et de cuivre.Entier convertir en WoW Gold

Chaque 100 cuivre est 1 argent et chaque 100 argent est 1 or.

Maintenant je dois convertir un tel entier au WoW format argent: par exemple

123123 devrait retourner: 23c 31s 12g

Tout le monde sait comment faire

+1

Quelle langue? – kennytm

+0

N'a pas vraiment d'importance. J'ai juste besoin d'avoir l'idée pour ça xD –

+3

Etes-vous sûr qu'il y a 32 argent là-bas? – SingleNegationElimination

Répondre

10

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; 
} 
2

d'abord Devide 123123 à 10000. Cela vous donne 12,3123. Le nombre entier (12) est le nombre d'or. Le reste (après le délimiteur) 3123 passe à 100 pour obtenir l'argent. Cela vous donne 31.23. Encore une fois la première partie (31) est l'argent et le reste (23) est votre cuivre.

En C++, par exemple, cet algorithme ressemblera

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 
3

python:

def fmtGold(value): 
    return "%sc %ss %sg"%(value%100,value/100%100,value/10000%100) 
+0

Attention: Cette réponse a deux bugs -> Il ne devrait pas y avoir un% 100 pour les golds, mais 'value // 10000', et le montant des négatifs ne sont pas gérés correctement. – gvo

2
  1. Divide entier de 10 000 (cuivre en or), prendre la partie entière, il sera soit la quantité d'or.
  2. Prendre le reste de l'étape précédente. Divisez par 100 (cuivre en argent), ce sera la quantité d'argent.
  3. Prendre le reste de l'étape précédente. Ce sera du cuivre.
0

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"; 

<>;