2016-10-09 4 views
-2

사용자가 키보드의 아로이 키를 사용하여 미로를 통과 할 수있는 프로그램을 만들고 있습니다. 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) { 

    } 
    } 
} 
` 
+0

[키 수신기 대신 키 바인딩을 사용하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/22741215/how-to-use-key-bindings-instead-of-key-listeners) – user1803551

+0

또한 이미지를 사용하는 경우 이미지를 제공하는 것이 좋습니다. – user1803551

답변

0

이미지를 그립니다 y 변수를 사용하지 않기 때문에 다음은 코드입니다.

+0

이미지를 다시 그릴 때 y 좌표를 새로 고쳐야합니다. 또한 조언의 단어는 keyreleased를 사용하여 눌러 진 대신 좌표를 업데이트하려고 시도합니다. –

+0

그 것처럼 보입니다. 전에는 "y"로 했었지만 미로 입구에 droid 객체를 배치 할 수 없었으므로 미로 입구에 하드 코딩했습니다. 아직도 그것을 파악하려고 노력한다. 감사! – ognimoddd

+0

다시 y로 전환하면 물체가 이상한 방향으로 움직입니다. 나는이 하나에 난처 해 해요 : / – ognimoddd

관련 문제