Criação de objetos aleatoriamente e métodos de save/load.

02/01/2016

2

Boa tarde e feliz ano novo a todos. Antes de mais nada gostaria de me desculpar caso isso seja uma duvida já resolvida, mas não consegui encontrar nada relacionado.

Bem, sou relativamente iniciante em programação Java e estou desenvolvendo um pequeno game de RPG como meu primeiro projeto. Estou com dois problemas:

1. Como em jogos clássicos de RPG os monstros aparecem aleatoriamente. Eu criei uma classe Monstro com todos os atributos necessários. Quero criar uma lista, tipo uma database, com os nomes e demais atributos de cada monstro. Porém, para uma melhor desempenho, pretendo instanciar um único objeto da classe Monstro e sempre substitui-lo pelo atual monstro que o player esteja enfrentando que terá suas informações obtidas naquela lista/database. Além disto, o monstro será sorteado aleatoriamente. No geral quero instanciar aleatoriamente um objeto pré-definido de uma classe qualquer.
Até agora não consegui pensar em um método eficiente para tal. Mas já cogitei:
Fazer a classe Monstro ser abstract e cada monstro ser uma classe filha da classe Monstro. Isso geraria inúmeras classes e também parei no problema da aleatoriedade de criação do objeto.
Listas os monstros em uma JavaDB e utiliza-lá, porém não sei até que ponto eu teria ferramentas para fazer o que eu pretendo pois não sei muito sobre JDB e pretendo aprofundar meus estudos sobre, caso essa seja uma boa opção.


2. Ao final da criação do jogo eu precisarei implementar um método de save e de load. Já imagino quais dados devo salvar, porém meu problema seria como fazer.
Eu cogitei a ideia de escrever os dados necessários em uma arquivo txt e depois resgata-los no load. Mas penso nisso como um método pouco seguro e suscetível a falhas.

Gostaria de saber a opinião dos senhores que já programam a mais tempo. Quais caminhos eu poderia seguir? Existem alguma outra ferramenta que eu poderia me aprofundar para tal?
Obrigado pela atenção.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar