Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Jangse en Febrero 06, 2014, 07:47:12 PM

Título: ¿Que utilidad le dais a las matrices en GM?
Publicado por: Jangse en Febrero 06, 2014, 07:47:12 PM
Trasteando con el GML, voy consultando el tema de ciclos, bucles, sentencias y pequeñas porciones de código. Y aunque aún no he llegado al tema de los arreglos o matrices, no se que utilidad pueden tener en GM. O si vosotros las utilizáis mucho.

Y otra pregunta...

¿Que es mejor?

-Grandes porciones de código GML en pocos eventos.
-Trozos pequeños de código en muchos eventos.

Es que a veces veo ejemplos que sube la gente, y los códigos GML tienen un buen puñado de líneas.

Saludos!
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: penumbra en Febrero 06, 2014, 09:22:29 PM
Las matrices y arreglos sirven para organizar mejor información que de otro modo estaría "desperdigada" o sería más dificil de interpretar al estar almacenada en variables "sueltas"

Ejemplo. No sé si todos los castlevania, pero juegos como Symphony of the Night y Aria of Sorrow tienen una tabla de experiencia que sirve para saber cuando subir de nivel, Esa tabla sería muy engorrosa de manejar si se hiciera con variables normales, pero con un arreglo quedaría

tabla_exp[0] = 100
tabla_exp[1] = 300
tabla_exp[2] = 800
tabla_exp[3] = 1500

suponiendo que haya una variable "mi_nivel" que indique el nivel actual del jugador y unavariable "mi_exp" que indica la experiencia actual del jugador

if (mi_exp > tabla_exp[mi_nivel])
      mi_nivel += 1                              //Subir de nivel cuando se sobrepase la experiencia del nivel anterior



Otro ejemplo, suponiendo que en tu juego puedes cambiar el personaje entre un mago, un ninja y una sacerdotisa, y que cada personaje tiene frases distintas que dice de vez en cuando

En este arreglo, un 1 significaría que ese personaje es el que está activo actualmente. Define en GM tres constantes. Mago = 0, Ninja = 1, Sacerdotisa = 2
personajes[Mago] = 0   
personajes[Ninja] = 1     
personajes[Sacerdotisa] = 0


Una matríz con los diálogos:

frases[1, Mago] = "Frase 1"   
frases[2, Mago] = "Frase 2"   
frases[3, Mago] = "Frase 3"   
frases[1, Ninja] = "Frase 1"   
frases[2, Ninja] = "Frase 2"   
frases[3, Ninja] = "Frase 3" 
frases[1, Sacerdotisa] = "Frase 1" 
frases[2, Sacerdotisa] = "Frase 2" 
frases[3, Sacerdotisa] = "Frase 3" 


Saber qué personaje está activo
var i, p_activo;
for (i = 0; i < 3; i+=1)
{
     if personajes[i] == 1)
     {
          p_activo = i                    //p_activo guarda la posición del índice del personaje activo (0, 1 o 2)
          break     
     }
}


Elegir una frase al azar:
frase_actual = frases[choose(0,1,2), p_activo]

Cita de: Jangse en Febrero 06, 2014, 07:47:12 PM
¿Que es mejor?

-Grandes porciones de código GML en pocos eventos.
-Trozos pequeños de código en muchos eventos.

Esto mismo lo has preguntado 3 o 4 veces anteriormente de distintas maneras. Y todas las veces los makeros te han respondido que no hay una manera "mejor" (sin contar cuando de plano tienes un bug enorme).

1. El código no se puede repartir entre MUCHOS eventos. Un código que dibuje algo, irá en DRAW y no lo puedes meter en ALARM. Un código que vaya en STEP no puede ir en CREATE, así de simple.

2. Si tienes 300 líneas de codigo STEP, son 300 líneas que GM tiene que ejecutar, no importa si están en STEP, o repartidas entre BEGIN STEP y END STEP.

Casi podría decir que tienes una rara fijación con el volumen de código  XD. SI tienes código ineficiente, lo vas a saber cuando se te vuelva una tortuga tu juego. Entendería que te preocuparas tanto si viviéramos en la época del atari o el nintendo, ahí sí que tenías que andar con mucha cautela para no escatimar recursos. No pienses tanto en el volumen del código y preocúpate más por no saturar de instancias una habitación o por no abusar de las funciones más lentas de GM
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: vampy09 en Febrero 06, 2014, 09:44:22 PM
Le respuesta de penumbra es exelente!, posteo la mia porque ya la habia escrito :-P

