Nao consigo instansiar meu Seters

algem pode me ajudar nao to conseguindo estanciar o medo setters da classe player para classe Fase…

//// classe fase
package meujogo.Modelo;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
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;
	private Player player;

	private Timer timer;
	
	private List<Inimigo1> inimigo1;

	public Fase() {
		// melhorar o desempenho
		setFocusable(true);
		setDoubleBuffered(true);

		ImageIcon referencia = new ImageIcon("res\\bk.jpg");
		fundo = referencia.getImage();

		player = new Player();
		player.load();

		addKeyListener(new TecladoAdapter());

		timer = new Timer(5, this);
		
		timer.start();
		// instancia inimigo do metodo abaixo!!
		inicializaInimigos();
	}
	
	// metodo para inicia o inimigo na fase.
	public void inicializaInimigos() {
		// vetor q servirá para adicionar a quantidade de inimigos no jogo!
		int coordenadas [ ] = new int [40];
		inimigo1 = new ArrayList<Inimigo1>();
		for (int i = 0; i < coordenadas.length; i++) {
			int x = (int)(Math.random()*8000+700);
			int y = (int)(Math.random()*400+30);
			inimigo1.add(new Inimigo1(x,y));
		}
		
		
	}
	

	public void paint(Graphics g) {

		Graphics2D graficos = (Graphics2D) g;
		graficos.drawImage(fundo, 0, 0, null);

		graficos.drawImage(player.getImagem(), player.getX(), player.getY(), this);

		// colar
		List<Tiro> tiros = player.getTiros();
		for (int i = 0; i < tiros.size(); i++) {
			Tiro m = tiros.get(i);
			m.loade();
			graficos.drawImage(m.getImagem(), m.getX(), m.getY(), this);
		}
		
		
		for (int o = 0; o < inimigo1.size(); o++) {
			Inimigo1 in= inimigo1.get(o);
			in.loade();
			graficos.drawImage(in.getImagem(), in.getX(),in.getY(),this);
		}
		
		

		//
		g.dispose();
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		player.update();

		// Estancia a classe onde tem a lista de tiros, copia e cola deposi de player
		// ???
		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);
			}

		}
		for (int o= 0; o < inimigo1.size(); o++) {
			Inimigo1 in = inimigo1.get(o);
			
		if(in.isVisivel()) {	
			
			in.update();
		}else { 
			inimigo1.remove(o);
		}
		
		}
		repaint();
	}

	//colisao
	public void checarColisoes() {
Rectangle formaNave = player.getBounds();
Rectangle formaInimigo1;
Rectangle formaTiro;

	for(int i = 0; i < inimigo1.size(); i ++) {
		Inimigo1 tempInimogo1 = inimigo1.get(i);
		formaInimigo1 = tempInimogo1.getBounds();
	
	if(formaNave.intersects(formaInimigo1))  {
			player.setVisivel(false);
			tempInimogo1.setVisivel(false);           //  Aqui o problema nessa linha !!!!
		}


	}
	}
	
	private class TecladoAdapter extends KeyAdapter {
		@Override

		public void keyPressed(KeyEvent e) {
			player.keyPressed(e);
		}
		@Override
		public void keyReleased(KeyEvent e) {
			player.keyReleased(e);
		}

	}

}

//// classe player
package meujogo.Modelo;

import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;

public class Player {
	// x e y usados para mover nos eixos!
private int x,y;
private int dx,dy;
private Image imagem;
private int altura,largura;

private List <Tiro> tiros;
private boolean isVisivel;

public Player() {
	//posição onde o jogador vai começar
	this.x =10;
	this.y = 170;
	isVisivel =true;
	//??????????
	tiros = new ArrayList <Tiro>();
}

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

//metodo para botoes do teclado
public void update() {
	x +=dx;
	y +=dy;
}

//para q o tiro saio do meio da navi!!
public void tiroSimples() {
	
	this.tiros.add(new Tiro(x + largura, (y + altura/2)));
}
// colisao
public Rectangle getBounds() {
	return new Rectangle(x,y,largura,altura);
}


//evento do teclado
public void keyPressed(KeyEvent tecla) {
	
	
	
	//teclas de tiros
	int codigo = tecla.getKeyCode();
	if(codigo == KeyEvent.VK_A) {
		tiroSimples();
	}
	
	//
	
	if(codigo == KeyEvent.VK_UP) {
		dy=-1;
	}
	if(codigo == KeyEvent.VK_DOWN) {
		dy=1;
	}
	if(codigo == KeyEvent.VK_LEFT) {
		dx=-1;
	}
	if(codigo == KeyEvent.VK_RIGHT) {
		dx=1;
	}
	
}

// tecla solta

public void keyReleased(KeyEvent tecla) {
	int codigo = tecla.getKeyCode();
	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 boolean isVisivel() {
	return isVisivel;
}

public void setVisivel(boolean isVisivel) {            // Criei os metodos set e get!!!
	this.isVisivel = isVisivel;
}

public int getX() {
	return x;
}

public int getY() {
	return y;
}

public Image getImagem() {
	return imagem;
}

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

}

Método (subentendido de “medo”) não se instancia, se chama ou invoca. O que se instancia são classes. Se um método é da classe X, para se usar na classe Y, via de regra, se deve instanciar a classe X na classe Y para só então ter acesso aos métodos (comportamentos) da classe por meio de um objeto de seu tipo. Exemplo:

public class ClasseX {
	private int codigo;
	private String nome;
	
	/*
	* Métodos acessores e modificadores
	*/
	public void setCodigo(int codigo){
		this.codigo = codigo;
	}
	
	public int getCodigo(){
		return codigo;
	}
	
	public void setNome(String nome){
		this.nome = nome;
	}
	
	public String getNome(){
		return nome;
	}
} 

public class ClasseY {
	ClasseX classeX = new ClasseX();
	classeX.setCodigo(102);
	classeX.setNome("Fulano");
}
1 curtida

Você instância classes, não objetos (objetos são instâncias de classe), uma classe é a forma abstrata, é o modelo, é a planta, mas, para ela funcionar tem que ser instanciada e ai é um objeto.

2 curtidas

Eu sei e sei também que escrevi errado. Me perdi nas palavras, acabei pensando uma coisa que não saiu na escrita… hehehe!! Estava lendo o que escrevi e estava prestes a corrigir quando você postou (costumo reler depois que posto para ver como fica a formatação). De qualquer forma, obrigado!

Eu não tenho como imaginar que você sabe, entenda, que o motivo da correção é válido. Muitos entram aqui postam um monte de coisa e não tem essa observação e fica um conteúdo ruim, então eu vou sempre orientar.

Você não diz estanciar, isso em orientação à objeto não existe, a palavra é Instanciar.

Leia:

ok

to fazendo curso mas eu estava sequiando esse tutorial…

já conseguiu resolver o problema?

a consegui sim brother virei o código de um lado a outro , de ponta a cabeça dei umas 4 cabeçadas na parede ai meio zonzo consegui ver q faltou criar um setter na classe inimigo.:see_no_evil:

1 curtida