tengo el siguiente problema con un juego (otro m?s),
es en relaci?n con la salud (health)
resulta que si tengo algo como el 90% y tomo un coraz?n que te devuelve un 25 suma 115%
quiero que la salud tenga por l?mite el l?gico 100%, que no se pase
gracias a todos por su paciencia
pura vida
una de las formas mas facil es a la variable la suiguiente:
supongamos que la variable vida este en 90% no, y agarres un paquete que sume 25% ahora la suma de esto dos da 115% tal cual como dijiste. lo siguiente es asi: a esos 115 le restas 100 y el resultado restale a la variable vida,
ejem: VIDA= VIDA-(VIDA- 100);
VIDA= 115 -(115- 100)
VIDA= 115 - 15
VIDA= 100
espero que te sirva
Cita de: MatuX en Noviembre 16, 2010, 11:20:41 PM
una de las formas mas facil es a la variable la suiguiente:
supongamos que la variable vida este en 90% no, y agarres un paquete que sume 25% ahora la suma de esto dos da 115% tal cual como dijiste. lo siguiente es asi: a esos 115 le restas 100 y el resultado restale a la variable vida,
ejem: VIDA= VIDA-(VIDA- 100);
VIDA= 115 -(115- 100)
VIDA= 115 - 15
VIDA= 100
espero que te sirva
EDIT:
De hecho ese c?digo es err?neo, si VIDA vale menos que 100 la respuesta de Matux genera un error.
Ejemplo si VIDA = 70
VIDA = VIDA- (VIDA - 100)
VIDA = 70 - (70 - 100)
VIDA = 70 + 30
VIDA = 100
Lo que hace este codigo es que siempre tengas 100 de vida.
Es m?s se puede demostrar matematicamente:
VIDA = VIDA - (VIDA - 100)
VIDA = VIDA - VIDA + 100
VIDA = (VIDA - VIDA) + 100
VIDA = 0 + 100
VIDA = 100
_____________________________________________________________________________
Lo mejor es:
[gml]health = min(health,100)[/gml]
Saludos!
He usado este simple c?digo para otras variables y no dudo que sirva para la vida: if health>100 health=100 : esto es una simple expresi?n matem?tica. Espero te sirva.
lo que pasa que este procedimiento lo tenes que llamar cuando la vida es mayor a 100 si vos tenes 70 y le suma 25 ese procedimiento no lo tenes que hacer
Munguia, te dejo un ejemplo bien hecho, sin mas complicaci?n, el c?digo que regula eso esta en el objeto Jugador en la Colisi?n con el objeto Cura ;)
Por cierto, si que se complicaron XD
Se complican mucho la vida la respuesta correcta esta desde que tyranus escribi?, deber?a de haber una regla de solo responder cuando la soluci?n anterior no funcione.
pero con el debate y el ensayo y error se aprenden por que nadie nace sabiendo lenguaje de programacion y puedas mejorar la logica del algoritmo, por que en la programacion siempre se aprende algo nuevo, pero no te vallas a enojar mi intencion no es armar una pelea sino que me comprendas okis grax suerte
Otra opci?n, si tienes algun objeto que aumente la vida maxima es la siguiente:
en create:
[gml]vidamax=100[/gml]
y en el momento de coger el objeto que suma vida:
[gml]
vida+=25;
if vida>vidamax {vida=vidamax;}
[/gml]
De esta manera puedes hacer que el maximo de vida aumente aumentando la variable vidamax.
Espero que te haya servido :)
?Nos vemos!
Gracias a todos por su ayuda, muchas opciones me hicieron perder algunas neuronas, la opci?n de masterkey funca muy bien, gracias compas
La forma mas facil de hacerlo es esta.
Evento Create:
[gml]health=100
maxhealth=100[/gml]
Evento Step
[gml]if health>maxhealth then health=100 //Devuelve el valor maximo de la vida.[/gml]
entonces, si has hecho esto, la vida maxima posible va a ser 100(maxhealth) y si tu vida es mayor a 100, va a devolver el valor a la vida maxima posible, si tienes 90 y sumas 25, quedaria en 115, pero si tienes este codigo, te quedara en 100.
Yo estoy deacuerdo con brunoxzx en que la soluci?n de Tyranus es la mejor, pero se le escapa un detalle. El c?digo que propuso es solo para corregir la vida por lo que se debe entender que el c?digo completo quedar?a as?:
[gml]health+=25; //es decir, health=health+25;
health=min(health,100);[/gml]
Este c?digo se puede simplificar as?:
[gml]health=min(health+25,100);[/gml]
...reduciendo toda la operaci?n a solo una l?nea de c?digo ?Eso es eficiencia! :D