Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Samigabacho en Octubre 31, 2012, 05:37:07 PM

Título: cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: Samigabacho en Octubre 31, 2012, 05:37:07 PM
Hola a todos,
intento que como el asunto de mi pregunta indica, la puntuación se escriba en diferentes colores dependiendo de la cantidad de puntos que se estén haciendo.
En principio pensaba que sería fácil y que no tendría mucho problema e hice algo así:

[gml]if (variable_global_get("score")<50){
    draw_set_font(font0);
    draw_set_color(c_white);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}
if (variable_global_get("score")>50 and variable_global_get("score")<100){
    draw_set_font(font0);
    draw_set_color(c_gray);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}
if (variable_global_get("score")>100 and variable_global_get("score")<150){
    draw_set_font(font0);
    draw_set_color(c_blue);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}[/gml]

Pero siempre me aparece la puntuación en blanco.

Después intenté hacerlo con un switch, aunque no se si esta estructura te permite evaluar expresiones lógicas en los casos

[gml]
switch (variable_global_get("score")){
    //
    case (variable_global_get("score")<50):
     draw_set_font(font0);
    draw_set_color(c_white);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
    break;
case (variable_global_get("score")>50 and variable_global_get("score")<100):
    draw_set_font(font0);
    draw_set_color(c_gray);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
    break;
case (variable_global_get("score")>100 and variable_global_get("score")<150):
    draw_set_font(font0);
    draw_set_color(c_blue);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
    break;[/gml]

Pero también se queda en blanco. Seguro que debe de ser una tontería pero no soy capaz de dar con ellos.

Aunque esto es una segunda pregunta, creo que al estar presente en el código de la primera pregunta podría entrar en el lote, si infrinjo la norma, por favor decirlo y borro esta parte :D ahí voy...

Si draw_rectangle lo hago para que esté pintado por dentro, es decir, que no sea solo el borde, qué debo hacer para sobre pintar la puntuación encima de manera superpuesta al fondo del rectángulo
Gracias.
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: eze_96ram en Octubre 31, 2012, 06:00:59 PM
Quizás el problema sea con variable_global_get("") ya que generalmente busca variables depositadas en el "contenedor" global, si estas usando la variable interna score no se necesita el variable_global_get

PD: no recomiendo variable_[local/global]_[get/set] son demasiado lentas  ;)
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: Samigabacho en Octubre 31, 2012, 06:33:55 PM
Lo siento compañero, pero cambiando por score sigue sin funcionar.
Es como si saliera de  switch  porque al primer disparo que hago ganando puntos deja de pintar.
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: penumbra en Octubre 31, 2012, 08:35:11 PM
1. Tengo entendido que no se pueden usar esas comparaciones con operadores lógicos en la estructura CASE, únicamente puedes comparar contra un solo valor.

2. Si te fijas bien, el script no define qué pasa cuando el valor del score es exactamente igual a 50 o 100. Es probable que el score nunca tenga esos valores, dependiendo de tu juego, pero esto puede ocasionar sorpresas.

3. En la primera condición, cuando el score es menor a 50, qué pasa si cambias el color de blanco a azul?
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: elviskelley en Octubre 31, 2012, 10:17:52 PM
Asi....

if (score <= 50)
{
    draw_set_font(font0);
    draw_set_color(c_white);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}
else
if (score > 50 and score <100)
{
    draw_set_font(font0);
    draw_set_color(c_gray);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}
else
if (score >= 100 and score <150)
{
    draw_set_font(font0);
    draw_set_color(c_blue);
    draw_text(256,450,"Puntos: "+string(score));
    draw_rectangle(250,450,380,475,1)
}
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: LigTopet en Noviembre 02, 2012, 10:28:41 AM
No es necesario poner todo el bloque en cada if, solo el cambio de color y despues dibujar lo demás:

[gml]draw_set_color(c_white)
if(score>=50)
     draw_set_color(c_gray)
if(score>=100)
     draw_set_color(c_blue)

draw_set_font(font0)
draw_text(256,450,"Puntos: "+string(score))
draw_rectangle(250,450,380,475,1)[/gml]

Saludos
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: Samigabacho en Noviembre 02, 2012, 01:39:00 PM
uau! muchas gracias por la ayuda... voy a probar
Gracias!

Nadie tiene sabe cómo hacer esto?

CitarSi draw_rectangle lo hago para que esté pintado por dentro, es decir, que no sea solo el borde, qué debo hacer para sobre pintar la puntuación encima de manera superpuesta al fondo del rectángulo
Gracias.
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: noshy en Noviembre 02, 2012, 04:49:58 PM
Cita de: Samigabacho en Noviembre 02, 2012, 01:39:00 PM
uau! muchas gracias por la ayuda... voy a probar
Gracias!

Nadie tiene sabe cómo hacer esto?

CitarSi draw_rectangle lo hago para que esté pintado por dentro, es decir, que no sea solo el borde, qué debo hacer para sobre pintar la puntuación encima de manera superpuesta al fondo del rectángulo
Gracias.

Debes manejarte con los valores de Depth.
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: Samigabacho en Noviembre 02, 2012, 07:32:50 PM
CitarDebes manejarte con los valores de Depth.
Pero las dos funciones de dibujado (draw_text y draw_rectangle) se hacen desde el mismo objeto, que tiene la misma profundidad "Depth".
Título: Re:cambiar color de los puntos a medida que aumentan o disminuyen
Publicado por: LigTopet en Noviembre 03, 2012, 01:52:52 AM
Unas sola pregunta por tema, pero basicamente lo que pongas primero se dibuja primero (de atras hacia adelante).