Boa tarde pessoal.
Estou fazendo um joguinho que tem uma bola e uma raquete o objetivo é não deixar a bola cair na parte de baixo da frame,ela fica pingando nos outrs cantos do frame so não pode cair na parte de baixo do frame, por isso precisa da raquete para rebater a bolinha, é um joguinho classico de windows acho que todos ja viram.
Enfim a minha duvida é a seguinte: tenho a classe da bola, uma classe da raquete e um campo que é o frame principal. Estou chamando esses metodos no frame principal e passando como parametro as dimenções do frame, o que está acontecendo é que ele chama os metodos mas naum efetua as somas e tbm naum entra no metodo paint() quando dou um repaint() tanto na classe bola quanto na classe raquete.
Codigo da frame principal (campo):
public class projeto2 extends javax.swing.JFrame implements Runnable {
int largura;
public projeto2() {
setUndecorated(true); //para mostrar a tela sem os botões de fechar e minimizar
initComponents();
createBufferStrategy(2); //são usados dois buffers, enq8anto usa um para enviar pra tela o outro recebe dos metodos
setIgnoreRepaint(true); //para não ficar atualizando o desenho linha a linha
Thread t = new Thread (this);
t.start();
}
private void formMouseMoved(java.awt.event.MouseEvent evt){
largura = evt.getX();
}
//quando a thread é disparada esse metodo que é rodado
public void run() {
while(true){
Graphics g = getBufferStrategy().getDrawGraphics();
//Istanciando as calsses bola e raquete
bola ball = new bola();
raquete raq = new raquete();
//campo, cor e tipo (se é quadrado, circulo, etc)
g.setColor(Color.BLACK);
g.fillRect(0,0,this.getWidth(),this.getHeight());
//chamo os metodos da classe bola passando os diamotros
ball.itemX(getWidth());
ball.itemY(getHeight());
//chamo o metodo da classe raquete passando a largura do frame
raq.mexeX(largura);
g.dispose();
getBufferStrategy().show();
try{
Thread.sleep(5);
}catch (InterruptedException ex){
ex.printStackTrace();
}
}
}
}
public class bola extends javax.swing.JFrame {
private int x;
private int y;
private int IncX;
private int IncY;
public bola() {
}
public void paint(Graphics g){
System.out.println("Entrei no paint");
g.setColor(Color.WHITE);
g.fillOval(x,y,50,50);
System.out.println("Ainda estou no paint");
}
public void itemX(int largura)
{
if(x==(largura-50))
IncX = -1;
if(x==0)
IncX = 1;
x = x + IncX;
System.out.println("IncX = "+IncX);
System.out.println("x = "+x);
repaint();
}
public void itemY(int altura)
{
if(y==(altura-50))
IncY = -1;
if(y==0)
IncY = 1;
y = y + IncY;
System.out.println("IncY = "+IncY);
System.out.println("y = "+y);
repaint();
}
}
public class raquete extends javax.swing.JFrame{
private int mouse;
public raquete() {
}
public void paint(Graphics g){
System.out.println("Entrei no paint");
g.setColor(Color.RED);
g.fillRect(mouse,250,60,20);
System.out.println("Ainda estou no paint");
}
public void mexeX(int largura)
{
mouse = largura;
System.out.println("mouse = "+mouse);
repaint();
}
}
quero saber o pq não esta funcionando o comando repaint() que chama executa o metodo paint() e pq ele não faz as somas.
Espero ter explicado direito qual é meu problema, qualquer duvida me falem
Grato
