Anuncios Google

Unidades, decenas y centenas

Muy buenas,

resulta que estoy con mi "aprendizaje" particular en este mundillo, y uno de mis ejercicios consiste en un RPG de lucha por turnos. Algo sencillote, no os vayáis a pensar xD.

El problema me viene en los cálculos de daño.Mi idea es mostrarlos en pantalla, pero usando sprites en lugar de números. Me explico:

-A ataca de alguna manera a B.

-B recibe un daño.

-El daño se representa en pantalla numéricamente.

Ahora, si tengo los sprites del 0 al 9, y pretendo que se escriban de manera que indiquen el daño, me encuentro con un problema. Supongamos que el daño es 132. En teoría, habría que dividir el nº en centenas, decenas y unidades, o sea, dejar 100, 30 y 2. Luego con unos cuantos if, sería:

if(centenas==100)
{
    PA_CreateSprite(lo que sea, x, y);   //Se crea el sprite
    PA_SetSpriteAnim(frame 1);   //Se pone el frame que indica el 1
}
if(decenas==30)
{
    PA_CreateSprite(lo que sea, x+1, y);
    PA_SetSpriteAnim(frame 3);   //Se pone el frame que indica el 3
}
if(unidades==2)
{
    PA_CreateSprite(lo que sea, x+2, y);
    PA_SetSpriteAnim(frame 2);   //Se pone el frame que indica el 2
}

Esa era mi idea. Ahora viene la pregunta: ¿Cómo consigo separar el número en centenas, decenas y unidades? ^^U No sé si es posible de alguna manera (con alguna ecuación o algo) La verdad es que estoy un poco perdido, y no me voy a poner a crear sobre 200 frames para 200 cifras...

¿Algún truquito que me pueda ayudar? Lo agradecería... ^^U

 


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderás trucos para resolver tus dudas antes.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Habria que crear 10 frames,

Habria que crear 10 frames, nada mas.

 

Yo lo haria asi:

 

/* Realiza el daño, descompenemos el daño en unidades centenas y decenas. Voy a poner el metodo de Antonio para ello: */
unidades = daño % 10;
decenas = (daño / 10) % 10;
centenas = (daño / 100) % 10;
 
// Y ahora creamos el sprite de las centenas
PA_CreateSprite(lo que sea, x, y);
 
PA_SetSpriteAnim(0,0,centenas);
 
// El de las decenas, lo separaremos un poco de las centenas:
 
PA_CreateSprite(loquesea,x+8,y+8)
 
PA_SetSpriteAnim(0,1,decenas);
 
// Y el de las unidades y habremos terminado:
 
PA_CreateSprite(loquesea,x+16,y+16)
 
PA_SetSpriteAnim(0,2,unidades);

 

Ya me cuentas como te ha ido y tal...

 

Saludos!

Ahi tienes para dividir el

Ahi tienes para dividir el número en cifras...

 

int numero = 565;
 
int unidades = numero % 10;
int decenas = (numero / 10) % 10;
int centenas = (numero / 100) % 10;
 
...

Imagen de Aguilera_87

gracias crak!

esto me ha venido muy bien para los nunmeros de una cuenta atras con sprites ^^

Imagen de best_guitar

yo creo que lo correcto

yo creo que lo correcto seria, hacer el calculo del daño numericamente, y obtienes 132, como ya creo que haces, luego lo convertiria a cadena y mostraria en pantalla segun la posicion del vector char.

por ejemplo:

 

char cadDanno[5]="xxxxx"; //cadena de cinco numeros (0-99999)

sprintf(cadDanno,"%d", intDanno);   //se convierte el numero en cadena

for(int i=0;i<5;i++){      //para cada elemento de cadDaño

   if(cadDanno[i] != 'x'){

             PA_CreateSprite(sprite,loquesea, x+(anchoCaracter * i), y);

             PA_SetSpriteAnim(sprite,frame1+cadDanno[i]); //Teniendo en cuenta que frame1 es la primera animacion

  }

}

 

Imagino que algo asi funcionaria. ¿Tu que crees?

Saludos!

 

EDITO EL CODIGO. no esta probado pero creo que van por ahí los tiros.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.