Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Fenix oscuro en Mayo 09, 2011, 05:41:12 AM

Título: Ayuda con script
Publicado por: Fenix oscuro en Mayo 09, 2011, 05:41:12 AM
ADVERTENCIA ESTE CODIGO ES LETAL

bueno estaba haciendo un simple juego cuando me di cuenta de que algo fallaba
[gml]q = get_string('question 1','1+1?')

r = '2'

if q = r
q2 = get_string('question 2','2+2?')

r2 = '4'

if q2 = r2
q3 = get_string('question 3','4+4?')

r3 = '8'

if q3 = r3
q4 = get_string('question 4','8+8?')

r4 = '16'

if q4 = r4
q5 = get_string('question 5','16+16?')

r5 = '32'

if q5 = r5
q6 = get_string('question 6','32+32?')

r6 = '64'

if q6 = r6
q7 = get_string('question 7','64+64?')

r7 = '128'

if q7 = r7
q8 = get_string('question 8','128+128?')

r8 = '256'

if q8 = r8
q9 = get_string('question 9','256+256?')

r9 = '512'

if q9 = r9
q10 = get_string('question 10','512+512?')

r10 = '1024'

if q10 = r10
highscore_show(score)[/gml]

El problema es que no puedo hacer que cuando la persona se equivoque se reinicie el juego y muestre la puntuacion
Título: Re: Ayuda con script
Publicado por: kuadmair en Mayo 09, 2011, 10:42:48 AM
weno yo no se de codigo del gmk... pero si que toco otros lenguajes parecido... una cosita de la que  ahora mismo no estoy seguro... en las condiciones... no buscas que compare entre una respuesta y otra? que sean iguales?... pues no deberia ser == en vez de = ?? pk qui no se pero en otros lenguajes un solo = es para dar un valor a la variable y no para ver si dos son iguales..

edito: Adem?s de la costumbre de que siempre se pone ; al final de cada linea siempre y cuando no sea una condicion xD pero weno... no se como funciona este lenguaje xD
Título: Re: Ayuda con script
Publicado por: Fenix oscuro en Mayo 09, 2011, 12:54:15 PM
Cita de: kuadmair en Mayo 09, 2011, 10:42:48 AM
weno yo no se de codigo del gmk... pero si que toco otros lenguajes parecido... una cosita de la que  ahora mismo no estoy seguro... en las condiciones... no buscas que compare entre una respuesta y otra? que sean iguales?... pues no deberia ser == en vez de = ?? pk qui no se pero en otros lenguajes un solo = es para dar un valor a la variable y no para ver si dos son iguales..

edito: Adem?s de la costumbre de que siempre se pone ; al final de cada linea siempre y cuando no sea una condicion xD pero weno... no se como funciona este lenguaje xD
bueno,estuve agregando

[gml]else

highscore_show(score)
game_restart()[/gml]
el problema es que aparece este error cada vez que fallo
digamos 1+1=z(obviamente equivocado)
me muestra la puntuacion pero sale esto

Error in code at line 10:
   if q2 = r2
      ^
at position 5: Unknown variable q2
Título: Re: Ayuda con script
Publicado por: ArcariaOnline en Mayo 09, 2011, 07:18:04 PM
Unknown variable q2 = Variable q2 desconocida

Te sale eso por una de dos, esa variable no la has creado antes de utilizarla o la creaste en otro objeto que no es el que ejecuta las preguntas. Si no hay problema puedes hacerlas globales o aseg?rate que la estas creando en el objeto. Tambi?n aseg?rate que no tenga el mismo nombre que alguna sprite u objeto.

Saludos.
Título: Re: Ayuda con script
Publicado por: LigTopet en Mayo 09, 2011, 09:15:48 PM
El error esta en que si la respuesta anterior es incorrecta no declara la variable y aun asi el if siguiente se comprueba pero al no haber sido declarada la variable dara el error.
Lo que se me ocurre es agregar un break en lugar de un game_restart()
[gml]else
{
     highscore_show(score)
     break
}[/gml]
No estoy seguro, deja me voy a comer y al rato lo analizo mejor.

Saludos
Título: Re: Ayuda con script
Publicado por: Wadk en Mayo 09, 2011, 11:13:59 PM
Prob? a crear un script llamado game:
[gml]// game();
var answer;

argument0 += (argument0 == 0);
argument1 += (argument0 == 1);

answer = show_message("Pregunta " + string(argument0) + ": ?" + string(argument1) + " * 2?", "");
if (answer == string(argument1 * 2)) {
    return game(argument0 + 1, argument1 * 2);
} else {
    return argument0 - 1;
}[/gml]

Y despu?s llamalo as?:
[gml]highscore_show(game());[/gml]
Título: Re: Ayuda con script parte 2
Publicado por: Fenix oscuro en Mayo 10, 2011, 12:43:31 AM
muchas gracias pero ya lo resolvi de otra manera

[gml]q9 = get_string('question 9','256+256?')}}

else

room_restart()
///////////////////////////////////////
if score = 40
{if q9 = r9
{score = 45
q10 = get_string('question 10','512+512?')}}

else

room_restart()
////////////////////////////////////////
if score = 45
{if q10 = r10
{score = 50;highscore_add_current();score = 0;highscore_show(score);show_message('WoW amazing');room_restart();
FINAL = show_message_ext('continue?','No',noone,'Yes')}}

if FINAL = 1
game_end()

if FINAL = 3
game_restart()

else

room_restart()[/gml]
Ahora todo funciona bien pero FINAL ahora es el problema

Error in code at line 110:
  if FINAL = 1
     ^
at position 5: Unknown variable FINAL

No se bien donde se debe de ubicar
es el mismo problema pero no logro arreglarlo

Citarel problema es que aparece este error cada vez que fallo
digamos 1+1=z(obviamente equivocado)
Título: Re: Ayuda con script
Publicado por: knd144 en Mayo 10, 2011, 01:00:10 AM
mmm... eso puedew ser sencillo de encontrar, mira tu tienes:

[gml]
if q10 = r10
{
  score = 50;highscore_add_current();
  score = 0;highscore_show(score);
  show_message('WoW amazing');
  room_restart();
  FINAL = show_message_ext('continue?','No',noone,'Yes')
}

if FINAL=1...
[/gml]

La cuestion es que la variable FINAL solo se crea si se cumple la condicion de "if q10=r10", pero si no se cumple es ovbio que jam?s ser? creada y despu?s no la puedes testear para ver si es igual a 1 o algo as?.
Te recomiendo que declares desde el inicio todas las variables que vayas a usar asi:

[gml]
var FINAL;
if score = 45
{
  if q10 = r10
  {
    score = 50;
    highscore_add_current();
    score = 0;
    highscore_show(score);
    show_message('WoW amazing');
    room_restart();
    FINAL = show_message_ext('continue?','No',noone,'Yes')
  }
}
if FINAL = 1
  game_end()
if FINAL = 3
  game_restart()
else
  room_restart()
[/gml]

;)