¿Ordenar turnos por velocidad?

Iniciado por Tachikomaia, 8 Agosto 2021, 06:06 AM

0 Miembros y 1 Visitante están viendo este tema.

Tachikomaia

#10
Quisiera saber cómo quedan las variables luego de cada caso a partir del bubble (son 3).

Tachikomaia

#11
Veo que lo que pedí recientemente ya lo habías hecho. He convertido el código hasta la parte 3 inclusive (Remplazo las velocidades por los jugadores (uso la misma varialbe turn)), pero me da un error, el output es:
 Variable _level0.Player1Speed = 2
 Variable _level0.Player2Speed = 3
 Variable _level0.Player3Speed = 1
 Variable _level0.Player4Speed = 4
 Variable _level0.Players = 4
 Variable _level0.D = 4
 Variable _level0.Turn1 = "Player1"
 Variable _level0.Turn2 = "Player3"
 Variable _level0.Turn3 = 2
 Variable _level0.Turn4 = 1
 Variable _level0.i = 5
 Variable _level0.j = 5
 Variable _level0.v1 = 2
 Variable _level0.v2 = 1
 Variable _level0.name = "Player4"
 Variable _level0.speed = 4
 Variable _level0.turn = 1

O sea no ordena al player 2 ni al 4. ¿Alguna idea de cual será el error? Sabemos que está en la última parte.
Código (actionscript) [Seleccionar]

// Seteo de variables
Player1Speed = 2;
Player2Speed = 3;
Player3Speed = 1;
Player4Speed = 4;
Players = 4;

// Calculo la cantidad de jugadores y seteo los turnos (sin ordenar) con la velocidad
D = 0;
do {
D = D+1;
set ("Turn"+D, eval("Player"+D+"Speed"));

} while (D < Players);

// El bubble sort mas feo del mundo
i = 1;
while (i < Players) {
j = 1;
while (j < Players) {
v1 = eval("Turn"+j);
v2 = eval("Turn"+(j + 1));
if (v1 < v2) {
set ("Turn"+j, v2);
set ("Turn"+(j+1), v1);
}
j = j+1;
}
i = i+1;
}

// Remplazo las velocidades por los jugadores (uso la misma varialbe turn)
i = 1
while (i <= Players) {
name = "Player" + i;
speed = eval(name+"Speed");
j = 1;
while (j <= Players) {
turn = eval("Turn"+j)
if (speed < turn) {
set("Turn"+j, name);
break;
}
j += 1;
}
i += 1;
}

3n31ch

#12
Estuve viendo tu código, y me surge una duda que me sorprende que no te generen error:
Linea 40:

if (speed < turn) {


Que debería ser:


if (speed == turn) {


Supongo que si arreglas eso podría funcionar. Nos cuentas.

Tachikomaia