2010-09-28 13 views
6

Para un MMORPG World of Warcraft estoy tratando de escribir una lib. El dinero en esos juegos se almacena como un entero y en la moneda del juego no es un número entero, está basado en monedas de oro, plata y cobre.Entero convertir a WoW Gold

Cada 100 cobre es 1 plata y cada 100 plata es 1 oro.

Ahora necesito para convertir un número entero tal que el formato de WoW dinero: por ejemplo

123123 deberían volver: 23c 31s 12g

Alguien sabe cómo hacer esto

+1

qué idioma? – kennytm

+0

Realmente no importa. Solo necesito tener la idea xD –

+3

¿Estás seguro de que hay 32 de plata allí? – SingleNegationElimination

Respuesta

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

En primer lugar devide 123123 a 10000. Esto te da 12.3123. El número entero (12) es el número de oro. El resto (después del delímetro) 3123 divide a 100 para obtener la plata. Esto te da 31.23. De nuevo, la primera parte (31) es la plata y el resto (23) es tu cobre.

En C++ por ejemplo, este algoritmo se verá como

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

pitón:

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

Advertencia: esta respuesta tiene dos errores -> No debe haber un% 100 para los oros, pero el "valor // 10000" y el importe de los negativos no se gestionan correctamente. – gvo

2
  1. Divide número entero de 10 000 (cobre en oro), tomar la parte entera, lo hará ser la cantidad de oro
  2. Tome el resto del paso anterior. Divide por 100 (cobre en plata), será la cantidad de plata.
  3. Tome el resto del paso anterior. Será de cobre.
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"; 

<>;