Comando PONI

Este comando asigna un valor a una variable de forma similar al comando PONE, pero ese valor siempre lo obtiene de otra variable formada, total o parcialmente, por el contenido de otras variables que ya existan.


Sintaxis: ACCI PONI nombre_variable_asig=nombre_variable_leer

  • nombre_variable_asig:
  • Nombre de la variable a la que queremos asignarle el valor.

    Si la variable no existe, se creará con el valor asignado.


  • nombre_variable_leer:
  • Nombre de otra variable que ya existe cuyo valor queremos asignarlo a la variable indicada en 'nombre_variable_asig'. Soporta símbolos %% para construir el nombre de la variable.

    Si la variable construida no existe, el valor asignado será 0.




    Para entender el funcionamiento del comando PONI lo mejor es ver como funciona el comando PONE y comprobar que ciertas asignaciones no se pueden hacer con el comando PONE.


    ACCI PONE objeto_5=espada

    ACCI PONE llave=5

    ACCI PONE activado=objeto_%llave%


    En el anterior ejemplo lo que conseguimos es que la variable 'activado' ahora contenga el texto objeto_5. Si eso es lo que queremos, no hay ningún problema en usar el comando PONE de esta forma.

    Pero y si lo que queremos es asignar a la variable 'activado' el valor de una variable llamada 'objeto_5', la que contiene el texto 'espada', podríamos intentar algo como esto:


    ACCI PONE objeto_5=espada

    ACCI PONE llave=5

    ACCI PONE activado=%objeto_5%


    Pues si, así sería, ahora la variable 'activado' contiene el valor espada, pero para ello debemos escribir el nombre completo de la variable '%objeto_5%' sin poder formar ese nombre de variable basándonos en el contenido de otras variables a modo de índice dinámico. En este caso el índice que intentamos usar es el contenido de la variable 'llave', en este caso el número 5.


    Pues entonces lo podemos probar de otra forma. Primero construyo el nombre de la variable y lo almaceno en la variable 'mivari' y luego cargo la variable 'activado' con el contenido de 'mivari' usando '%mivari%':


    ACCI PONE objeto_5=espada

    ACCI PONE llave=5

    ACCI PONE mivari=objeto_%llave%

    ACCI PONE activado=%mivari%


    No, así lo único que conseguimos es que la variable 'activado' ahora contenga el texto objeto_5, lo mismo que al principio.


    Por eso es necesario el comando PONI. Para realizar lo que estamos intentando hacer con el comando PONE, lo realizaríamos con el comando PONI de esta forma:


    ACCI PONE objeto_5=espada

    ACCI PONE llave=5

    ACCI PONI activado=objeto_%llave%


    Ahora si, la variable 'activado' contendrá el valor espada usando el contenido de la variable 'llave' a modo de índice para acceder al contenido de la variable 'objeto_5'.


    Para resumir: El comando PONI lo que hace es leer todo lo que hayas indicado detrás del símbolo '=' para crear un nombre de variable con todo ello, leer el contenido de esa variable y asignarlo a la variable indicada delante del símbolo '='.


    Puedes usar múltiples símbolos %% si quieres indicar diversas variables para construir en nombre de la variable:

    ACCI PONI contenedor=objeto_%nume%%signo%_seta


    Esta forma de manejar las variables es un poco más compleja que la manera tradicional pero a cambio te proporciona una potencia similar a los 'arrays' uni-dimensionales y multi-dimensionales de lenguajes como el C/C++ o el Java.



    Funcionamiento del comando en el modo de juego online

    Consulta el comando PONE. El funcionamiento es exactamente igual.