Posts Tagged thread

[JAVA] Projeto Morg 0.6

Deopis de um mês de estudo e desenvolvimento, mais outro mês parado por causa de tempo (padrão), estou postando a nova versão do Projeto Morg, agora na 0.6. Para quem ainda não sabe do que se trata, veja aqui a explicação inicial.

No post anterior aceitei a sugestão de Suissa, para exibir as mensagens do sistema logo abaixo do mapa. Valeu Suissa.

Read the rest of this entry »

, , , , , , , , , ,

7 Comments


[JAVA] Projeto Morg 0.5

O Projeto Morg nasceu na necessidade do estudo da linguagem Java através dos conceitos de desenvolvimento de jogos voltados ao RPG. Foi escolhido o estilo RPG por necessitar de dezenas de classes para as definições gerais do game, como classes de personagens, itens, mundos, mapas, acessórios, inventórios etc. Como se não bastasse, tudo isso necessita de alguns conceitos em Java, como Packages, FSO, Herança, Thread entre outras. A diferença é que neste estilo de game, tudo isso é usado de forma consistente.

Eu poderia começar com um simples jogo de Memória ou Descubra o Número através de classes swing. Mas eu estaria saindo do foco, que é meu estudo em Java. Esse é o motivo principal por iniciar o Projeto Morg em um console DOS (no caso de Windows), onde o Mundo é renderizado em forma de caracteres.

Porque Console? Porque meu foco é estudar os conceitos básico em Java, ainda.

Por se tratar de Console, o projeto até que está avançado. Veja meu checklist:

checklist_morg

Veja que Swing está como foco em meu estudo, como consequência um ambiente mais amigável, e mais adiante, utilizaremos Java 2D. Lembrando que tudo isso tem como foco o estudo da linguagem. Futuramente estarei dando continuidade, transformando num projeto para distribuição.

Estou na versão 0.5. A versão 1.0 será um fato somente quando for implementado todos os itens em “Conceitos RPG“, conforme a lista acima. Tudo ainda em modo Console. Nesta etapa o objetivo não é a diversão.

O funcionamento é simples, mesmo tratando com todos os conceitos acima especificados. Ao iniciar, é instanciado um Mundo, instanciando um Mapa para este Mundo, instanciado os objetos do Mapa, como Arvores  e Gramas e por fim instanciado o Personagem principal, na qual temos o controle através das teclas WASD. A opção X sai do loop principal e encerra o game.

As instâncias das Árvores, da Grama e do Personagem são feitas através de um arquivo texto que é lido assim que o Mundo é criado. Cada linha contém um objeto a ser criado, incluindo o Personagem principal. Dentro de cada loop é redesenhado a tela com as posições dos objetos e a nova posição do Personagem quando solicitamos que este ande para um dos lados.

Sobre o arquivo texto, ele é gerado através de uma Thread que “grava o Mundo” com intervalos de 30 segundos independete da ação do jogador. Ao iniciar o game, antes do loop, inicio essa Thread para que o mundo nunca deixe de ser salvo, assim teremos a posição atualizada de todos os itens do mapa incluindo do Personagem principal.

Veja abaixo um exemplo de quando o game é iniciado (clique):

screenshot_morg

No Mapa gerado, o caractere “*” simboliza uma Árvore, em “~” simboliza a Grama e aquele caractere estranho no canto inferior esquerdo simboliza o Personagem principal, na qual  temos o controle.

Você pode ver no checklist o item “Reconhecimento de itens a sobrepor”. Isso significa que no mapa existem itens que posso passar por cima, como uma grama. Outros itens não posso passar por cima, como a Árvore. Isso é definido em regras de programação no método de movimentação do personagem. Se for um item de sobrepor, meu Personagem sobrepõe esse item (no caso a grama), e ao sair do local, a grama deve voltar em seu ponto de origem, dando a grotesca impressão de que passamos por cima. No caso de árvores, há uma verificação de colisão e o Personagem simplesmente não anda.

Veja abaixo um vídeo do funcionamento:

Importante comentar que todo o game está baseado em vetores, tanto para o Mundo, como para o Mapa. Todas os itens do Mapa estão dentro de um vetor e a varredura para remontar a tela é feita com base nessa mesmo vetor.

Há alguns itens a mais no projeto que não descrevi aqui, como uma breve definição de armadura (está na tela), utilização da classe do cores do Java, sistema bem simples de batalha (sim, já existe) e outras cositas a mais. Estarei evoluindo conforme o checklist e criando novos posts aqui no blog. Se eu lembrar de alguma coisa dessa versão que não comentei, faço um update aqui.

Opiniões são muito bem vindas, só comentar abaixo.


, , , , , , , , ,

7 Comments


SetPageWidth