Abril 06, 2012, 03:03:28 AM Ultima modificación: Abril 06, 2012, 10:25:59 PM por fab62
Hola makeros, se me ha presentado una duda de acuerdo a los archivos externos... es que quería hacer que se cargaran datos externamente a taves de un texto de esta forma:

0000001000
0000201000
1120010000
...

en donde hay 7 filas y 10 columnas de datos, mi duda es si esto se puede hacer en el game maker, para asignar un objeto en una posicion del room tal como esta hecho en el archivo , y los rasgos del objeto dependerían si del dato si es 0,1,2,...

lo quería intentar asi pero no creo que sea la mejor opcion:

dato[i,j] = rasgo

y esto repetirlo hasta que me satisfaga todos los datos, en este caso 7 * 10, y si el rasgo fuera 0, no crearía ningun objeto en esa posicion de la room... esto se puede hacer de una forma mejor?

El ayer es un recuerdo, el mañana un pensamiento, es el ahora en donde existo y vivo para ser feliz :D

#1 Abril 06, 2012, 03:17:52 PM Ultima modificación: Abril 06, 2012, 03:19:28 PM por Mgbu
Probaste con .ini? http://www.comunidadgm.org/manual_GM/Archivos_INI.htm
En el archivo sería algo como esto:
Citar
[Nivel1]
Enemigo1=0000001000
Enemigo2=0000201000
Enemigo3=1120010000
...

EDIT: Esto también se puede hacer, pero nunca lo probé http://www.comunidadgm.org/manual_GM/Archivos_GML.htm
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


mmm... y despues podria reconocer la posicion del string con ini_read_string() y string_pos()... sería asi?

En el archivo ini:


[Nivel 1]
fila1 = 0001002
fila2 = 0010011
filan = ...
fila7 = 0001011


y para reconocerlo tendria que leer una seccion en el archivo ini, y eso pasarlo a una variable, y despues chequear cada letra del string con string_pos() y crear un objeto en la room dependiendo si son 0, 1, 2 ...

para que puedan entender mejor se trata de un juego puzzle, en donde me interesa crear pelotas de distintos colores (eso son los rasgos), con la posicion asignada por la fila, como en una tabla, y crea las pelotitas de acuerdo al string, si contiene 0, no crea ninguna, si es 1 un color, si es 2 otro color, y asi... :)

El ayer es un recuerdo, el mañana un pensamiento, es el ahora en donde existo y vivo para ser feliz :D

Jajajajjaj  ;D... gracias por todo... lo pude hacer :)... gracias Mgbu por la idea de colocar las variables de esa manera... me ayudo bastante para realizarlo... lo hice de esta manera:



  ini_open("Niveles.ini")
  filas = ds_list_create()
 
  nivel     = "nivel01"
  max_filas = 10
  max_pos   = 7
  tab_x     = 16
  tab_y     = 16
  ancho     = 19
 
  for (i = 1; i <= max_filas; i+=1)
  {ds_list_add(filas,ini_read_string(nivel,"fila"+string(i),"0000000"))}
 
  var rasgo, mi_string;
 
  for (i = 0; i <= max_filas-1; i += 1)
  {
  mi_string = ds_list_find_value(filas,i)
   for (j = 1; j <= max_pos; j += 1)
   {
   rasgo = real(string_char_at(mi_string,j))
    if (rasgo > 0)
    {
    obj = instance_create(tab_x + j*ancho,tab_y + i*ancho,obj_ball)
    obj.image_single = rasgo-1
    }
   }
  }
 
  ds_list_destroy(filas)
  ini_close()


y el archivo ini, con nombre "Niveles.ini", lo hice asi :


[nivel1]
fila1  = 0103010
fila2  = 4010101
fila3  = 0101010
fila4  = 1010101
fila5  = 0101010
fila6  = 1010111
fila7  = 0101050
fila8  = 1010101
fila9  = 0101010
fila10 = 1010101


coloqué un sprite que contiene 9 imagenes, y esto creara al objeto con la imagen indicada por el numero, y me quedó muy bien!!!!

gracias!!!
El ayer es un recuerdo, el mañana un pensamiento, es el ahora en donde existo y vivo para ser feliz :D