java乌龟划水 水动+鼠标控制龟动

package cn.tedu.day01;

import javax.swing.JFrame;

/**

  • JFrame 窗体 相框
  • JPanel 画布 相片
  • 导包
  • 1.手动导包
  • 2.自动导包 ctrl+shift+o
  • 3.点击红色的叉号
  •         ctrl+s保存
    
  • @author Administrator

*/

public class TurtlePro {
public static void main(String[] args){

//1.创建一个窗体对象
JFrame frame=new JFrame();
//2.给窗体添加标题
frame.setTitle(“鬼鬼”);
//3.给窗体添加大小
frame.setSize(1400,800);
//4.窗体显示居中
frame.setLocationRelativeTo(null);
//类名.静态常量 减少内存的占用
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//画布
TJPanel tj=new TJPanel();
//添加画布到面板上
frame.add(tj);

//添加鼠标的监听事件
frame.addMouseListener(tj);
tj.addMouseListener(tj);

//5.显示窗体
frame.setVisible(true);


}

}


package cn.tedu.day01;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JPanel;
import javax.swing.colorchooser.ColorChooserComponentFactory;

public class TJPanel extends JPanel implements KeyListener,MouseListener,Runnable{

//乌龟的初始位置
int x=300;
int y=200;
//脚的初始位置
int k1=300,t1=200;
int k2=300,t2=200;
int k3=300,t3=200;
int k4=300,t4=200;



//加水的波纹
int[] a=new int[300];//300个x坐标
int[] b=new int[300];//300个y坐标
//构造方法:方法名和类同名:无任何返回值类型:无参构造 
public TJPanel(){
	//随机产生位置
	for(int i=0;i<a.length;i++)
	{
		a[i]=(int) (Math.random()*1400);
		b[i]=(int)  (Math.random()*800);
}
	Thread t=new Thread(this);
	t.start();//启动线程
}



@Override
public void paint(Graphics g) {              //alt+/   快捷
	// TODO Auto-generated method stub
	super.paint(g);
	this.setBackground(Color.CYAN);
	
	
	
	
	//画波纹
	g.setColor(Color.BLUE);
	for(int i=0;i<a.length;i++)
	{
	g.drawString("~~~~~~", a[i], b[i]);
	}
	
	//加头
	g.setColor(Color.green);
	g.fillOval(x, y, 70, 100);
	//加眼睛
	g.setColor(Color.black);
	g.fillOval(x+10, y+30, 10, 20);
	g.fillOval(x+50, y+30, 10, 20);
	
	//加舌头
	g.setColor(Color.red);
	g.fillOval(x+30 ,y-20, 10, 30);
	
	//画脚
	//左上
	g.setColor(Color.green);
	g.fillOval(x-85, y+76, 60,70);
	//右上
	g.setColor(Color.green);
	g.fillOval(k2+85, t2+76, 60,70);
	//左下
	g.setColor(Color.green);
	g.fillOval(k3-85, t3+235, 60,70);
	//右下
	g.setColor(Color.green);
	g.fillOval(k4+85, t3+235, 60,70);
	//加乌龟壳
	g.setColor(Color.orange);
	g.fillOval(x-66, y+66, 200, 230);
	//壳加文字
	g.setColor(Color.red);

	//设置字体大小
	Font font=new Font(Font.DIALOG,Font.BOLD,30);
	g.setFont(font);
	g.drawString("李十五", x-10, y+180);
	
	
/*	//给画笔设置颜色
	g.setColor(Color.red);
	//画矩形
    g.drawRect(30, 100, 400, 600);
    //画实心
    g.fillRect(120, 200, 160, 80);
    //画圆或椭圆
	g.setColor(Color.blue);
	g.drawOval(40, 300, 100, 100);
    g.fillOval(30, 450, 200, 100);
    //奥迪车标
    g.drawOval(40, 600, 30, 30);
    g.drawOval(60, 600, 30, 30);
    g.drawOval(80, 600, 30, 30);
    g.drawOval(100, 600, 30, 30);
    //画线段
    g.drawLine(20, 50, 400, 800);
	
	*/
	
	
	
}


@Override
public void keyTyped(KeyEvent e) {
	// TODO Auto-generated method stub
	
}


@Override
public void keyPressed(KeyEvent e) {
	
	
	
}


@Override
public void keyReleased(KeyEvent e) {
	// TODO Auto-generated method stub
	
}


@Override
public void mouseClicked(MouseEvent e) {
	// TODO Auto-generated method stub
	
}

//使用方法
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
//System.out.println(“11111”);
x=e.getX();
y=e.getY();
repaint();//重绘 重复调用paint方法
k1=e.getX();
t1=e.getY();
k2=e.getX();
t2=e.getY();
k3=e.getX();
t3=e.getY();
k4=e.getX();
t4=e.getY();

}


@Override
public void mouseReleased(MouseEvent e) {
	// TODO Auto-generated method stub
	
}


@Override
public void mouseEntered(MouseEvent e) {
	// TODO Auto-generated method stub
	
}


@Override
public void mouseExited(MouseEvent e) {
	// TODO Auto-generated method stub
	
}


@Override
public void run() {
	
	//System.out.println("线程启动");
	while(true){
	for (int i = 0; i < a.length; i++) {
		a[i]--;
		if(a[i]<0){
			a[i]=1400;
		}			
	}
	try {
		Thread.sleep(10);
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	repaint();
}

}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值