사용자가 키보드의 아로이 키를 사용하여 미로를 통과 할 수있는 프로그램을 만들고 있습니다. droid 객체를 왼쪽에서 오른쪽으로 잘 움직이게 할 수 있습니다. 하지만 위아래로 움직일 때 나는 똑같이 할 수 없다. 내가 그 방향으로 그것을 움직이려고 할 때, 나는 전혀 이해하지 못한다. 내가 도대체 뭘 잘못하고있는 겁니까? 대신 당신은 하드 코딩 된 260
를 사용, 아마자바 - KeyListener를 사용하여 개체를 위아래로 이동하는 방법?
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Droid2 extends JPanel
{
int x=10, y=200;
ImageIcon icon = new ImageIcon("robot.jpg");
public Droid2()
{
addKeyListener (new DotsListener());
setFocusable(true);
setPreferredSize(new Dimension(850, 600));
}
public void paintComponent(Graphics page)
{
super.paintComponent(page);
File input = new File("maze.png");
Image img = new ImageIcon("maze.png").getImage();
Image img2 = new ImageIcon("robot.png").getImage();
BufferedImage bufferedImage;
try {
bufferedImage = ImageIO.read(input);
Color c=new Color(bufferedImage.getRGB(x, y));// & 255;int d=(bufferedImage.getRGB(x, y)<<16)&0xFF;
System.out.println("Red:"+c.getRed()+",\t Green:"+c.getGreen()+",\t Blue:"+c.getBlue());
if(c.getBlue()<255)
y-=10;
} catch (IOException e) {
e.printStackTrace();
}
page.drawImage(img, 0, 0, null);
page.drawImage(img2, x, 260, null);
System.out.println();
}
private class DotsListener implements KeyListener
{
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
x+=10;
else if(e.getKeyCode()==KeyEvent.VK_DOWN)
y+=10;
else if(e.getKeyCode() ==KeyEvent.VK_LEFT)
x-=10;
else if(e.getKeyCode() ==KeyEvent.VK_UP)
y-=10;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
}
`
[키 수신기 대신 키 바인딩을 사용하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/22741215/how-to-use-key-bindings-instead-of-key-listeners) – user1803551
또한 이미지를 사용하는 경우 이미지를 제공하는 것이 좋습니다. – user1803551