Erro no instância

0 respostas
E

blz galera estou fazendo um jogo em 2D em Java, só que dei uma travada em um erro.
Estou tentando instanciar o teclado na fase e não estou conseguindo, preciso de uma ajuda.
Imagino que seja um erro simples, segue o código com 4 classes.

package meujogo;

import javax.swing.JFrame;

import meujogo.Modelo.Fase;

public class Container extends JFrame {

public Container () {
	
    //Add_no_fundo
	add(new Fase());
	//Titulo_do_Jogo
	setTitle("Meu Jogo");
	//Tamanho_da_Pagina_Largura_e_Altura
	setSize(900,728 );
	//Quando_clicar_no_X_Fechar
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	//ponto_da_tela_que_vai_aparecer_quando_iniciar_NULL =_Meio
	setLocationRelativeTo(null);
	//Comando_Para_maximilizar_e_Minimizar_a_Tela_False=não_muda_a_resoluçaõ
	this.setResizable(false);
	//Comando_para_definir_que_os_comandos_acima_seja_vizivel
	setVisible (true);
	
	}

public static void main (String []args) {
	new Container();
}

}


package meujogo.Modelo;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.util.List;
import javax.swing.ImageIcon;

import javax.swing.JPanel;

import javax.swing.Timer;

public class Fase extends JPanel implements ActionListener{

private Image fundo;

//Colocando_Player_na_fase
private Player player;
private Timer timer;

public Fase() {
	
	//melhorando_o_desempenho
	setFocusable(true);
	setDoubleBuffered(true);
	
	
	//metodo_ImageIcon_recebe_a_imagem_de_fundo
	//Criei_um_folder_chamado_res_e_salvei_a_imagem
	ImageIcon referencia = new ImageIcon("res\\background.jpg");
	fundo = referencia.getImage();
	
	player = new Player();
	//carregar_a_imagem_do_Player
	player.load();
	
	//estancia_teclado_na_fase
	addKeyListener (new TecladoAdapter());
	
	//velocidade_do_jogo_e_iniciar_o_jogo
	timer = new Timer(5, this);
	timer.start();
}

//Printar_na_tela

public void paint (Graphics g) {
	
	Graphics2D graficos = (Graphics2D) g;
	graficos.drawImage(fundo, 0, 0, null);
	graficos.drawImage(player.getImagem(), player.getX(), player.getY(), this);
	
	List<Tiro> tiros = player.getTiros(); {
		for (int i = 0; i < tiros.size(); i++) {
			Tiro m = tiros.get(i);
			m.load();
			graficos.drawImage(m.getImagem(), m.getX(), m.getY(), this);
			}
		
	}
	
	g.dispose();
	
}

@Override
public void actionPerformed (ActionEvent e) {
	
	//metodo_para_atualizar_a_tela
	player.update();
	
	//pegando_a_lista_de_tiro_e_colocando_na_fase
	List<Tiro> tiros = player.getTiros(); {
	for (int i = 0; i < tiros.size(); i++) {
		Tiro m = tiros.get(i);
		if(m.isVisivel()) {
			m.update();
		} else {
			tiros.remove(i);
		}
	}
	
	//não_deixa_a_imagem_ficar_varias_vezes_na_tela
	repaint();
	
}

	//metodo_entrada_de_teclado
	 class TecladoAdapter extends KeyAdapter {
		
        @Override
		public void keyPressed (KeyEvent e) {
			player.KeyPressed(e);
		}
	    @Override
		public void keyReleased (KeyEvent e) {
			player.KeyRelease (e);
		}
		
	}

}

}


package meujogo.Modelo;

import java.awt.Image;

import java.awt.event.KeyEvent;

import java.util.ArrayList;

import java.util.List;

import javax.swing.ImageIcon;

public class Player {

//X_Y_usados_para_Mover_quando_apertar_o_botao
//Altura_e_Largura_usada_para_colisao

private int x,y;
private int dx, dy;
private Image imagem;
private int altura, largura;
private List <Tiro> tiros;

//Construtor

public Player() {
	//Definindo_coordenada_da_tela_que_começa_o_jogo
	this.x = 100;
	this.y = 100;
	
	tiros = new ArrayList <Tiro>();
}

//metodo_para_definir_imagem_do_Player

public void load() {
	ImageIcon referencia = new ImageIcon("res\\spaceship.png");
	imagem = referencia.getImage();
	
	//definindo_altura_e_largura
	altura = imagem.getHeight(null);
	largura = imagem.getWidth(null); 	
}

//metodos_Para_mover_o_player_usando_o_teclado

public void update() {
	x += dx;
	y += dy;
 }

//metodo_que_faz_o_tiro_sair_do_meio_da_nave
public void tiroSimples() {
	this.tiros.add(new Tiro (x+largura, y + (altura/2)));
}


//metodo_entrada_do_teclado
//Quando_eu_pressionar_uma_tecla_ele_vai_reconhecer_e_fazer_uma_ação
public void KeyPressed (KeyEvent tecla) {
	int codigo = tecla.getKeyCode();
	
	//Comando_de_atirar
	
	if(codigo == KeyEvent.VK_A) {
		tiroSimples();
	}
	
	//Comando_pra_cima
	if(codigo == KeyEvent.VK_UP) {
		dy = -3;
	}
	
	if(codigo == KeyEvent.VK_DOWN) {
		dy = 3;
	}
	
	if(codigo == KeyEvent.VK_LEFT) {
		dx = -3;
	}
	
	if(codigo == KeyEvent.VK_RIGHT) {
		dx = 3;
	}
}

public void KeyRelease (KeyEvent tecla) {
	int codigo = tecla.getKeyCode();
	
	//Comando_pra_cima
	if(codigo == KeyEvent.VK_UP) {
		dy = 0;
	}
	
	if(codigo == KeyEvent.VK_DOWN) {
		dy = 0;
	}
	
	if(codigo == KeyEvent.VK_LEFT) {
		dx = 0;
	}
	
	if(codigo == KeyEvent.VK_RIGHT) {
		dx = 0;
	}
}

public int getX() {
	return x;
}

public int getY() {
	return y;
}

public Image getImagem() {
	return imagem;
}

public List<Tiro> getTiros() {
	return tiros;
}

}


