Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

[ENGINE] Exemplo de inventário - Iniciante

Sprites, Modelos 3D, Exemplos, Áudios, Extensões e outros Recursos
Avatar do usuário
Denis Lemos
Membro
Membro
Reações: 0
Mensagens: 49

[ENGINE] Exemplo de inventário - Iniciante

Mensagem por Denis Lemos » Seg Ago 15, 2016 6:49 pm

Nome: Exemplo de Inventário
Versão: Game Maker: Studio
Nível: Iniciante
Imagens:
Imagem

Sobre: Esse projeto de exemplo é uma versão bem mais simples que o projeto que disponibilizei aqui recentemente e mostra o básico para se fazer um inventário, onde o jogador vai poder:
* Clicar em um item de fora para enviá-lo ao inventário;
* Clicar em um item do inventário para "dropá-lo."(Nesse exemplo, apenas deletar o item do inventátio)"
LINK DA VERSÃO MAIS AVANÇADA DO INVENTÁRIO


Funcionamento: Basicamente a lógica do exemplo funciona assim:

* Existe duas sprites, a primeira é uma imagem 32x32 que é usada para desenhar os "slots" do inventário. A segunda sprite é usada para desenhar os itens, dentro dessa sprite existem várias sub imagens sendo cada uma delas referentes a um tipo de item.
Sub imagem 0: Está vazia, é para quando o slot estiver vazio;
Sub imagem 1: Representa o item1, que é um vidro de porção azul;
Sub imagem 2: Representa o item2, que é um vidro de porção vermelho;
Sub imagem 3: Representa o item3, que é um vidro de porção verde;
Sub imagem 4: Representa o item4, que é um vidro de porção amarelo;

* Somente os itens fora do inventário são objetos verdadeiros, os itens dentro do inventário são apenas sprites desenhadas de acordo com o item alocado dentro de cada "slot" na array. Os itens fora do inventário são todos instâncias do mesmo objeto, o que os diferencia é apenas a sub imagem de suas sprites que se baseiam no valor da variável item_type. Essas sub imagens são atribuídas da mesma forma que foi explicado acima.

* Primeiramente, no Evento Create do obj_inventory é criado uma array2D[a,b] que será o inventário por assim dizer, e esta array2D[a,b] será baseda nos valores de:
a: culumnsNumber: É o número de colunas horizontais que o inventário vai conter. Como é usado array, não será possível mudar o tamanho do inventário posteriormente. Caso isso seja preciso, deve-se então usar listas.
b: slotsNumber: É o numero de "slots" que cada coluna horizontal vai ter.
Assim que a array2D chamada de inventory[] for criada, ainda no Evento Create vai ter um loop for que vai percorrer cada um dos "slots" e passar o valor 0 para eles começarem vazios.
Por exemplo: Se passar o seguinte valor para a array inventory[0,2] = 4 o terceiro slot da primeira coluna terá o valor 4 que é referente ao item4(porção amarela). PS: Observe que o índice a da array se refere ao número das colunas horizontais e o índice b se refere ao número de "slots" que cada coluna horizontal vai ter.

* Após criar a array2D do inventário, no Evento Draw é desenha os "slots" um a um usando outro loop for. Aproveitando esse mesmo loop, é feita a verificação do valor que o "slot" contém e já desenha o item referente ao seu valor. Dessa forma, sempre que trocar o valor de cada "slot" do inventário, já vai atualizar automaticamente os itens disponíveis.

* A partir daí, basta ir mudando o valor dos elementos da array conforme as coisas vão acontecendo em seu jogo. No exemplo, eu usei os clicks do mouse para adicionar e deletar os itens do inventário.

* Sempre que clicar em um item de fora do inventário, primeiro vai verificar se tem um slot vazio antes de enviar o item ao inventário, caso contrário vai aparecer uma mensagem dizendo que o inventário está cheio.

* Todo o código está comentado e fácil de entender. Os comentários estão em inglês, pois eu sempre programo dessa maneira e eu recomendo à quem quer ser um programador que faça o mesmo.

Para saber mais sobre arrays, acesse o link da documentação do Game Maker Studio: Arrays Docs

Download:
DOWNLOAD LINK

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante