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(一个小框架)中显示“到达目标”游戏我正在做)。矩阵中还有一些元素是“墙”,这是不可能通过的