Agosto 05, 2014, 07:00:54 PM Ultima modificación: Agosto 06, 2014, 05:51:28 PM por Chrom
Hola a todos :D,tengo una duda como de debe hacer para que el juego te pregunte algo ,tu escribas un color ,y ese sea el color del sprite, mi codigo es este:
[spoiler]
if room_exists(color_ball){
if get_string("¿Que color eliges? ","")=="blanco"
with(obj_ball){image_index=0}
if get_string("¿Que color eliges? ","")=="amarillo"
with(obj_ball){image_index=1}
if get_string("¿Que color eliges? ","")=="verde"
with(obj_ball){image_index=2}
if get_string("¿Que color eliges? ","")=="naranja"
with(obj_ball){image_index=3}
if get_string("¿Que color eliges? ","")=="azul"
with(obj_ball){image_index=4}
if get_string("¿Que color eliges? ","")=="rojo"
with(obj_ball){image_index=5}
if get_string("¿Que color eliges? ","")=="negro"
with(obj_ball){image_index=6}
if get_string("¿Que color eliges? ","")=="morado"
with(obj_ball){image_index=7}
if get_string("¿Que color eliges? ","")=="multicolor"
with(obj_ball){sprite_index=spr_ball_multicolor}
room_goto(room1)
}
[/spoiler]
Cuando le doy OK no cambia de room sigue ahi la pregunta . Como se deberia hacer , Por favor ayuda
Uso( :GM8:)

La pregunta sigue ahí porque la estás haciendo 9 veces. Tu código está muy repetitivo, en vez de preguntar en forma innecesaria deberías preguntar una sola vez y usar un switch en vez de todos esos if:

var color,i;
if room_exists(color_ball)
{
color=get_string("¿Que color eliges? ","");
switch color
{
case "blanco":
i=0;
break;
case "amarillo":
i=1;
break;
.
.
.
case "multicolor":
obj_ball.sprite_index=spr_ball_multicolor;
i=0;
break;
default:
i=-1;
}
if i!=-1
obj_ball.image_index=i;
else
show_message("El color no existe");
room_goto(room1);
}


Este código asume que en el caso multicolor el sprite comienza mostrando la subimagen 0 y en caso de que no se ingrese un color válido, muestra un mensaje de advertencia pero tú debes decidir qué pasa en ese caso.



Cita de: Guacusio en Agosto 05, 2014, 11:45:18 PM
La pregunta sigue ahí porque la estás haciendo 9 veces. Tu código está muy repetitivo, en vez de preguntar en forma innecesaria deberías preguntar una sola vez y usar un switch en vez de todos esos if:

var color,i;
if room_exists(color_ball)
{
color=get_string("¿Que color eliges? ","");
switch color
{
case "blanco":
i=0;
break;
case "amarillo":
i=1;
break;
.
.
.
case "multicolor":
obj_ball.sprite_index=spr_ball_multicolor;
i=0;
break;
default:
i=-1;
}
if i!=-1
obj_ball.image_index=i;
else
show_message("El color no existe");
room_goto(room1);
}


Este código asume que en el caso multicolor el sprite comienza mostrando la subimagen 0 y en caso de que no se ingrese un color válido, muestra un mensaje de advertencia pero tú debes decidir qué pasa en ese caso.
El codigo resulto buenisimo funciona con todos los colores exepto el multicolor ya que es un sprite de 8 subimagenes y como i=0 solo me muestra la primera, tuve que modificarlo para que si sprite_index=spr_ball_multicolor{image_speed=0}else{image_speed=1}
pero igual me sigue mostrando la primera imagen que estoy haciendo mal  :'( Muchas Gracias por el codigo Guacusio  :D.

CitarEl codigo resulto buenisimo funciona con todos los colores exepto el multicolor ya que es un sprite de 8 subimagenes y como i=0 solo me muestra la primera, tuve que modificarlo para que si sprite_index=spr_ball_multicolor{image_speed=0}else{image_speed=1}
pero igual me sigue mostrando la primera imagen que estoy haciendo mal  :'( Muchas Gracias por el codigo Guacusio  :D.

Estás poniendo la condición al revés, debería ser así:

if sprite_index=spr_ball_multicolor
     image_speed=1;
else
    image_speed=0;


#4 Agosto 06, 2014, 03:43:40 AM Ultima modificación: Agosto 06, 2014, 05:51:52 PM por Chrom
Bueno Muchas gracias  :D Guacusio gracias a ti resolvi mi duda.Hasta descubrir nuevos codigos como default no sabia que existia eso XD,esto me ayudara en todos mis juegos.

Cita de: Chrom en Agosto 06, 2014, 03:43:40 AM
Bueno Muchas gracias  :D Guacusio gracias a ti resolvi mi duda.Hasta descubrir nuevos codigos como default no sabia que existia eso XD,esto me ayudara en todos mis juegos.Ya pueden cerrar el tema.

Aquí no te van a cerrar el tema, para evitar que gente entre a intentar ayudarte y vea que ya está resuelto (como es mi caso) es preferible que pongas [Solucionado] en el titulo del Mensaje, éditalo y así todo el mundo sabrá que ya está solucionado.

Saludos
"Y cuando termines de hablar... te callas."