Tower defense em java

eu preciso fazer um jogo de tower defense bem simples (o mais simples possível) em java para um trabalho final, mas eu não sei nem por onde começar. alguém sabe algum lugar com algumas dicas ou saberia de dizer por onde começar? uma vez que eu consiga começar eu acho que consigo continuar.

Este tópico deve te dar um direcionamento : http://www.guj.com.br/java/149265-tower-defense-game-java2d-game. Só não vai copiar tudo e dizer que foi você que fez.

Abraço.

não se preocupa com copiar. nem tenho como. para o trabalho preciso ter algumas estruturas específicas, muitas delas são horríveis de usar, então dificilmente terão em algum lugar.

dei uma olhada e acho que é muito grande e complicado. queria algo mais simples por onde eu pudesse começar, mas já é alguma coisa. obrigado. se alguém souber de mais alguma coisa que possa ajudar eu agradeço.

Mas o que você precisa especificamente?

Até onde entendi, é construir um jogo 2D em Java, certo? Então imagino que você precise estudar como desenhar 2D em Java (pode ser Java2D) e como construir um jogo. Recomendo, nesse caso, começar pelos artigos do Ponto V: http://www.pontov.com.br/site/java.

Dê uma olhada também em: http://www.guj.com.br/java/69961-jmario—mario-em-java—versao-nova-no-sourceforge.

Abraço.

a parte gráfica não é tão importante assim (quase irrelevante, só precisa ser jogável para mostrar a lógica), mas imagino que seja necessário de qualquer jeito. acho que não vai dar tempo de fazer isso até semana que vem, mas vlw pela ajuda. continuo aceitando sugestões se mais alguém tiver.

É um tower defense com campo de jogo aberto (como esse do Marky) ou um daqueles que os creeps passam por um caminho pronto e as torres são colocadas em volta?

qualquer um. de preferência o mais fácil. é um trabalho e o objetivo é fazer um programa que tenha algumas estruturas específicas (Herança, Polimorfismo por inclusão, Polimorfismo paramétrico e outros em um total de 12 coisas). então escolhemos o tower defense em java que parecia ser uma boa ideia e uma boa linguagem para ter isso no programa. então eu só preciso fazer um tower defense qualquer e colocar o que o professor pede em algum lugar do programa. o tower defense em si não é o trabalho e sim ter essas estruturas dentro do programa.

Isso vai dar um trabalho relativamente grande!
Vou colocar uma idéia aqui de como fazer, bem resumidamente só para dar uma direção… como escrevi bem por cima tem coisa muito mal explicada, é só perguntar.
Mas pensa bastante sobre cada item e faça experiências para ver o que dá certo e o que não dá. Você mesmo perceberá os detalhes que eu não incluí aqui.

Estou pensando em um jogo com espaço aberto, aqueles onde os creeps (monstros, invasores, etc) andam para qualquer lado, só se desviando das torres.

----> Passo 1: Parta de um jogo simples.
Serve para pegar os conceitos principais (como a estrutura de um loop de jogo e os métodos básicos para desenhar na tela); além disso o tempo não será perdido pois depois vai poder partir desse jogo para criar o seu.
Uma boa idéia é o jogo Pong (aquele das duas barrinhas que ficam rebatendo a bola uma para a outra), tem váááários tutoriais ensinando a fazer passo-a-passo, é só pesquisar no google (jogo pong java, ou java pong game).
Um que li recentemente e é bem legal é esse: http://pontov.com.br/site/android/247-android-desenhando-na-tela . É para Android, não é difícil de passar para Java SE, e o interessante é que ele explica bem didaticamente a movimentação, game loop e desenho na tela.

(Quando tiver esse game loop básico já terá usado bastante herança e polimorfismo)

----> Controle a inclusão de creeps.
Se você fez o pong já tem uma base.
Ao invés de apenas uma bolinha no jogo, agora vão entrar mais elementos. A cada intervalo de tempo (por exemplo 1 ou 2 segundos) inclua um creep novo no ponto de origem (o creep é um objeto como a bolinha, guarda uma posição e tem um método para se desenhar, e além disso possui um atributo a mais que é a quantidade de vida).
Também tem um intervalo maior entre as “waves”, que precisa ser controlado (mas também se quiser tirar as waves para ficar mais simples, tudo bem, é só os inimigos irem entrando de forma contínua).

----> Faça o mapeamento da tela
Você vai dividir a tela em células, que permitirão executar a lógica do jogo.
Será preciso manter uma estrutura semelhante a uma matriz, a tela é dividida em quadradinhos (apenas dentro do modelo de objetos do jogo, esses quadradinhos não serão pintados na tela) que depois serão marcados como [ocupado] ou [não ocupado] permitindo a execuçao do algoritmo de busca de caminho.

----> Inclusão de torres.
Para ficar simples pode ter apenas um tipo de torre, quando o usuário clica ela aparece na coordenada do click.
A torre também é um objeto dentro do modelo de jogo.
Verifique em qual célula essa torre está (calculando de acordo com a coordenada) e marque como ocupado.

Também pode colocar aqui um controle de dinheiro, cada torre construída debita um valor.

----> Controle a movimentação dos creeps
A cada loop os creeps executam um algoritmo de busca de caminho (Veja aqui: http://www.policyalmanac.org/games/aStarTutorial_port.htm).
Você usará o modelo de células do campo de jogo, tendo como destino o portão e como obstáculo as torres.
Depois de executar esse algoritmo desloque o creep na direção obtida.

----> Os tiros
A cada loop as torres verificam se existem creeps no seu raio de ação (calcule a distância de cada creep em relação à torre, se estiver menor que o limite estabelecido, pode atirar).
Nos próximos frames, exiba algo para mostrar que aconteceu esse tiro (por exemplo, uma linha entre a torre e o creep, e o creep de uma cor diferente) e desconte um pouco de vida do creep.

----> A vida do jogador
Cada vez que um creep chega ao portão, desconte a vida do jogador. Se acabarem finalize o jogo.