Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在矩阵中应用这些移动代码?_Java_Swing_Matrix_Awt_Keypress - Fatal编程技术网

Java 如何在矩阵中应用这些移动代码?

Java 如何在矩阵中应用这些移动代码?,java,swing,matrix,awt,keypress,Java,Swing,Matrix,Awt,Keypress,现在,我有一个代码,它创建了一个圆圈,我可以用键盘来移动它 public class mov extends JPanel implements ActionListener,KeyListener{ Timer t=new Timer(100, this); double x=100,y=100,velx=0,vely=0; public mov(){ t.start(); addKeyListener(this); setFocusable(true); s

现在,我有一个代码,它创建了一个圆圈,我可以用键盘来移动它

public class mov extends JPanel implements ActionListener,KeyListener{
Timer t=new Timer(100, this);
double x=100,y=100,velx=0,vely=0;

public mov(){
    t.start();
    addKeyListener(this);
    setFocusable(true);
    setFocusTraversalKeysEnabled(false);

}

public void paintComponent(Graphics g){

    super.paintComponent(g);
    Graphics2D g2=(Graphics2D)g;
    g2.setColor(Color.red);
    g2.fill(new Ellipse2D.Double(x,y,40,40)); 
}

public void actionPerformed(ActionEvent e){
    repaint();
    x = x+velx;
    y = y+vely;
}

public void up(){
    vely=-50;
    velx=0;
}

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

public void left(){
    velx=-50;
    vely=0;
}

public void right(){
    velx=50;
    vely=0;
}

public void keyPressed(KeyEvent e){
    int code=e.getKeyCode();
    if(code==KeyEvent.VK_UP){
        up();
    }
    if(code==KeyEvent.VK_DOWN){
        down();
    }
    if(code==KeyEvent.VK_LEFT){
        left();
    }
    if(code==KeyEvent.VK_RIGHT){
        right();
    }
}
public void keyTyped(KeyEvent e){}

public void keyReleased(KeyEvent e){
    vely=0;
    velx=0;
}
我必须这样做,但要使用矩阵中的元素,例如:

[x,x,x,x,x]
[x,x,o,x,x]
[x,x,x,x,x]
按下向上箭头键时,应切换到:

[x,x,o,x,x]
[x,x,x,x,x]
[x,x,x,x,x]
我知道这不是用x+xspeed的方法,而是用改变矩阵[n][m]的位置,但我不知道如何使用与我的代码类似的方法来实现这一点。 我的主要疑问是如何应用它,因为这里的repaint()方法是使球在新的xy位置“消失”和“重新出现”的方法


任何帮助都将不胜感激

我看到的唯一区别是,您的上/下/左/右方法只需更改矩阵中的值即可。他们到底会如何改变它取决于(我相信)我还没有看到你发布的背景信息,包括矩阵的确切内容(x和o字符?整数?,布尔值?)以及矩阵的具体使用方式。它将填充图形或图像,并应在JFrame(一个小框架)中显示“到达目标”游戏我正在做)。矩阵中还有一些元素是“墙”,这是不可能通过的