Tipo: Tutorial
Nível: Intermediário.
Linguagem: java.
Contato e mais informações: https://lucasindiesh1p.wordpress.com/
Mais tutorais sobre: https://lucasindiesh1p.wordpress.com/2019/04/13/javamudando-de-telas-cenarios/
Os games atuais normalmente são organizados em telas, por exemplo: tela inicial (novo jogo, carregar jogo salvo, sair do jogo), e cada opção leva o usuário para outras telas (por exemplo: tela do mapa inicial do personagem do jogador, tela do mapa inicial da casa de um personagem), essas telas são ambientes, ou seja, cenários organizados pelo programador de forma que o usuário possa navegar entre elas.
De forma simples, não necessariamente precisa-se criar uma classe para cada cenário, basta criar uma uma estrutura de variáveis que possibilite o cenário se reconstruir conforme as condições dadas pelo programador sejam atendidas durante a interação do usuário.
Por exemplo:
game> executa o cenário> o responsável por desenhar os objetos no cenário é o paint() ou o paintComponent()> Se o usuario apertar tecla x ENTÃO o cenário modifica a variável booleana Cenario2 para que seja então desenhado o cenário do menu, e desativa a variável booleana do Cenário1 assim o que ela desenha não será mais desenhado.
Ou seja:
Por exemplo, criando a variavel que controlará se o cenário está ativo ou não na classe que executa o game:
em seguida:
Dentro do construtor da classe que é anexada ao frame e executada pelo main, pode-se inicializar as variáveis cenário1, 2,3,etc...
Dentro do paint() ou do paintComponent() (o que você estiver usando para desenhar os objetos do cenário):
e então definindo como o usuario vai conseguir ativar e desativar essa variável, por exemplo, apertando ENTER desativar e ativar novamente:
E então, ao começar a criar muitos cenários, pode-se criar por exemplo uma lista e manipular o indice com valor booleano, ao inves de criar várias variáveis(cenario1, cenario2, cenario3...)
Referências:
https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html
https://gamedev.stackexchange.com/questions/86580/dealing-with-multiple-scenes-levels
Nível: Intermediário.
Linguagem: java.
Contato e mais informações: https://lucasindiesh1p.wordpress.com/
Mais tutorais sobre: https://lucasindiesh1p.wordpress.com/2019/04/13/javamudando-de-telas-cenarios/
Os games atuais normalmente são organizados em telas, por exemplo: tela inicial (novo jogo, carregar jogo salvo, sair do jogo), e cada opção leva o usuário para outras telas (por exemplo: tela do mapa inicial do personagem do jogador, tela do mapa inicial da casa de um personagem), essas telas são ambientes, ou seja, cenários organizados pelo programador de forma que o usuário possa navegar entre elas.
De forma simples, não necessariamente precisa-se criar uma classe para cada cenário, basta criar uma uma estrutura de variáveis que possibilite o cenário se reconstruir conforme as condições dadas pelo programador sejam atendidas durante a interação do usuário.
Por exemplo:
game> executa o cenário> o responsável por desenhar os objetos no cenário é o paint() ou o paintComponent()> Se o usuario apertar tecla x ENTÃO o cenário modifica a variável booleana Cenario2 para que seja então desenhado o cenário do menu, e desativa a variável booleana do Cenário1 assim o que ela desenha não será mais desenhado.
Ou seja:
Por exemplo, criando a variavel que controlará se o cenário está ativo ou não na classe que executa o game:
- Código:
.
.
.
private boolean cenario1;
.
.
.
em seguida:
Dentro do construtor da classe que é anexada ao frame e executada pelo main, pode-se inicializar as variáveis cenário1, 2,3,etc...
- Código:
public NomeDaClasse(){
.
.
.
cenario1 = true;
.
.
.
}
Dentro do paint() ou do paintComponent() (o que você estiver usando para desenhar os objetos do cenário):
- Código:
public void paint(Graphics g){
//cenário padrão: uma tela preta, não está sendo manipulado por nenhuma variável, ou seja, estará sempre visivel
g.setColor(Color.BLACK);
g.fillRect(0, 0, getWidth(), getHeight());
//cenário1: é apenas uma mensagem (uma String) pedindo para o usuário apertar a tecla ENTER para iniciar o game
//No construtor definimos ela como true a variavel cenario1
//por isso será apresentada pelo usuario por padrão, mas ao apertar ENTER, ela se transformara em FALSE
//portanto não vai ser mais desenhada no próximo repaint() do loop.
if(cenario1 == true){
g.setFont(new Font("Times new Roman", Font.BOLD, 20));
g.drawString("Novo Jogo (aperte enter para começar)", 50, 150);
}
if(cenario1 == false){
//..aqui é o que vai ocorrer quando o usuario apertar enter, podemos desenhar outras coisas aqui e
//ate mesmo fazer uma outra condição para Desenhar ou NÃO de acordo com uma variavel cenario2 por exemplo.
g.setFont(new Font("Times new Roman", Font.BOLD, 20));
g.drawString("cena2", 50, 150);
}
e então definindo como o usuario vai conseguir ativar e desativar essa variável, por exemplo, apertando ENTER desativar e ativar novamente:
- Código:
@Override
public void keyPressed(KeyEvent e) {
int c = e.getKeyCode();
if(c == KeyEvent.VK_ENTER){
if(cenario1 == true)
cenario1 = false;
else
cenario1 = true;
}
}
E então, ao começar a criar muitos cenários, pode-se criar por exemplo uma lista e manipular o indice com valor booleano, ao inves de criar várias variáveis(cenario1, cenario2, cenario3...)
Referências:
https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html
https://gamedev.stackexchange.com/questions/86580/dealing-with-multiple-scenes-levels