Noviembre 16, 2010, 11:08:17 PM Ultima modificación: Noviembre 17, 2010, 09:35:22 PM por Munguia
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
 
 
La cosa es que,.... no tengo la menor idea.

http://matuxgames.blogspot.com/

#2 Noviembre 16, 2010, 11:37:28 PM Ultima modificación: Noviembre 16, 2010, 11:51:38 PM por Tyranus
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!

#3 Noviembre 17, 2010, 01:53:30 AM Ultima modificación: Noviembre 17, 2010, 02:27:28 PM por Masterkey
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
La cosa es que,.... no tengo la menor idea.

http://matuxgames.blogspot.com/

#5 Noviembre 17, 2010, 05:05:06 AM Ultima modificación: Noviembre 17, 2010, 05:10:32 AM por DEADOFALL
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
La cosa es que,.... no tengo la menor idea.

http://matuxgames.blogspot.com/

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!

Quieres probar algunos juegos mios, pues visita el "BLOG DE ERIKADAMS"
http://blogs.gamefilia.com/erikadams/31-03-2009/21016/bienvenidos-al-salon-de-juegos-de-el-blog-de-erikadams
Mas de 120000 visitas confirman que alli hallaras diversion :)

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.
-Crear juegos no es un m?todo de quemar tiempo, es una forma de arte.
-Se busca buen programador de IA's.

Si eres nuevo con el Game Maker, te recomiendo que mires este tema:
http://www.comunidadgm.org/index.php?topic=13388.0

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