Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Crear arreglo numérico a partir de los valores dados.  (Leído 754 veces)

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

Desconectado NiuWeb

  • Flota de Justicia Particular.
  • Moderadores globales
  • Okupa
  • *
  • Puntos: 2825
  • Mensajes: 1.697
  • Agradecido: 141 veces
  • Sexo: Masculino
  • Rock anthem for saving the world.
    • Ver Perfil
en: Septiembre 09, 2017, 06:03:02 pm
Autor: NiuWeb.
Versión de GM: Studio 1.4.
Descripción: Crea un arreglo numérico a partir de los valores dados. Estos pueden ser secuencias numéricas (ver más adelante) para facilitar la creación del arreglo.
///create_numarray(value0, ..., value16);
var result, index = 0;

var i, j, arg, nbp, scp;
for(i = 0; i < argument_count; i++)
{
    arg = string(argument[i]);
    arg = string_replace_all(arg, " ", "");
    nbp = string_pos(":", arg);
    scp = string_pos("*", arg);
   
    if(nbp)
    {
        num1 = real(string_copy(arg, 1, nbp - 1));
       
        if(scp)
        {
            num2 = real(string_copy(arg, nbp + 1, scp - nbp - 1));
            num3 = abs(real(string_delete(arg, 1, scp)));
        }
        else
        {
            num2 = real(string_copy(arg, nbp + 1, string_length(arg) - nbp + 1));
            num3 = 1;
        }
           
       
        if(num3 == 0) num3 = 1;
       
        move = sign(num2 - num1);
       
        if(move == 0)
        {
            result[index++] = num1;
            continue;
        }
        else if(move == 1)
        {
            for(j = num1; j <= num2; j += num3)
            {
                result[index++] = j;
            }
        }
        else if(move == -1)
        {
            for(j = num1; j >= num2; j -= num3)
            {
                result[index++] = j;
            }
        }
    }
    else
        result[index++] = real(arg);
}
return result;
Uso:
La forma normal es crear el arreglo insertando como argumentos los números que se deseen guardar en él:
arreglo = create_numarray(3, 7, 12.5, 4.11, 0.91); //etc...
Además, se pueden añadir (como cadena de texto) patrones sencillos para crear secuencias de números. La forma de estos patrones es min:max*step, donde min es el límite menor de la secuencia, max el mayor y step el aumento. Si min es mayor que max, se creará la secuencia en reversa. Si no se escribe el step (sólo min:max), el valor por defecto será 1.
arreglo = create_numarray("2:8"); //2, 3, 4, 5, 6, 7, 8
arreglo = create_numarray("5.5:9*0.25"); //5.5, 5.75, 6, 6.25, 6.5, 6.75, 7, 7.25, 7.5, 7.75, 8, 8.25, 8.5, 8.75, 9
arreglo = create_numarray("11:-5*2"); //11, 9, 7, 5, 3, 1, -1, -3, -5
arreglo = create_numarray(1, 3, 5, "6:9"); //1, 3, 5, 6, 7, 8, 9

El tiempo era tu aliado, humano, pero te ha abandonado.
Los Forerunners han regresado, esta tumba ahora es tuya.

-Ur-Didacta.


BA:STFW&RTFM
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Clamud

Respuesta #1 en: Septiembre 10, 2017, 12:57:57 pm
Es un script interesante. Para hacer secuencias podrías usar la sintaxis de Matlab
a:b el incremento es 1
a:c:b el incremento es c