El potencial de los arreglos es que permiten almacenar mas un elemento, del mismo tipo (numerico, texto) a la vez. Osea el arreglo es un grupo de variables dentro de una sola variable.
Ej : Tienes 20 rooms, cada room tiene un highscore.
a) Podrias crear 20 variables, una para cada highscore de cada room:
high_score_room1, high_score_room2, >> high_score_room30
b) o crear un arreglo de 20 elementos
high_score[20]
Dado que un arreglo es un tipo de variable la puedes usar como una variable normal.
Ej:
Deseamos asignar el valor del higscore del room 14
a) high_score_room14 = 1500;

b) high_score[14] = 1500;

Osea que hay que decirle al arreglo a cual elemento se le asigar el valor, lo cual lo hacemos con el # que esta dentro los parentesis, osea el indice ( este ejemplo el elemento 14)

Pero el maximo potencial de un arreglo se logra cuando se utiliza en conjunto con el ciclo FOR.
Ej: deseas que los highscores de todos de los 20 rooms inicie en 0:
a) inicialisas cada variable de forma "manual"
high_score_room1 = 0;
high_score_room2 = 0;
...
high_score_room30 = 0;

b) o poner un arreglo dentro de un ciclo FOR:

for (i = 1; i <= 20; i++)
    {
      high_score = 0;
     }

Que secude en el ejemplo b) ?
1) el GM lee la palabra reservada "for", que indica que lo sigue es un ciclo for.
2)lo primero que hay dentro del parentesis es la declaracion de la variable "i" y la que se le asigna el valor de 1.
3)Evalua que la condicion, este caso " i <= 20 ", se cumpla, osea se verdadera.
4)Entra al ciclo.
5)La primera y unica sentencia dentro del ciclo indica que al elemento que se encuentra en el indice del arreglo high_score se le asigne el valor de 0. En este momento del ciclo "i" tiene el valor de 1, lo mismo que "high_score[1] = 0;"
6)Dado que no hay nada mas despues, se la sale del ciclo.
7)Cada vez que se realice un ciclo ( una iteracion ) se va ha realizar lo que se encuentra al final del parentesis, en este caso "i++", osea "i = i + 1" ( opcion Relative en Drag n Drop), por lo que a la variable "i" quedara con un valor de 2.
8)De nuevo se evalua la condicion " i <= 20 ", dado que se cumple se entra de nuevo al ciclo, de nuevo se realiza lo que esta dentro del ciclo, con la diferencia que ahora "i =2" por consiguiente ahora a la variable que se le asignara el valor de 0 es a la que se encuentra en el indice high_score[2], osea la siguiente.
9)Este se repetira hasta que la condicion "i <= 20" no se cumpla.

Para que podrias utilizar arreglos?
Menus, inventarios, etc pero principalmente cuando necesites almacenar conjuntos de valores de un mismo tipo.
Espero no haberme exedido con mi respuesta.
Saludos!
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: TLT96 en Febrero 06, 2014, 10:05:18 PM
Yo pude haber explicado lo de penumbra........ Solo que no tenia idea de que son matrices, yo las aprendi como arrays xDD la proxima ya se que es :D


Bueno, como dijo penumbra, son muy importantes y te ahorran codigo (Si las sabes usar)
Por ejemplo, yo hice un barajeo de deck (Luce muy pro pero mientras mas leas mas WTF se pone xDD)

global.card[1]=global.card1
global.card[2]=global.card2
global.card[3]=global.card3
global.card[4]=global.card4
global.card[5]=global.card5
global.card[6]=global.card6
global.card[7]=global.card7
global.card[8]=global.card8
global.card[9]=global.card9
global.card[10]=global.card10
global.card[11]=global.card11
global.card[12]=global.card12
global.card[13]=global.card13
global.card[14]=global.card14
global.card[15]=global.card15
global.card[16]=global.card16
global.card[17]=global.card17
global.card[18]=global.card18
global.card[19]=global.card19
global.card[20]=global.card20
global.card[21]=global.card21
global.card[22]=global.card22
global.card[23]=global.card23
global.card[24]=global.card24
global.card[25]=global.card25
global.card[26]=global.card26
global.card[27]=global.card27
global.card[28]=global.card28
global.card[29]=global.card29
global.card[30]=global.card30

