Dúvida sobre desenvolvimento de jogos com java

Galera sou iniciante aqui no GUJ e não sei fazer um tópico bem formatado, mas a dúvida é bem simples.
Eu estou criando um jogo em java, eu criei uma janela com JFrame, já fiz a parte de Login, mas eu estou em dúvida ao criar a parte “jogavel”, eu devo criar outra janela ou mudar os componentes da já existente?

Fala Alisson, seja bem vindo ao fórum. Pra fazer um tópico formatado e bem legível, você pode seguir essas instruções:

Agora sobre o seu questionamento, é bom fazer em outra tela, a tela de login passa pra uma tela de menu, por exemplo. É sempre interessante deixar cada um no seu quadrado, pra não deixar uma classe com 10 mil linhas. (e separando tudo vc consegue fazer uma boa manutenção).

Um site que vc pode pegar alguns exemplos (básicos, mas que dão uma boa noção), é aqui:

https://code-projects.org/c/languages/project/javaprojects/

Eu vou ler esse post de formatação, é também criar outra janela para a parte “jogável”. Obrigadão…

Em aplicações desktop eu costumo utilizar um único JFrame com um contentPane utilizando CardLayout e para cada tela diferente de meu sistema eu estendo JPanel.

Sério? Seu código não fica gigante com isso?

Com apenas um JFrame ok, o restante pode ser um JDialog, mas como fica a manutenção? Não fica bagunçado?

Claro que não, você implementa cada tela em uma classe distinta, se a tela for muito complexa, partes dela também podem ser implementadas em classes distintas, assim a responsabilidade de cada classe fica bem reduzida e de fácil manutenção.

Como eu fiz jogos até hoje:

  • 1 JFrame pra execução da aplicação;
  • 1 JPanel pra tela de título;
  • 1 JPanel ou um JDialog para configurações do jogo;
  • 1 JPanel para renderizar o mundo do jogo.

E, obviamente, classes e estruturas de dados para representar o Jogo em si, por exemplo:

  • 1 GameLoop responsável por executar o tradicional loop de um jogo: (ler entrada do usuário, atualizar estado dos objetos, desenhar objetos)
  • 1 Classe Mundo ou Cenario
  • 1 superclasse Elemento com atributos e operações comuns aos elementos renderizados (coordenadas, tamanho, imagens)
  • 1 Classe Jogador que estende elemento e é controlada pelo usuário
  • 1 Classe Inimigo que também estende elemento e é controlada por uma IA