Este código funciona bien, es una IA que a base de pruebas descubre que quitar 2HP es mejor que quitar solo 1:
actions for fotograma 1
// Situación inicial.
BaseEnHP = 10;
// Guardar Situación inicial.
SitID = "S"+BaseEnHP;
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", "Ninguno");
Action = 1;
// Variables de Unsolved situaciones.
U = 0;
Us = 0;
actions for fotograma 2
// Reset Situación. Aplicación.
EnHP = BaseEnHP-Action;
// ¿Sol?
if (EnHP<=0) {
// Solución; iniciar mostrar lista.
List = Action;
gotoAndPlay (4);
// Sino ¿la situación está anotada?
} else if (eval("S"+EnHP+"EnHP") == undefined) {
// No. Anotarla.
SitID = "S"+EnHP;
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", Action);
Us = Us+1;
SitID = "U"+Us;
set (SitID+"EnHP", EnHP);
}
actions for fotograma 3
// La situación existe. ¿Modificar candidato es posible?
if (Action<2) {
// Modificación de candidato.
Action = Action+1;
gotoAndPlay (2);
} else if (U<Us) {
// Usar Unsolveds.
U = U+1;
BaseEnHP = eval("U"+U+"EnHP");
Action = 1;
gotoAndPlay (2);
} else {
// No hay Solución.
stop ();
}
actions for fotograma 5
SitID = eval("S"+BaseEnHP+"Action");
BaseEnHP = eval("S"+BaseEnHP+"EnHP");
if (SitID != "Ninguno") {
List = SitID+" "+List;
gotoAndPlay (4);
} else {
stop ();
}
Al enemigo le agregué defensa (1; los ataques del jugador son quitar 1HP o 3):
actions for fotograma 1
// Situación inicial.
BaseEnHP = 10;
EnDf = 1;
// Guardar Situación inicial.
SitID = "S"+BaseEnHP;
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", "Ninguno");
Action = 1;
// Variables de Unsolved situaciones.
U = 0;
Us = 0;
actions for fotograma 2
// Reset Situación. Aplicación.
EnHP = BaseEnHP-(Action-EnDf);
// Si EnHP aumentó, resetear.
if (BaseEnHP < EnHP) {
EnHP = BaseEnHP;
}
// ¿Sol?
if (EnHP<=0) {
// Solución; iniciar mostrar lista.
List = Action;
gotoAndPlay (4);
// Sino ¿la situación está anotada?
} else if (eval("S"+EnHP+"EnHP") == undefined) {
// No. Anotarla.
SitID = "S"+EnHP;
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", Action);
Us = Us+1;
SitID = "U"+Us;
set (SitID+"EnHP", EnHP);
}
actions for fotograma 3
// La situación existe. ¿Modificar candidato es posible?
if (Action<2) {
// Modificación de candidato.
Action = Action+1;
gotoAndPlay (2);
} else if (U<Us) {
// Usar Unsolveds.
U = U+1;
BaseEnHP = eval("U"+U+"EnHP");
Action = 1;
gotoAndPlay (2);
} else {
// No hay Solución.
stop ();
}
actions for fotograma 5
SitID = eval("S"+BaseEnHP+"Action");
BaseEnHP = eval("S"+BaseEnHP+"EnHP");
if (SitID != "Ninguno") {
List = SitID+" "+List;
gotoAndPlay (4);
} else {
stop ();
}
Agregué HP del jugador:
actions for fotograma 1
// Situación inicial.
HP = 10;
BaseEnHP = 10;
EnDf = 1;
// Guardar Situación inicial.
SitID = "S"+HP+"_"+BaseEnHP;
set (SitID+"HP", HP);
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", "Ninguno");
Action = 1;
// Variables de Unsolved situaciones.
U = 0;
Us = 0;
actions for fotograma 2
// Reset Situación. Aplicación.
EnHP = BaseEnHP-(Action-EnDf);
// Si EnHP aumentó, resetear.
if (BaseEnHP<EnHP) {
EnHP = BaseEnHP;
}
// ¿Sol?
if (EnHP<=0) {
// Solución; iniciar mostrar lista.
List = Action;
gotoAndPlay (4);
// Sino ¿la situación está anotada?
} else if (eval("S"+HP+"_"+EnHP+"HP") == undefined) {
// No. Anotarla.
SitID = "S"+HP+"_"+EnHP;
set (SitID+"HP", HP);
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", Action);
Us = Us+1;
SitID = "U"+Us;
set (SitID+"HP", HP);
set (SitID+"EnHP", EnHP);
}
actions for fotograma 3
// La situación existe. ¿Modificar candidato es posible?
if (Action<2) {
// Modificación de candidato.
Action = Action+1;
gotoAndPlay (2);
} else if (U<Us) {
// Usar Unsolveds.
U = U+1;
HP = eval("U"+U+"HP");
BaseEnHP = eval("U"+U+"EnHP");
Action = 1;
gotoAndPlay (2);
} else {
// No hay Solución.
stop ();
}
actions for fotograma 5
SitID = eval("S"+HP+"_"+BaseEnHP+"Action");
HP = eval("S"+HP+"_"+BaseEnHP+"HP");
BaseEnHP = eval("S"+HP+"_"+BaseEnHP+"EnHP");
if (SitID != "Ninguno") {
List = SitID+" "+List;
gotoAndPlay (4);
} else {
stop ();
}
---------------------------------------------------------------------------------------------------------
Ahora es cuando se me complicó: El enemigo puede golpear; no funciona (la IA) si él tiene defensa 2 o más.
Escena 1
actions for fotograma 1
// Situación inicial.
BaseHP = 10;
BaseEnHP = 10;
EnDf = 2;
// Guardar Situación inicial.
SitID = "S"+BaseHP+"_"+BaseEnHP;
set (SitID+"HP", BaseHP);
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", "Ninguno");
Action = 1;
// Variables de Unsolved situaciones.
U = 0;
Us = 0;
actions for fotograma 2
// Reset Situación.
HP = BaseHP;
EnHP = BaseEnHP;
trace ("La sit es: "+HP+"_"+EnHP);
// Aplicación.
trace ("Player attacks!");
EnHP = EnHP-(Action-EnDf);
// Si EnHP aumentó, resetearlo.
if (BaseEnHP<EnHP) {
trace ("EnHP aumentó, se resetea: "+BaseEnHP);
EnHP = BaseEnHP;
} else {
trace ("EnHP reducido a: "+EnHP);
}
// Efecto simultáneo.
trace ("Enemy attacks!");
HP = HP-1;
// Si HP quedó negativo, pasa a 0.
if (HP<0) {
trace ("HP quedó negativo, pasa a 0");
HP = 0;
} else {
trace ("HP reducido a: "+HP);
}
// ¿Sol?
if (0<HP) {
if (EnHP<=0) {
// Solución; iniciar mostrar lista.
List = Action;
gotoAndPlay (4);
// Sino ¿la situación está anotada?
} else if (eval("S"+HP+"_"+EnHP+"HP") == undefined) {
// No. Anotarla.
SitID = "S"+HP+"_"+EnHP;
set (SitID+"HP", BaseHP);
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", Action);
trace ("Nueva sit anotada: "+SitID);
Us = Us+1;
SitID = "U"+Us;
set (SitID+"HP", HP);
set (SitID+"EnHP", EnHP);
}
// Sino ¿la situación está anotada?
} else if (eval("S"+HP+"_"+EnHP+"HP") == undefined) {
// No. Anotarla.
SitID = "S"+HP+"_"+EnHP;
set (SitID+"HP", BaseHP);
set (SitID+"EnHP", BaseEnHP);
set (SitID+"Action", Action);
trace ("Nueva sit anotada: "+SitID);
Us = Us+1;
SitID = "U"+Us;
set (SitID+"HP", HP);
set (SitID+"EnHP", EnHP);
}
actions for fotograma 3
// La situación existe. ¿Modificar candidato es posible?
if (Action<3) {
// Modificación de candidato.
Action = Action+2;
gotoAndPlay (2);
} else if (U<Us) {
// Usar Unsolveds.
U = U+1;
BaseHP = eval("U"+U+"HP");
BaseEnHP = eval("U"+U+"EnHP");
Action = 1;
gotoAndPlay (2);
} else {
// No hay Solución.
stop ();
}
actions for fotograma 5
SitID = eval("S"+BaseHP+"_"+BaseEnHP+"Action");
Base2HP = BaseHP;
BaseHP = eval("S"+BaseHP+"_"+BaseEnHP+"HP");
BaseEnHP = eval("S"+Base2HP+"_"+BaseEnHP+"EnHP");
if (SitID != "Ninguno") {
List = SitID+" "+List;
gotoAndPlay (4);
} else {
stop ();
}
¿Cómo debería ser el código? Luego de varios segundos me genera situaciones donde el HP enemigo es negativo.
Gracias.