나는 내 자신의 즐거움을 위해 자바로 게임을 만들고 있는데 이동 키를 눌렀을 때 화면에서 사각형을 선택하면 움직이지 않습니다. 여기 내 첫 수업
package Game;
import java.awt.*;
import javax.swing.*;
import Game.Player;
public class Frame {
public static void main(String[] args) {
JFrame f = new JFrame();
Player pl = new Player();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.setSize(600, 600);
f.setTitle("Filler");
f.add(pl);
f.setVisible(true);
}
}
그리고 나의 두 번째 수업
package Game;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Player extends JPanel implements ActionListener, KeyListener {
Timer t = new Timer(5,this);
double x = 0, y = 0, velx = 0, vely = 0;
public Player(){
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.fillRect(40, 40, 20, 30);
}
@Override
public void keyReleased(KeyEvent e) {
velx = 0;
vely = 0;
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void actionPerformed(ActionEvent e) {
x += velx;
y += vely;
repaint();
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_D){
velx = 1.5;
vely = 0;
}
else if(e.getKeyCode() == KeyEvent.VK_A){
velx = -1.5;
vely = 0;
}
else if(e.getKeyCode() == KeyEvent.VK_W){
vely = -1.5;
velx = 0;
}
}
}
나는 나중에 더 많은 수업을 추가 할 것이지만 이것이 내가 지금 가지고있는 것입니다. 누군가 나를 도울 수 있습니까?
이것은 함께 할 수 없다 KeyListener
, 당신이 상관없이 무엇의 사각형을 그릴 있다는 사실 x
과 y
입니다. 당신은 변수를 사용하여 사각형의 x와 y 값을 교체하는 경우 x
와 y
그것을 잘 작동합니다.
public void paintComponent (Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.RED);
g2.fillRect((int)x, (int)y, 20, 30); // change line here
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다