Abril 12, 2016, 08:29:23 PM Ultima modificación: Abril 12, 2016, 08:31:32 PM por Clamud
Autor: Clamud
Versión: GameMaker Studio
Descripción: Crea una matriz 2D de números reales a partir de una cadena, usa 'coma' para separar las columnas y 'punto y coma' para separar las filas. Se pueden usar espacios, puntos decimales y saltos de línea. La cadena debe terminar con 'punto y coma'.

string_matrix( string )
[gml]
///string_matrix( string );
/*
   Crea una matriz 2D a partir de una cadena
   , separa las columnas
   ; separa los renglones
*/

var cad = argument0; //cadena
var lon = string_length(cad); //longitud
var pos; //posicion
var mat; //matriz
var car; //caracter
var sub = ""; //sub-cadena
var i=0, j=0; //indices

for( pos=1; pos<=lon; pos++ ) //para todos los caracteres
{
    car = string_char_at( cad, pos );
    if( car == "," ){ //si es coma
        mat[i,j] = real(sub); //agregar valor a la matriz
        sub = ""; //borrar sub-cadena
        i++; //incrementar indice
    }
    else if( car == ";" ){ //si es punto y coma
        mat[i,j] = real(sub); //agregar valor a la matriz
        sub = ""; //borrar sub-cadena
        i = 0; //reiniciar i
        j++; //incrementar j
    }
    else sub += car; //agregar caracter a sub-cadena
}
return mat; //devolver matriz
[/gml]

Ejemplo:
[gml]
Matrix = string_matrix("
1.10, 2.00, 3.14, 4.00;
5.00, 6.66, 7.00, 8.00;
9.22, 10.0, 11.1, 12.9;
");
[/gml]