Bueno, segundo script que resubiré al foro.
Autor: NiuWeb.
Versión de GM utilizada: Studio 1.4.
Descripción: Scripts que permiten convertir un arreglo unidimensional a uno bidimensional con el número de columnas dado, o convertir un arreglo bidimensional a uno unidimensional.
Código[gml]
///array_1d_to_2d(array, width);
var array = argument0;
var width = argument1;
var length = array_length_1d(array);
var array2d;
var xn, yn;
for(var i = 0; i < length; i++)
{
yn = floor(i/width);
xn = i - yn*width;
array2d[yn, xn] = array
;
}
return array2d;
[/gml]
Argumentos:
array: | El arreglo unidimensional original a convertir. |
width: | El número de columnas que tendrá el nuevo arreglo. |
[gml]
///array_2d_to_1d(array2d);
var array2d = argument0;
var height = array_height_2d(array2d);
var array1d, a = 0;
for(var i = 0; i < height; i++)
{
for(var j = 0; j < array_length_2d(array2d, i); j++)
{
array1d[a++] = array2d[i, j];
}
}
return array1d;
[/gml]
Argumentos:
array: | El arreglo bidimensional original a convertir. |
Como siempre; dudas, inquietudes, quejas, reclamos, insultos o amenazas son bienvenidos, y si encuentran algún fallo en los códigos por favor hacérmelo saber.
Si el arreglo unidimensional no tiene la cantidad de elementos exacta para crear un arreglo bidimensional completo, es decir, que la ultima fila no quede completa, ¿Como haría para recorrerlos con doble ciclo for y que al final no muera pq no hay mas elementos?
Ej: Supongamos que entra un array de 32 elementos y lo quiero como una matriz de 6*6.
Cita de: Johann en Noviembre 26, 2018, 09:55:00 PM
Si el arreglo unidimensional no tiene la cantidad de elementos exacta para crear un arreglo bidimensional completo, es decir, que la ultima fila no quede completa, ¿Como haría para recorrerlos con doble ciclo for y que al final no muera pq no hay mas elementos?
Ej: Supongamos que entra un array de 32 elementos y lo quiero como una matriz de 6*6.
Si quieres convertir un arreglo unidimensional a uno bidimensional usarías el primer script, y realmente no tendrías ningún problema en el caso que mencionas, puesto que el ciclo solo recorre los elementos del 1d y les asigna coordenadas 2d, así que si quedan faltando espacios simplemente se omiten, quedan "vacíos".