[PROG] Data Structures (Grid)
Enviado: Qui Abr 28, 2016 7:49 pm
Descrição: Meu último tutorial sobre DS, envolvendo agora a mais complicada delas, a Grid.
Dificuldade: Grid já é mais complicada, então creio que intermediário.
Requerimento: GM Pró.
Data Structures
Como o nome diz, são estruturas de dados, tendo vários tipos em que cada funciona de certo modo.
Grid
Grid é com certeza a mais complicada das DS. Ela funciona do seguinte modo:
Quando se cria uma nova se define o tamanho X e Y dela, onde X é a largura e Y a altura. Numa onde declare 3,5 terá uma grid assim:
XXXXX
XXXXX
XXXXX
Cada X representa uma colocação que poderá ter amarzenado os dois tipos de dados: reais e strings.
A criação de uma Grid segue o padrão:
Código: Selecionar todos
grid_id = ds_grid_create(<largura>,<altura>)
A Grid como você viu já tem um tamanho definido quando você a declara, então você não adiciona dados nela e sim os autera, veja:
Código: Selecionar todos
ds_grid_set(<id da grid>,<localização x>,<localização y>,<valor>)
0 0
0 0
Com este código: ds_grid_set(grid_id,2,1,"A"). A grid fica deste modo:
0 "A"
0 0
Não é dificil entender, com o tempo você pega o jeito. Uma coisa interessante é que o Grid também tem o comando add:
Código: Selecionar todos
ds_grid_add(<id da grid>,<localização x>,<localização y>,<valor a ser adicionado>)
0 "ABC"
0 0
Como você deve ter notado com a funçao add você pode adicionar valores reais e string, muito útil 8).
Antes de continuarmos a vêr como alterar dados de grids mostrarei comandos que retornam dados das grids, em certos projetos elas podem ser muito úteis ;).
Como em todas as outras DS temos o comando de destruiçãopara liberar memória:
Código: Selecionar todos
ds_grid_destroy(<id da grid>)
Código: Selecionar todos
ds_grid_width(<id da grid);
ds_grid_height(<id da grid>);
Uma coisa interessante é que podemos alterar o tamanho de uma Grid a qualquer hora:
Código: Selecionar todos
ds_grid_resize(<id da grid>,<nova largura>,<nova altura>)
000
000
Nosso valor "ABC" é voltado para 0.
Um código que muda muito no Grid é o clear:
Código: Selecionar todos
ds_grid_clear(<id da grid>,<valor>)
"A" "A" "A"
"A" "A" "A"
Lá em cima vimos que podemos adicionar valores em dados, mas podemos também multiplicalos:
Código: Selecionar todos
ds_grid_multiply(<id da grid>,<x do dado>,<y do dado>,<multiplicador>)
Use o clear para termos uma grid totalmente do real dois, depois, use este cógido: ds_grid_multiply(grid_id,2,1,2). Teremos:
242
222
Outro possibilidade das Grids é poder alterar áreas específicas:
Código: Selecionar todos
ds_grid_set_region(<id da grid>,<x inicial>,<y inicial>,<x final>,<y final>,<valor a ser passado>)
288
288
Além desta função de para alterar regiões, temos também como alterar regiões com função add e multiply:
Código: Selecionar todos
ds_grid_add_region(<id da grid>,<x inicial>,<y inicial>,<x final>,<y final>,<valor a ser somando>);
ds_grid_multiply_region(<id da grid>,<x inicial>,<y inicial>,<x final>,<y final>,<multiplicador>);
4 16 16
4 16 16
Bem, vimos como alterar dados da Grid, mas ainda não vimos como lêr um deles . Para lêr um valor:
Código: Selecionar todos
ds_grid_get(<id da grid>,<x do dado>,<y do dado>)
Grid não algo fácil de se mexer, em estruturas mais avançadas então nem se fala. Mas ainda temos mais alguns códigos que podem ajudar. Sempre é bom poder conferir se certo valor existe em certa DS:
Código: Selecionar todos
ds_grid_value_exist(<id da grid>,<x inicial da procura>,<y inicial da procura>,<x final da procura>,<y final da procura>,<valor a ser procurado>)
Existem dois códigos que ajudam e muito, ele servem para indicar em que posição x ou y se encontra certo valor:
Código: Selecionar todos
ds_grid_value_x(<id da grid>,<x inicial>,<y inicial>,<x final>, <y final>,<valor a ser procurado>)
ds_grid_value_y(<id da grid>,<x inicial>,<y inicial>,<x final>, <y final>,<valor a ser procurado>)
Bem, os códigos para grid não acabaram, mas eu só vou passar estes pois creio serem os mais importantes, se quiserem mais informação só olharem no help do GM ;).
Este é meu último tutorial de DS, ainda ficaram 3 DS sem serem vistas, mas creio não são importantes, como o resto do conteúdo da grid podem ser vistas no help do GM. Espero que tenham gostado, qualquer dúvida, problema ou erro meu no tutorial só falar .