package meujogo.Modelo;

import java.awt.Image;

import javax.swing.ImageIcon;

public class Tiro {

//Imagem_do_Tiro
private Image imagem;
//Posição_do_tiro
private int x, y;
//Largura_e_Altura_do_tiro
private int largura, altura;
//Para_o_Tiro_sumir_quando_bater_ou_chegar_no_limite_da_tela
private boolean isVisivel;

private static final int LARGURA = 938;
private static int VELOCIDADE = 2;

//X-E-Y_faz_com_que_o_tiro_saia_da_posição_do_player
public Tiro(int x, int y) {
	this.x = x;
	this.y = y;
	isVisivel = true;
	
}
//Carregando_a_Imagem
public void load () {
	ImageIcon referencia = new ImageIcon ("res\\tiroSimples.png");
	imagem = referencia.getImage ();
	
	this.largura = imagem.getWidth(null);
	this.altura = imagem.getHeight(null);
	}

//Se_o_X_for_maior_que_a_largura_ficara_falso_e_ele_vai_sumir
public void update () {
	this.x += VELOCIDADE;
	if(this.x > LARGURA){
		isVisivel = false;
	}
	
}
 
public void setVisivel(boolean isVisivel) {
	this.isVisivel = isVisivel;
}

public static int getVELOCIDADE() {
	return VELOCIDADE;
}

public static void setVELOCIDADE(int vELOCIDADE) {
	VELOCIDADE = vELOCIDADE;
}

public int getX() {
	return x;
}

public int getY() {
	return y;
}



public Image getImagem() {
	return imagem;
}

public boolean isVisivel() {
	return isVisivel;
}

}
package meujogo.Modelo;

import java.awt.Image;

import javax.swing.ImageIcon;

public class Tiro {

//Imagem_do_Tiro
private Image imagem;
//Posição_do_tiro
private int x, y;
//Largura_e_Altura_do_tiro
private int largura, altura;
//Para_o_Tiro_sumir_quando_bater_ou_chegar_no_limite_da_tela
private boolean isVisivel;

private static final int LARGURA = 938;
private static int VELOCIDADE = 2;

//X-E-Y_faz_com_que_o_tiro_saia_da_posição_do_player
public Tiro(int x, int y) {
	this.x = x;
	this.y = y;
	isVisivel = true;
	
}
//Carregando_a_Imagem
public void load () {
	ImageIcon referencia = new ImageIcon ("res\\tiroSimples.png");
	imagem = referencia.getImage ();
	
	this.largura = imagem.getWidth(null);
	this.altura = imagem.getHeight(null);
	}

//Se_o_X_for_maior_que_a_largura_ficara_falso_e_ele_vai_sumir
public void update () {
	this.x += VELOCIDADE;
	if(this.x > LARGURA){
		isVisivel = false;
	}
	
}
 
public void setVisivel(boolean isVisivel) {
	this.isVisivel = isVisivel;
}

public static int getVELOCIDADE() {
	return VELOCIDADE;
}

public static void setVELOCIDADE(int vELOCIDADE) {
	VELOCIDADE = vELOCIDADE;
}

public int getX() {
	return x;
}

public int getY() {
	return y;
}



public Image getImagem() {
	return imagem;
}

public boolean isVisivel() {
	return isVisivel;
}

}
package meujogo.Modelo;

import java.awt.Image;

import javax.swing.ImageIcon;

public class Tiro {

//Imagem_do_Tiro
private Image imagem;
//Posição_do_tiro
private int x, y;
//Largura_e_Altura_do_tiro
private int largura, altura;
//Para_o_Tiro_sumir_quando_bater_ou_chegar_no_limite_da_tela
private boolean isVisivel;

private static final int LARGURA = 938;
private static int VELOCIDADE = 2;

//X-E-Y_faz_com_que_o_tiro_saia_da_posição_do_player
public Tiro(int x, int y) {
	this.x = x;
	this.y = y;
	isVisivel = true;
	
}
//Carregando_a_Imagem
public void load () {
	ImageIcon referencia = new ImageIcon ("res\\tiroSimples.png");
	imagem = referencia.getImage ();
	
	this.largura = imagem.getWidth(null);
	this.altura = imagem.getHeight(null);
	}

//Se_o_X_for_maior_que_a_largura_ficara_falso_e_ele_vai_sumir
public void update () {
	this.x += VELOCIDADE;
	if(this.x > LARGURA){
		isVisivel = false;
	}
	
}
 
public void setVisivel(boolean isVisivel) {
	this.isVisivel = isVisivel;
}

public static int getVELOCIDADE() {
	return VELOCIDADE;
}

public static void setVELOCIDADE(int vELOCIDADE) {
	VELOCIDADE = vELOCIDADE;
}

public int getX() {
	return x;
}

public int getY() {
	return y;
}



public Image getImagem() {
	return imagem;
}

public boolean isVisivel() {
	return isVisivel;
}

}

Criado 2 de junho de 2020
Respostas 0
Participantes 1