这个乌龟很有意思大家可以玩一玩。
package utils;
import java.awt.Color;
import java.awt.Graphics;
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 Test1 {
public static void main(String args[]) {
JFrame w = new JFrame();
w.setSize(800, 600);
w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
w.setBackground(Color.CYAN);
MyPanel mp = new MyPanel();
mp.setBackground(Color.CYAN);
w.add(mp);
mp.addMouseMotionListener(mp);
mp.addMouseListener(mp);
w.setVisible(true);
}
}
class MyPanel extends JPanel implements MouseMotionListener, MouseListener {
private static final long serialVersionUID = 1L;
int x = 100;
int y = 100;
boolean isRight = true;
public void paint(Graphics g) {
super.paint(g);
// 画乌龟正面
g.setColor(new Color(50, 200, 0));
// 画四肢
g.fillOval(x, y, 35, 50);
g.fillOval(x + 105, y, 35, 50);
g.fillOval(x, y + 110, 35, 50);
g.fillOval(x + 105, y + 110, 35, 50);
if (isRight == false) {
g.setColor(Color.RED);
// 画背面脚掌
g.fillOval(x + 5, y + 15, 15, 15);
g.fillOval(x + 5, y + 8, 5, 5);// 周围的小圆
g.fillOval(x + 14, y + 5, 5, 5);// 周围的小圆
g.fillOval(x + 20, y + 13, 5, 5);// 周围的小圆
g.fillOval(x + 120, y + 15, 15, 15);
g.fillOval(x + 5 + 110, y + 10, 5, 5);// 周围的小圆
g.fillOval(x + 14 + 110, y + 5, 5, 5);// 周围的小圆
g.fillOval(x + 20 + 112, y + 10, 5, 5);// 周围的小圆
g.fillOval(x + 3, y + 128, 15, 15);
g.fillOval(x + 5, y + 8 + 135, 5, 5);// 周围的小圆
g.fillOval(x + 12, y + 5 + 142, 5, 5);// 周围的小圆
g.fillOval(x + 20, y + 13 + 130, 5, 5);// 周围的小圆
g.fillOval(x + 120, y + 125, 15, 15);
g.fillOval(x + 5 + 110, y + 8 + 135, 5, 5);// 周围的小圆
g.fillOval(x + 12 + 110, y + 5 + 142, 5, 5);// 周围的小圆
g.fillOval(x + 20 + 110, y + 13 + 130, 5, 5);// 周围的小圆
}
g.setColor(new Color(50, 200, 0));
g.fillOval(x + 50, y - 40, 40, 60); // 画龟头
if (isRight) {
// 画眼白
g.setColor(Color.WHITE);
g.fillOval(x + 55, y - 30, 10, 10);
g.fillOval(x + 79, y - 30, 10, 10);
// 画眼黑
g.setColor(Color.BLACK);
g.fillOval(x + 55, y - 30, 6, 6);
g.fillOval(x + 79, y - 30, 6, 6);
} else {
g.setColor(Color.RED);// 画红嘴
g.fillOval(x + 59, y - 26, 23, 25);
g.setColor(new Color(50, 200, 0));// 遮盖露出月牙红嘴
g.fillOval(x + 58, y - 35, 25, 25);
g.setColor(Color.BLACK);
g.drawLine(x + 65, y - 35, x + 62, y - 30);
g.drawLine(x + 73, y - 35, x + 77, y - 30);
}
if (isRight) {
g.setColor(new Color(50, 200, 0));// 画尾巴
g.fillOval(x + 65, y + 130, 35, 90);
g.setColor(Color.CYAN);
g.fillOval(x + 75, y + 130, 30, 100);
} else {
g.setColor(new Color(50, 200, 0));// 画尾巴
g.fillOval(x + 45, y + 130, 35, 90);
g.setColor(Color.CYAN);
g.fillOval(x + 39, y + 130, 30, 100);
}
g.setColor(new Color(50, 160, 50));
// 画龟身
g.fillOval(x, y, 140, 160);
// 画龟身大圈
if (isRight) {
g.setColor(new Color(50, 200, 0));
// 画龟身小圈
g.fillOval(x + 10, y + 10, 120, 140);
g.setColor(Color.BLACK);
g.drawLine(x + 50, y + 60, x + 90, y + 60);
g.drawLine(x + 50, y + 100, x + 90, y + 100);
g.drawLine(x + 50, y + 60, x + 30, y + 80);
g.drawLine(x + 90, y + 60, x + 110, y + 80);
g.drawLine(x + 50, y + 100, x + 30, y + 80);
g.drawLine(x + 90, y + 100, x + 110, y + 80);
g.drawLine(x + 50, y + 60, x + 30, y + 28);
g.drawLine(x + 90, y + 60, x + 110, y + 28);
g.drawLine(x + 30, y + 80, x + 11, y + 75);
g.drawLine(x + 110, y + 80, x + 129, y + 75);
g.drawLine(x + 50, y + 100, x + 38, y + 140);
g.drawLine(x + 90, y + 100, x + 102, y + 140);
} else {
g.setColor(new Color(255, 230, 230));
// 画龟身小圈
g.fillOval(x + 10, y + 10, 120, 140);
g.setColor(Color.BLACK);
g.drawLine(x + 50, y + 60, x + 90, y + 60);// 六边形上线
g.drawLine(x + 50, y + 100, x + 90, y + 100);// 六边形下线
// g.drawLine(x+50,y+60,x+30,y+80);//六边形上左
// g.drawLine(x+90,y+60,x+110,y+80); //六边形上右
// g.drawLine(x+50,y+100,x+30,y+80); //六边形下左
// g.drawLine(x+90,y+100,x+110,y+80); //六边形下右
g.drawLine(x + 30, y + 80, x + 110, y + 80);
g.drawLine(x + 50, y + 60, x + 30, y + 28);
g.drawLine(x + 90, y + 60, x + 110, y + 28);
g.drawLine(x + 30, y + 80, x + 11, y + 75);
g.drawLine(x + 110, y + 80, x + 129, y + 75);
g.drawLine(x + 50, y + 100, x + 38, y + 140);
g.drawLine(x + 90, y + 100, x + 102, y + 140);
}
// 写提示语
g.setColor(Color.red);
g.drawString("主人快点我", x + 40, y + 85);
}
public void mouseDragged(MouseEvent arg0) {
x = arg0.getX() - 80;
y = arg0.getY() - 70;
this.repaint();
}
public void mouseMoved(MouseEvent arg0) {
}
public void mousePressed(MouseEvent arg0) {
System.out.println("鼠标按下");
if ((arg0.getX() > x) && (arg0.getX() < (x + 140))
&& (arg0.getY() > (y - 40)) && (arg0.getY() < (y + 160))) {
isRight = false;
this.repaint();
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
System.out.println("鼠标释放");
isRight = true;
this.repaint();
}
}