我用编写java的eclipse创建了2个类,CodeMao类、MoveFrame类。
下面是CodeMao类的代码:
package MyProject;
import java.awt.Image;
import javax.swing.ImageIcon;
import java.awt.event.*;
/**
* 编程猫类
*/
public class CodeMao {
//坐标(初始化)
private static int x = 0,y = 0;
//image对象
private Image img;
/**
* 构造方法
*/
public CodeMao() {
//实例化img对象
img = new ImageIcon("image/codemao.jpg").getImage();
}
/**
* 获取x
* @return 编程猫的x
*/
public int getX() {
return x;
}
/**
* 获取y
* @return 编程猫的y
*/
public int getY() {
return y;
}
/**
* 加x函数
*/
public void X_add(int num) {
x += num;
}
/**
* 加y函数
*/
public void Y_add(int num) {
y += num;
}
/**
* 获取codemao图片的函数
* @return codemao图片
*/
public Image getImage() {
return img;
}
}
还有一个MoveFame类,代码如下:
```java
package myProjcet;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* “移动”窗体 该实例可以让编程猫移动
*/
public class MoveFrame extends JFrame {
/**
* 全部变量
*/
public static CodeMao cat;
/**
* 构造方法
*/
public MoveFrame() {
// 属性
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 500);
setLocationRelativeTo(null);
// 创建codemao对象
cat = new CodeMao();
// panel对象,方便画图
JPanel jp = new panel();
setContentPane(jp);
// 添加键盘敲击事件
addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
/**
*按下事件
*/
int code = e.getKeyCode();
//按w
if (code==e.VK_W) {
cat.Y_add(-5);
}
//按s
if (code==e.VK_S) {
cat.Y_add(5);
}
//按a
if (code==e.VK_A) {
cat.X_add(-5);
}
//按d
if (code==e.VK_D) {
cat.X_add(5);
}
}
public void keyReleased(KeyEvent e) {}
});
//线程对象
new Thread() {
public void run() {
//死循环
while (true) {
jp.repaint();
}
}
}.start();
}
/**
* 主方法
*/
public static void main(String[] args) {
new MoveFrame().setVisible(true);
}
/**
* panel 类
*/
private class panel extends JPanel {
public void paint(Graphics g) {
g.drawImage(cat.getImage(), cat.getX(), cat.getY(), this);
}
}
}
虽然运行可以,但是编程猫按按键走路时,他会出现n个编程猫,怎么办?
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/517059382636153.png "=600 #left")