NC[1]=irandom_range(1,30)
NC[2]=irandom_range(1,30)
NC[3]=irandom_range(1,30)
NC[4]=irandom_range(1,30)
NC[5]=irandom_range(1,30)
NC[6]=irandom_range(1,30)
NC[7]=irandom_range(1,30)
NC[8]=irandom_range(1,30)
NC[9]=irandom_range(1,30)
NC[10]=irandom_range(1,30)
NC[11]=irandom_range(1,30)
NC[12]=irandom_range(1,30)
NC[13]=irandom_range(1,30)
NC[14]=irandom_range(1,30)
NC[15]=irandom_range(1,30)
NC[16]=irandom_range(1,30)
NC[17]=irandom_range(1,30)
NC[18]=irandom_range(1,30)
NC[19]=irandom_range(1,30)
NC[20]=irandom_range(1,30)
NC[21]=irandom_range(1,30)
NC[22]=irandom_range(1,30)
NC[23]=irandom_range(1,30)
NC[24]=irandom_range(1,30)
NC[25]=irandom_range(1,30)
NC[26]=irandom_range(1,30)
NC[27]=irandom_range(1,30)
NC[28]=irandom_range(1,30)
NC[29]=irandom_range(1,30)
NC[30]=irandom_range(1,30)


while NC[2]=NC[1]
{NC[2]=irandom_range(1,30)} V=3

while NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[23] or NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[24] or NC[V]=NC[23] or NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[25] or NC[V]=NC[24] or NC[V]=NC[23] or NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[26] or NC[V]=NC[25] or NC[V]=NC[24] or NC[V]=NC[23] or NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[27] or NC[V]=NC[26] or NC[V]=NC[25] or NC[V]=NC[24] or NC[V]=NC[23] or NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[28] or NC[V]=NC[27] or NC[V]=NC[26] or NC[V]=NC[25] or NC[V]=NC[24] or NC[V]=NC[23] or NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[29] or NC[V]=NC[28] or NC[V]=NC[27] or NC[V]=NC[26] or NC[V]=NC[25] or NC[V]=NC[24] or NC[V]=NC[23] or NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)} V+=1

while NC[V]=NC[30] or NC[V]=NC[29] or NC[V]=NC[28] or NC[V]=NC[27] or NC[V]=NC[26] or NC[V]=NC[25] or NC[V]=NC[24] or NC[V]=NC[23] or NC[V]=NC[22] or NC[V]=NC[21] or NC[V]=NC[20] or NC[V]=NC[19] or NC[V]=NC[18] or NC[V]=NC[17] or NC[V]=NC[16] or NC[V]=NC[15] or NC[V]=NC[14] or NC[V]=NC[13] or NC[V]=NC[12] or NC[V]=NC[11] or NC[V]=NC[10] or NC[V]=NC[9] or NC[V]=NC[8] or NC[V]=NC[7] or NC[V]=NC[6] or NC[V]=NC[5] or NC[V]=NC[4] or NC[V]=NC[3] or NC[V]=NC[2] or NC[V]=NC[1]
{NC[V]=irandom_range(1,30)}

repeat(30)
{
i+=1
global.deck[i]=NC[i]
}

global.deckm=30


Yo veo mucho texto pero lo que importa es el resultado y unas cositas mas:
-Primero tiene que quedar como desees (Perfecto sin bugs)
-Segundo que funcione fluido sin lag
-No.... solo esas dos ;P

Te recomiendo que las uses cuanto puedas, puedes hacer tablas de personaje, tiendas, arbol de habilidades y mas :D
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: vampy09 en Febrero 06, 2014, 10:25:11 PM
Cuando inicie el uso del GM tenia tus mismas dudas: Cuantos objetos debere utilizar, etc etc.
Aunque el GM tiene su limites y ciertos consejos a seguir que previenen bajonazos en su perfomance ( ej. desactivar el usar color en el background del room si usas una imagen como background) el GM tambien tiene sus fortalezas.(especialmente en 2D)
Como consejo, si estas empezando, es tratar de dejar de lado un poco eso pensamientos porque sin darte cuenta estas "atando' tu creatividad, dado que le estas poniendo limites.
Mi consejo es que has tu juego como tu quieras y luego "busca la manera"  que el GM lo logre, sin importar cuanto codigo, objectos etc. utilices.
Trata siempre que el GM se adapte o module a tus ideas y no adaptes tus ideas al GM, el GM es solo una HERRAMIENTA que tendra el poder que tus ideas le den!
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: penumbra en Febrero 06, 2014, 10:29:53 PM
Cita de: TLT96 en Febrero 06, 2014, 10:05:18 PM
Por ejemplo, yo hice un barajeo de deck (Luce muy pro pero mientras mas leas mas WTF se pone xDD)

