2D-Grafik Problem mit höhe||breite eines JFrames

florian1995

Aktives Mitglied
hier mal der code:
Java:
public class Main extends JFrame {

    GamePanel panel=new GamePanel(getPreferredSize());

    public static void main(String[] args) {
        new Main(new Dimension(500,400));
    }

    public Main(Dimension dm){
        setPreferredSize(dm);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        add(panel);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
        panel.repaint();
        panel.requestFocus();
    }

    

}
---------------------------------------------------------------------------
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package shooter;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;

/**
 *
 * @author Flo
 */
public class GamePanel extends JPanel implements KeyListener {

    int radius=30;
    int x=0,y=0;
    boolean up,down,left,right;

    Dimension dm;

    Player player=new Player(this);

    public GamePanel(Dimension dm){
        this.dm=dm;
        setPreferredSize(dm);
        addKeyListener(this);
        player.start();
    }



    @Override
    protected void paintComponent(final Graphics g){
        super.paintComponent(g);
        g.setColor(Color.red);
        g.fillOval(x, y, radius, radius);
    }

    public void keyTyped(KeyEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
    }

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_W){
            up=true;
        }
        if(e.getKeyCode()==KeyEvent.VK_S){
            down=true;
        }
        if(e.getKeyCode()==KeyEvent.VK_A){
            left=true;
        }
        if(e.getKeyCode()==KeyEvent.VK_D){
            right=true;
        }
    }

    public void keyReleased(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_W){
            up=false;
        }
        if(e.getKeyCode()==KeyEvent.VK_S){
            down=false;
        }
        if(e.getKeyCode()==KeyEvent.VK_A){
            left=false;
        }
        if(e.getKeyCode()==KeyEvent.VK_D){
            right=false;
        }
    }
}
-----------------------------------------------------------------------
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package shooter;

import java.awt.Dimension;

/**
 *
 * @author Flo
 */
public class Player extends Thread {

    GamePanel parent;
    int width=500;
    int height=400;

    public Player(GamePanel parent){
        this.parent=parent;
    }

    public void run() {
        while(true){
            parent.repaint();
            if(parent.up&&parent.y>0){
                parent.y-=1;
            }
            if(parent.down&&parent.y<height){
                parent.y+=1;
            }
            if(parent.left&&parent.x>0){
                parent.x-=1;
            }
            if(parent.right&&parent.y<width){
                parent.x+=1;
            }
            try{
                Thread.sleep(10);
            }catch(Exception e){}
        }

    }
}

es soll ein shooter von der vogelperspektive werden.
nur das problem ist die randabfrage.
Width funktioniert gar nicht und height erst 50pixel unter dem frame(in Player)

hoffe ihr könnt helfen

schon danke im voraus!
 
Also eigentlich hat die Spielsteuerung ja nichts in dieser Klasse verloren. Die sollte nur zum Anzeigen da sein.
 
Zuletzt bearbeitet:

Zurück
Oben