一个游戏中人物跟着鼠标移动,java
时间: 2023-07-25 10:13:27 浏览: 116
实现这个功能的方法可以使用Java中的AWT或者Swing库。
首先,需要创建一个继承自JPanel的自定义面板类,然后在该类中重写paintComponent(Graphics g)方法,用于绘制人物和背景。
然后,需要添加MouseListener和MouseMotionListener的监听器,用于监听鼠标的移动事件。在鼠标移动事件中,可以获取当前鼠标的坐标,并将人物的位置设置为鼠标的坐标,然后调用repaint()方法进行重绘。
下面是一个示例代码:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GamePanel extends JPanel implements MouseListener, MouseMotionListener {
private Point playerPos;
public GamePanel() {
setBackground(Color.WHITE);
addMouseListener(this);
addMouseMotionListener(this);
playerPos = new Point(0, 0);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillRect(playerPos.x, playerPos.y, 50, 50);
}
@Override
public void mouseDragged(MouseEvent e) {
// do nothing
}
@Override
public void mouseMoved(MouseEvent e) {
playerPos = e.getPoint();
repaint();
}
@Override
public void mouseClicked(MouseEvent e) {
// do nothing
}
@Override
public void mouseEntered(MouseEvent e) {
// do nothing
}
@Override
public void mouseExited(MouseEvent e) {
// do nothing
}
@Override
public void mousePressed(MouseEvent e) {
// do nothing
}
@Override
public void mouseReleased(MouseEvent e) {
// do nothing
}
public static void main(String[] args) {
JFrame frame = new JFrame("GamePanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
GamePanel panel = new GamePanel();
frame.add(panel);
frame.setVisible(true);
}
}
```
该示例代码创建了一个继承自JPanel的GamePanel类,用于绘制人物和背景。在该类中添加了MouseListener和MouseMotionListener的监听器,用于监听鼠标的移动事件。在鼠标移动事件中,将人物的位置设置为鼠标的坐标,并调用repaint()方法进行重绘。最后,在main方法中创建了一个JFrame窗口,并将GamePanel添加到该窗口中。
阅读全文