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;
}
}