edlobez escribió:
En un principio, después de ver tu solución anterior, pensé en crearme un condacto para obtener el número total de objetos que existe, tipo:
TOTOBJG flg,
y que en el flg guardara el total de los objetos creado, así no tendría que ir preocupándome de la crear un objeto nuevo ir modificando la variable con el número total de objetos. Pero me contuve

, ya se habrá notado mucho que soy el tonto de crear condactos.
Citar:
Una librería plugin con solo una linea "setFlag(xx, last_object_number)", de modo que al arrancar meta el valor en el flag xx, uno que elijamos, y luego comparar con él.
Esta opción no estaría mal, un flag con el último objeto de la aventura que coincidirá ( sumándo 1) con el total de objetos de la aventura.
Y con respecto a los bucles, creo que ambos FOR, yo desde mi opinión creo que haría aumentar aún más las capacidades de ngPaws. Pero bueno, es mi opinió, puede que haya otros usuarios de ngpaws-superglus-paw más puristas que piensen "Nunca he tenido un FOR y nunca me hizo falta."
Mi duda fundamental a la hora de crear condactos es si añadir más no hará que sea más difícil aprender ngPAWS. En su momento con NMP creo que llegué a meter mas de 400 condactos, cada uno con su labor específica, y para cosas muy específicas. Con el sistema de plugins de ngPAWS ocurre un poco igual, le vas metiendo cosas y al final tienes un montón de condactos, algunos quizá demasiado específicos. Así, al haber muchos, a veces hay quien no encuentra el que busca, como te pasó a ti recientemente con SYNONYM.
No es un problema solo de ngPAWS. Ya el propio PAW, DAAD y los primeros PAWslike como SINTAC o NMP tuvieron esa "condactitis", porque que sentido tiene el condacto CARRIED cuando existe ISAT (CARRIED x es lo mismo que ISAT x 254). ¿Que sentido tiene COPYFF una vez que existe la indirección y COPYFF f1 f2 es lo mismo que LET f2 @f1? En DAAD y PAW quizá fuera justificable por ahorra un byte en máquinas menores, pero en NMP y SINTAC seguramente no,salvo por lretrocompatibilidad.
Así al añadir el condacto TOTOBJG, hacer una libreria que meta el total en un flag, hacer un FOR o un FOREACH, solo estoy dando otros métodos de hacer algo que ya se puede hacer, por lo que quizá haga algo de eso, pero como libreria plugin externa, no en el core de ngPAWS.
Mira, acabo de pensar una manera de hacer el bucle sin saber el número de objetos, y usando lo que ya tiene ngPAWS no hacen falta más condactos:
Código:
OBJAT carried fCuentaObjetos ; Mete en el flag fCuentaObjetos el número de objetos en la localidad 'carried'
CLEAR fIteraObjetos
NOTZERO: fCuentaObjetos ; Iteramos por los objetos, desde el 0 hasta el final, hasta que fCuentaObjetos es 0
{
CARRIED# @fIteraObjetos
{
PLACE @fIteraObjetos 20
MINUS fCuentaObjetos 1 ; Cada vez que encontramos un objeto, le movemos a la localidad elegida, y decrementamos un fCuentaObjetos
}
PLUS fIteraObjetos 1 ; Vamos a siguiente objeto
}