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.
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 ;)
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.
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?
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)
}
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
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.
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.
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".
Unas sola pregunta por tema, pero basicamente lo que pongas primero se dibuja primero (de atras hacia adelante).