Código:
C = new Array(1, 1, 1);
Max = 10;
// Solcheck
if (C[1]<C[0]) {
// Sol
stop ();
}
// Candmod
W = 1;
SenaladordeP = 2;
do {
if (C[SenaladordeP]<Max) {
C[SenaladordeP] = C[SenaladordeP]+1;
W = 0;
} else {
C[SenaladordeP] = 1;
if (0 < SenaladordeP) {
SenaladordeP = SenaladordeP-1;
} else {
// No hay Sol o está más allá del Max.
stop ();
}
}
} while (W==1);
gotoAndPlay (2);
Intentando variar A arrays (en este ejemplo A=2) hice esto:
Código:
C1 = new Array(1, 1, 1);
C2 = new Array(1, 1, 1);
Max = 10;
trace (C1+" "+C2);
// Solcheck
if (C1[0]<C2[0]) {
// Sol
stop ();
}
// Candmod
W = 1;
SenaladordeC = 2;
SenaladordeP = 2;
do {
if (eval("C"+SenaladordeC+"["+SenaladordeP+"]")<Max) {
trace (eval("C"+SenaladordeC+"["+SenaladordeP+"]"));
set ("C"+SenaladordeC+"["+SenaladordeP+"]", eval("C"+SenaladordeC+"["+SenaladordeP+"]")+1);
W = 0;
} else {
set ("C"+SenaladordeC+"["+SenaladordeP+"]", 1);
if (0<SenaladordeP) {
SenaladordeP = SenaladordeP-1;
} else {
SenaladordeP = 2;
if (1<SenaladordeC) {
SenaladordeC = SenaladordeC-1;
} else {
// No hay Sol o está más allá del Max.
stop ();
}
}
}
} while (W == 1);
gotoAndPlay (2);
Citar
// Cambio 1:
C1 = 1, 1, 1
C2 = 1, 1, 2
// Cambio 2:
C1 = 1, 1, 1
C2 = 1, 1, 3
Como si fuesen 6 cifras, que en vez de ser del 0 al 9 fuesen del 1 al 10.C1 = 1, 1, 1
C2 = 1, 1, 2
// Cambio 2:
C1 = 1, 1, 1
C2 = 1, 1, 3
El problema es que el intérprete o lo que sea, cuando por ejemplo le digo:
set ("C"+SenaladordeC+"["+SenaladordeP+"]", eval("C"+SenaladordeC+"["+SenaladordeP+"]")+1);
...lo que hace es crear variables llamadas C2[SenaladordeP], es decir, C2[2], C2[1] y C2[0]. Más claro:
Citar
Level #0:
Variable _level0.$version = "WIN 5,0,32,0"
Variable _level0.C1 = [object #1] [
0:1,
1:1,
2:1
]
Variable _level0.C2 = [object #2] [
0:1,
1:1,
2:1
]
Variable _level0.Max = 10
Variable _level0.W = 0
Variable _level0.SenaladordeC = 2
Variable _level0.SenaladordeP = 2
Variable _level0.C2[2] = 8
Variable _level0.C2[1] = 3
Variable _level0.C2[0] = 1
En vez de variar las partes del array, o sea C2[2], C2[1] y C2[0], me crea y varía variables con esos mismos nombres. No puedo hacer referencia a contenidos de array porque lo interpreta como si fuese referencia a una variable llamada igual que una referencia a array. Pero yo no cree esas variables.Variable _level0.$version = "WIN 5,0,32,0"
Variable _level0.C1 = [object #1] [
0:1,
1:1,
2:1
]
Variable _level0.C2 = [object #2] [
0:1,
1:1,
2:1
]
Variable _level0.Max = 10
Variable _level0.W = 0
Variable _level0.SenaladordeC = 2
Variable _level0.SenaladordeP = 2
Variable _level0.C2[2] = 8
Variable _level0.C2[1] = 3
Variable _level0.C2[0] = 1
Tal vez el problema es usar set (aunque no hubo problema en el 1er código) o habría que modificar la referencia en el eval (quitar comillas, poner comillas, no sé).
¿Ideas?
El programa es Macromedia Flash 5, que usa una vieja versión de Action Script. Puede que el error sea cosa de dicho programa/lenguaje, aunque imagino que es posible alguna solución que no sea cambiar de programa/lenguaje.
Gracias.