Mmm no sé bajo qué efectos estabas cuando hiciste eso, hay maneras más eficientes y sencillas de hacer un barajeo  :o Todos esos while se podrían resumir dos repeat anidados o dos for anidados, y a lo mejor ni eso haría falta
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: vampy09 en Febrero 06, 2014, 10:50:48 PM
Un arrreglo puede ser:
unidimensional >> score[20]
bidimensionales >> score[10,20]
tridimensionales >> score[10,20,5]
tetradimensionales >> score[10,20,5,5]

Cuando un arreglo es unidimensional se llama Vector o simplemente Arreglo.
Cuando un arreglo es bi,tri o tetradimensional se llama Matriz.

Yo en lo personal nunca he usado una Matriz tri o tetradimensional.
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: vampy09 en Febrero 06, 2014, 11:57:03 PM
Ayer "curiosiando" por la gmc, me encontre con este uso de un arreglo:
//8*8 = 64, el largo del texto DEBE ser de 64 caracteres
//primero crea tu texto como si fuera una matrix 2D, pon una "X" dondo quieras que se cree un objeto
Array8x8 = " 00000000
                      0XX00XX0
                      0XX00XX0
                      00000000
                      00000000
                      0X0000X0
                      00000000
                 
//Ahora concatena los 8 segmentos en orden.
Arreglo8*8="OOOOOOOOOXXOOXXOOXXOOXXOOOOOOOOOOOOOOOOOOXOOOOXOOOXXXXOOOOOOOOOO";
//Crea las instancias del objeto que tu deseeas
for ( i =0; i < 64; i + 8 )
    {
      for ( j = 0; j < 8; j += 1)
          {
          if ( string_char_at(Array8*8, j + i + 1) == "X");
             {
               instance_create(x + j * 16, y + i * 2, objetoacrear);
              }
          }
      }
Osea crear un objeto cuando la funcion devuelva una "X" como valor del elemento del  Arreglo8*8 logrando crear un patron. El ejemplo crea una carita feliz.
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: Iros en Febrero 07, 2014, 12:22:04 AM
El código que puso vampy09 se usa a menudo para almacenar mapas externamente y cargarlos para así ahorrar poner tantos objetos desde un principio y el juego pese menos (el ejecutable).

Yo personalmente uso mucho las matrices en C++ para "dibujarlas", es decir que tengan un patrón con números al azar y el resto cero.
También otro modo de usar matrices puede ser en un inventario.

Las matrices tienen infinidad de usos, donde acabe tu imaginación :D
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: vampy09 en Febrero 07, 2014, 01:26:44 AM
Cita de: Iros en Febrero 07, 2014, 12:22:04 AM
El código que puso vampy09 se usa a menudo para almacenar mapas externamente y cargarlos para así ahorrar poner tantos objetos desde un principio y el juego pese menos (el ejecutable).

Yo personalmente uso mucho las matrices en C++ para "dibujarlas", es decir que tengan un patrón con números al azar y el resto cero ...

WOW Iros! Me has abierto la puerta a un nuevo nivel ! :-)

El ejemplo que pones de como poder aplicar mi ejemplo  es sumamente PRACTICO!
Has hecho que me explote la cabeza de tanto pensar en las maneras en como podria aplicarlo! XD
Sin duda conoces ! ;-)
Saludos
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: Iros en Febrero 07, 2014, 03:16:17 AM
Es cuestión de usar la imaginación, en la programación el límite lo da el conocimiento de uno mismo xD.
Estaba programando un breakout (arkanoid) y se me ocurrió aplicar el método para los escenarios, al fin y al cabo, todo es posible.
Título: Re:¿Que utilidad le dais a las matrices en GM?
Publicado por: Jangse en Febrero 07, 2014, 08:21:40 PM
Muchas gracias a todos por las explicaciones. Me guardo el post para utilizarlo en un futuro. Que seguro, falta me hará...

Saludos!