zwei graphische Anwendungen übereinander

B

ByeBye 249712

Hallo zusammen,

Ich bin dabei ein Spiel zu programmieren, jedoch scheitert es schon zu Beginn an der Umsetzung des Spielfeldhintergrundes. Habe momentan zwei Punkte die sich steuern lassen und möchte das diese sich auf einem Hintergrund bewegen. Beim ausführen des Programms erscheinen jedoch nur die zwei Punkte ohne den Hintergrund, kann mir jemand sagen warum :)?


Hier der Code der Klasse:

Java:
package lizrace;



import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Ellipse2D;
import javax.swing.JPanel;
import javax.swing.Timer;



public class Keylistener extends JPanel implements ActionListener, KeyListener {



    private static final long serialVersionUID = 1L;


    private final int i = 5;


    private Timer t = new Timer(i, (ActionListener) this);


    private double x = 0, y = 0, velx = 0, vely = 0;

    
    private final int j = 100;


    private final int k = 100;


    private double z = j, q = k, velz = 0, velq = 0;

    
    public Keylistener() {
        
    	t.start();
        addKeyListener((KeyListener) this);
        setFocusable(true);
        setFocusTraversalKeysEnabled(false);
    
    }

    

    
    
	public final void paint(final Graphics g) {
		
int h = getWidth();
	int ö = getHeight();{


		for (int x = 0; x < h; ++x) {
		
		for (int y = 0; y < ö; ++y) {
			super.paint(g);
			Graphics2D g2 = (Graphics2D)g;
			g2.fillRect(x * 10 + x,
					y * 10 + y, 10,
					10);
		}}	
		
	
		
	final int l = 40;
		

        super.paint(g);
        Graphics2D g2 = (Graphics2D) g;

        g2.fill(new Ellipse2D.Double(x, y, l, l));
        g2.fill(new Ellipse2D.Double(z, q, l, l));

    }

	/**
	 * @param e
	 * ActionEvent e
	 * @Override
	 */
	public final void actionPerformed(final ActionEvent e) {

		repaint();
		x += velx;
		y += vely;

		repaint();
		z += velz;
		q += velq;
	
	}

	private final double m = -1.5;
	

	private final double n =  1.5;
	
    public final void up() {

		vely = m;
		velx = 0;
	
}
	public final void down() {

		vely = n;
		velx = 0;
	
	}


  
	public final void left() {

		velx = m;
		vely = 0;
	
	}


	public final void right() {

		velx = n;
		vely = 0;
	
	}


	public final void up2() {

		velq = m;
        velz = 0;
    
	}


    public final void down2() {

    	velq = n;
    	velz = 0;
    
    }

  
    public final void left2() {

    	velz = m;
	    velq = 0;
    
    }

   
    public final void right2() {

    	velz = n;
    	velq = 0;
    
    }

    /**
     * @param e
     * KeyEvent e
     * @Override
     */
    public final void keyPressed(final KeyEvent e) {

		int code = e.getKeyCode();

		if (code == KeyEvent.VK_UP) {

			up2();
		}

		if (code == KeyEvent.VK_DOWN) {

			down2();
		}

		if (code == KeyEvent.VK_RIGHT) {

			right2();
		}

		if (code == KeyEvent.VK_LEFT) {

			left2();
		}

		if (code == KeyEvent.VK_W) {

			up();
		}

		if (code == KeyEvent.VK_S) {

			down();
		}

		if (code == KeyEvent.VK_D) {

			right();
		}

		if (code == KeyEvent.VK_A) {

			left();
		}

    }
    
    /**
     * @param e
     * KeyEvent e
     * @Override
     */
	public final void keyTyped(final KeyEvent e) {
	}

	/**
	 * @param e
     * KeyEvent e
	 * @Override
	 */
	public final void keyReleased(final KeyEvent e) {
	}

}
 
Meckert java net bei 'int ö' ?
Und zudem sollte super.paint(g); nur am Anfang der methode stehen, sonst ueberschriebt es alles was vorher war ;)
 
Hmmm, selbst mit paint erscheint nichts, also ich hatte mich falsch ausgedrückt, es arscheint garnichts in dem Fenster. Die Variable habe ich jetzt auch von ö in k umbenannt, bisher aber nichts zu sehn.
 
Die Variable k gibts doch schon? Dein super.paint(g); muss ganz am Anfang deiner paint Methode stehen. Wieso hast du final void?
Du willst doch sicher
public void paint( Graphics g )
überschreiben, wenn du diese Methode nutzt, sollte auch was gezeichnet werden. In deinem anderen Thread hattest du doch auch die richtige Methode. Warum nennst du die jetzt um?
 
Ich habe jetzt die super.paint Methode an den Anfang gestellt, jetzt gehts, hatte nen denkfehler. Danke, bin nen Noop im programieren.
 
Zurück