PHP - Porcentaje de daño (MySQL / PHP)

 
Vista:
Imágen de perfil de Kelys

Porcentaje de daño (MySQL / PHP)

Publicado por Kelys (55 intervenciones) el 10/08/2015 05:53:26
Buenas. Les comento mi situación, estoy desarrollando un juego online donde algunos datos son almacenados mediante una base de datos MySQL, en este caso en particular (sobre ésto es mi pregunta) los usuarios pueden adquirir vehículos los cuales son almacenados acá:

Tabla 'autos'
IMG: http://i.imgur.com/JhyM14c.png

Ahora bien, voy al grano:

En el juego todo vehículo se rompe o deja de funcionar cuando su "Vida" es 350. El estado impecable o sin daños de los vehículos es de "Vida" 1000. Esa información se mostrará en una página web (una especie de panel donde puede verse qué vehículo tienen los jugadores), tranquilamente podría usar la definición de "vida del vehículo" (por así decirlo), pero se me ocurrió un porcentaje de daños, sí, vendría a ser esto básicamente: si su "Vida" es de 350, aparecería en daños: 100% (ya que el vehículo está roto), si su "Vida" es de 1000 aparecería en daños: 0% (ya que el vehículo está sano).

Mi pregunta sería: ¿qué código más directo podría usar sin tener que estar colocando un <?php ?> para cada número (350, 351, 352 y así sucesivamente hasta el 1000)?

Me armé la siguiente tabla de valores pero no sabría cómo colocarlos:

Vida | Daños
1000 = 0
975 = 5
950 = 10
925 = 15
875 = 20
850 = 25
825 = 30
775 = 35
750 = 40
725 = 45
675 = 50
650 = 55
625 = 60
575 = 65
550 = 70
525 = 75
475 = 80
450 = 85
425 = 90
400 = 95
350 = 100

Yo intenté de la siguiente manera o formato, pero evidentemente lo hice mal:

IMG: http://i.imgur.com/DgY5Pfl.png

<?php if($playerv1['Vida'] >= 350){echo '100%';}?>
<?php if($playerv1['Vida'] >= 400){echo '95%';}?>
<?php if($playerv1['Vida'] >= 425){echo '90%';}?>
Y así sucesivamente con los valores de la tabla de arriba, hasta llegar al...
<?php if($playerv1['Vida'] == 1000){echo '0%';}?>


Espero haberme explicado bien, desde ya muchas gracias por pasarse por acá y disculpen la ignorancia, estoy aprendiendo a manejarme con este lenguaje de programación. Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de txema
Val: 79
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Porcentaje de daño (MySQL / PHP)

Publicado por txema (41 intervenciones) el 10/08/2015 12:06:43
Hola Kelys":

Es una cuestión matemática (proporción inversa) llevada a PHP donde el valor 350 corresponde a 100% y el valor 1000 corresponde a 0%. (razón por los que los valores de $playerv1['Vida'] y de 1000 son restados por 350).

Prueba:
1
2
3
4
<?php
$vida = $playerv1['Vida'] - 350;
echo round($vida*100/650, 2)."%";
?>

El valor de vida se presenta con dos decimales (round($vida*100/650, 2)) y es capaz de darte valores negativos si el valor es inferior a 350 o superiores al 100% si el valor es superior a 1000.

P.D.: Tu cálculo matemático Vida | Daños no es correcto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema
Val: 79
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Porcentaje de daño (MySQL / PHP)

Publicado por txema (41 intervenciones) el 10/08/2015 13:13:02
¡Sorry!

Me reedito (el script dato nos daba 1000= 100% y 350 = 0%)

Prueba este, (un poco más complejo)
1
2
3
4
<?php
$vida = $playerv1['Vida'] - 350;
echo round(($vida*100/650)*-1+100, 2)."%";
?>

Si requieres la explicación, me la pides.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Kelys

Porcentaje de daño (MySQL / PHP)

Publicado por Kelys (55 intervenciones) el 10/08/2015 18:32:15
Bien txema, gracias. Me sirvió el código. Ahora, lo que quisiera saber es lo siguiente, quisiera que si el daño es entre 0% a 50% aparezca en verde, y si es entre 51% y 100% sea rojo. ¿Es posible? Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema
Val: 79
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Porcentaje de daño (MySQL / PHP)

Publicado por txema (41 intervenciones) el 10/08/2015 19:58:35
Imagino que lo que quieres que el texto vaya en eso color.

Es cuestión de manejar los estilos en las condicionales: (lo edito de memoria por lo que podría haber errores). 325 (650/2) marcaría el 50 %,
1
2
3
4
5
<?php
$vida = $playerv1['Vida'] - 350;
if($vida >= 325){echo '<span style="color:green;">'.round(($vida*100/650)*-1+100, 2).'%;</span>';}
elseif ($vida <= 325){echo '<span style="color:red;">'.round(($vida*100/650)*-1+100, 2).'%;</span>';};
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Kelys

Porcentaje de daño (MySQL / PHP)

Publicado por Kelys (55 intervenciones) el 10/08/2015 20:40:05
Gracias, quedó bien. Ya por último (y perdón por preguntar tanto), ¿cómo podría quitar los decimales? Es decir, el porcentaje que quede de resultado redondearlo para arriba o para abajo, ¿es posible? Para que solo quede un número entero. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema
Val: 79
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Porcentaje de daño (MySQL / PHP)

Publicado por txema (41 intervenciones) el 10/08/2015 20:44:37
round($vida*100/650, 2) indica dos decimales.
round($vida*100/650) a secas te marca 0 decimales. (o si lo quieres round($vida*100/650, 0)
round($vida*100/650, 4) serán 4 decimales.

http://php.net/manual/es/function.round.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar