Trocar de cor! Ajuda por favor

3 respostas
FelipeMonfardini

Olá!
Gostaria de saber como faço pra trocar a cor da bola quando ela tocar na parte superior de uma janela 400x400
O código é este:1
(Desconsiderem o moveBola1 por favor)

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JogoPainel extends JPanel implements Runnable { //Tamando da janela private static final int LARGURA = 400; private static final int ALTURA = 400; private Thread animacao; private int tempoEspera = 12; private boolean jogando= false; //Informou a posição inicial e a direção da bola private int x=40,y=360, direcaoX=1, direcaoY=1; private int x1=150,y1=50, direcaoX1=1, direcaoY1=1; public JogoPainel() { //Cor de fundo setBackground(Color.WHITE); setPreferredSize(new Dimension(LARGURA, ALTURA)); } public void addNotify() { super.addNotify(); iniciarJogo(); } private void iniciarJogo() { if(animacao==null || !jogando) { animacao = new Thread(this); animacao.start(); } } public void run() { jogando = true; while(jogando) { moveBola(); //moveBola1(); repaint(); try { Thread.sleep(tempoEspera); } catch(InterruptedException e) { e.printStackTrace(); } } System.exit(0); } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); //g.setColor(Color.BLACK); //g.fillOval(x1,y1,40,40); } private void moveBola() { if(x>=360) direcaoX *= -1; if(x<=0) direcaoX *= -1; if(y>=360) direcaoY *= -1; if(y<=0) direcaoY *= -1; x += direcaoX; y += direcaoY; } /*private void moveBola1() { if(x1>=360) direcaoX1 *=-1; if(x1<=0) direcaoX1 *= -1; if(y1>=360) direcaoY1 *= -1; if(y1<=0) direcaoY1 *= -1; x1 += direcaoX1; y1 += direcaoY1; }*/ }

3 Respostas

FelipeMonfardini

Perdão na parte de paintComponent ficou faltando uma linha
A parte correta é esta:

public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); g.fillOval(x,y,40,40); //g.setColor(Color.BLACK); //g.fillOval(x1,y1,40,40); }

Marcio_Lima

Analise as alterações:

private Color corBola[] = {Color.black, Color.red};		//  <<<<<<<
	private int cor = 0;									//  <<<<<<<
    public JogoPainel()
    {
public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.setColor(corBola[cor]);		//  <<<<<<<
        g.fillOval(x,y,40,40);   
        //g.setColor(Color.BLACK);
		//g.fillOval(x1,y1,40,40);
    }
	private void moveBola()
    {
        if(x>=360) direcaoX *= -1;
        if(x<=0) direcaoX *= -1;
        if(y>=360) direcaoY *= -1;
        if(y<=0) {					
        	direcaoY *= -1;
        	if (cor > 0) {			//  <<<<<<<
        		cor = 0;			//  <<<<<<<
        	} else {				//  <<<<<<<
        		cor = 1;			//  <<<<<<<
        	}
        }
        x += direcaoX;
        y += direcaoY;
    }
FelipeMonfardini

Entendi! Grato

Criado 27 de junho de 2012
Ultima resposta 27 de jun. de 2012
Respostas 3
Participantes 2