GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Retorno da GMBR!!!
por theguitarmester Ter 19 Mar 2024, 22:38

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16

» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05

» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55

» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39

» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28

» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01


Array de controle global

Ir para baixo

Array de controle global Empty Array de controle global

Mensagem por Isaque Onix Qua 04 Fev 2015, 14:05

INICIANDO AS ARRAYS
Bom, muita gente me pede ajuda com arrays, é um pouco dificil de explicar, mais eu sempre tento, com exemplos, dicas, etc...
mais, hoje estou aqui para explicar DO MEU MODO, como EU uso arrays.

primeiramente, arrays são como uma lista de dados, exemplo:

na programação:

Código:
array[0,0]=lista00
array[0,1]=lista01
array[0,2]=lista02
array[0,3]=lista03
array[0,4]=lista04
array[1,0]=lista10
array[1,1]=lista11
array[1,2]=lista12
array[1,3]=lista13
array[1,4]=lista14

como eu vejo:
Código:

titulo[primeiro indentificador,segundo indentificador]=valor
titulo = array// é o nome da array

id = 0//é o primeiro indentificador da array atual
valor 0 = lista00//valor da array com o segundo indentificador 0
valor 1 = lista01//valor da array com o segundo indentificador 1
valor 2 = lista02//valor da array com o segundo indentificador 2
valor 3 = lista03//valor da array com o segundo indentificador 3
valor 4 = lista04//valor da array com o segundo indentificador 4

id = 1//é o primeiro indentificador da array atual
valor 0 = lista10//valor da array com o segundo indentificador 0
valor 1 = lista11//valor da array com o segundo indentificador 1
valor 2 = lista12//valor da array com o segundo indentificador 2
valor 3 = lista13//valor da array com o segundo indentificador 3
valor 4 = lista14//valor da array com o segundo indentificador 4
mais isso é bem relativo, cada um tem um jeito de ver e explicar, mais aqui, vou ensinar como manipula-la.

geralmente, eu uso arrays para manipular dados inseridos pelo proprio jogador, então, basicamente, uso quase que uma inteligencia artificial, para que o proprio game intenda oque o jogador quer.
vou usar como exemplo um game em que o jogador deve mover um circulo.
as arrays devem armazenar as seguintes informações:
1: x do item a ser movido, sendo que a variavel não pode ser a x, deve conter outro nome.
2: y do item a ser movido, sendo que a variavel não pode ser a y, deve conter outro nome.
3: id, uma indentificação basica, para ultimo caso. (não é obrigatório, mais sempre uso uma array para armazenar o indentificador do item. "id")

agora, criamos um objeto controle.
no create, inicializamos a contagem deste itens, e a variavel que vai nos mostrar qual item está selecionado.
Código:
contador=-1
sel_id=-1
no step, colocamos um "gerenciador de itens", as ações serão: adicionar, deletar, mover.
Código:
if(mouse_check_button_pressed(mb_left)){
if(keyboard_check(ord('A'))){
contador+=1//contador, almenta para o proximo item não conter o mesmo id deste.(contador é a variavel que "conta" quantos itens foram adicionados, e funciona como controle, para não adicionarmos itens com o mesmo id)
item[contador,0]=mouse_x//x do item
item[contador,1]=mouse_y//y do item
item[contador,2]=contador//id do item
sel_id=contador
}//adiciona um item
if(keyboard_check(ord('D')) && sel_id>=0){
item[sel_id,0]=-100//x do item
item[sel_id,1]=-100//y do item
item[sel_id,2]=-1//id do item (coloco em -1 para saber que foi deletado e não desenhar mais.)
}}//deleta um item selecionado
if(mouse_check_button(mb_left) && sel_id>=0){
item[sel_id,0]=mouse_x//x do item
item[sel_id,1]=mouse_y//y do item
}//move um item
e no draw, colocamos o loop for, que eu gosto muito de usar com arrays.
Código:
for(i=0; i<contador+1; i+=1){//for i=0, inicia o comando com a variavel i no valor 0. i<contador+1; i+=1, enquanto o valor da variavel i, não for igual ao da variavel contador, vai almentando em 1, e cada vez que almenta, executa o codigo abaixo.
if(item[i,2]!=-1){//se o id não for -1 (se não tiver deletado)
if(sel_id=i){draw_set_color(c_blue)}else{draw_set_color(c_red)}//se tiver selecionado, a cor vai ser azul, se não, vermelho.
draw_circle(item[i,0],item[i,1],30,0)//desenha o item, usando o valor das arrays
}}
bem, este é o meu modo de usar arrays, quelquer duvida, fique a vontade para perguntar.

SELECIONANDO ITEM POR CLIQUE

para selecionarmos um item que não existe, precisaremos:


  1. decidir que tipo de seleção faremos
  2. obter o ponto x e y do item
  3. clicar
  4. armazenar o id do item selecionado no controle


sigamos.
eu vejo a seleção das seguintes formas:

1: seleção imediata:
lê os valores de todas as arrays até conseguir o dado desejado e para por ai.
2: seleção complexa:
lê os valores de todas as arrays, seleciona todas que são parecidas com o valor desejado, e continua a leitura das arrays até não ter mais nenhuma para ler.
3: seleção simples:
ta na posição certa? ok! intão seleciona sapoha!

vou usar a 3, se quiserem ver os outros modos, digam, mais como disse, tudo oque eu digo nestes tutoriais são do MEU jeito de ver.

bem, como o modo é SIMPLES, vou apenas passar o codigo para estudo, pode colocar no STEP mesmo.

Código:
if(mouse_check_button_pressed(mb_right)){
for(m=0; m<contador; m+=1){//MAIS ISAQUE, a variavel não era i ao invez de m? gosto de variar U.u ja tive problemas com loops iguais...
if(point_distance(item[m,0],item[m,1],mouse_x,mouse_y)<=15){//se a distancia entre os valores das arrays e a posição do mouse for menor que o tamanho da metade da bola
sel_id=m//guarda o valor desse item na variavel do item selecionado.
}}}

Bom, está aí um de meus métodos de usar arrays. espero comentarios para saber oque acharam =)

ENGINE DESTE TUTORIAL
CONTROLES DA ENGINE:
Isaque Onix
Isaque Onix

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 15/08/2010
Reputação : 147
Número de Mensagens : 1625
Prêmios : Array de controle global Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • C#
  • Outros


http://spyreserver.16mb.com

Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos