java乌龟抓蚯蚓bgm

package cn.tedu.day01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

import javax.swing.JFrame;

import sun.audio.AudioPlayer;
import sun.audio.AudioStream;

public class FishPro {

public static void main(String[] args) {
	
	   //1.创建一个窗体对象
		JFrame 	frame=new JFrame();
		//2.给窗体添加标题
		frame.setTitle("鬼鬼");	
		//3.给窗体添加大小
		frame.setSize(1600,1200);	
		//4.窗体显示居中
		frame.setLocationRelativeTo(null);
		//类名.静态常量  减少内存的占用
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		//画布
		FishJpanel tj=new FishJpanel();
		//添加画布到面板上
		frame.add(tj);
		//tj.move();
		//添加鼠标的监听事件
		frame.addMouseListener(tj);
		tj.addMouseListener(tj);
		
		//添加键盘的监听事件
		frame.addKeyListener(tj);
		tj.addKeyListener(tj);
		//5.显示窗体
		frame.setVisible(true);
		
		
		/*
		 * 添加音乐
		 * */
		try {
			FileInputStream f=new FileInputStream("music/Redbone - Come And Get Your Love.wav");
			AudioStream as=new AudioStream(f);
			AudioPlayer.player.start(as);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	AudioPlayer.player.start();
		
	
		}
	

}

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 FishJpanel extends JPanel implements KeyListener,MouseListener,Runnable{

//乌龟的初始位置
int x=700;
int y=500;
//蚯蚓的初始位置
int x1=800;
int y1=200;
int m=1;
int n=1;
//
//脚的初始位置
int k1=700,t1=500;
int k2=700,t2=500;
int k3=700,t3=500;
int k4=700,t4=500;



//加水的波纹
int[] a=new int[300];//300个x坐标
int[] b=new int[300];//300个y坐标

//定义一个position
//当position==0的时候,乌龟的左上脚和右下角同时向前移动
int position=0;
int position1=0;
int position2=0;
int position3=0;




//构造方法:方法名和类同名:无任何返回值类型:无参构造 
public FishJpanel(){
	//随机产生位置
	for(int i=0;i<a.length;i++)
	{
		a[i]=(int) (Math.random()*1600);
		b[i]=(int)  (Math.random()*1200);
}
	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.pink);
	g.fillOval(x1, y1, 12, 100);
	//蚯蚓眼睛
	g.setColor(Color.BLACK);
	g.fillOval(x1+1, y1+6, 5, 5);
	g.fillOval(x1+7, y1+6, 5, 5);

	//加头
	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(k1-85, t1+76, 60,70);
	//右上if
	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, t4+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);
	
	

}

 








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


@Override
public void keyPressed(KeyEvent e) {
	
	
	/*if(e.getKeyCode()==KeyEvent.VK_W)
	{
		System.out.println("点击了W键");
		repaint();
		y1=y1-3;
	}
	if(e.getKeyCode()==KeyEvent.VK_S)
	{
		System.out.println("点击了S键");
		repaint();
		y1=y1+3;
	}
	
	if(e.getKeyCode()==KeyEvent.VK_A)
	{
		System.out.println("点击了A键");
		repaint();
		x1=x1-3;
	}
	
	if(e.getKeyCode()==KeyEvent.VK_D)
	{
		System.out.println("点击了D键");
		repaint();
		x1=x1+3;
	}
	*/
	
//System.out.println("点击了按钮");
if(e.getKeyCode()==KeyEvent.VK_UP){

	System.out.println("点击了上方向键");
	repaint();
	y=y-10;

	if(position==0){
		t1=t1-20;
		t4=t4-20;
	}
	if(position==1){
		t2=t2-20;
		t3=t3-20;
	}
	if(t1<t2){
		if(x!=k1){
			x=k1=k2=k3=k4;
		}
		position=1;
	}
	if(t1>=t2){
		if(x!=k1){
			x=k1=k2=k3=k4;
		}
		position=0;
	}
	
	
	
}

if(e.getKeyCode()==KeyEvent.VK_DOWN){

	System.out.println("点击了下方向键");
	repaint();
	y=y+10;

	if(position1==0){
		t1=t1+20;
		t4=t4+20;
	}
	if(position1==1){
		t2=t2+20;
		t3=t3+20;
	}
	if(t1>t2){
		if(x!=k1){
			x=k1=k2=k3=k4;
		}
		position1=1;
	}
	if(t1<=t2){
		if(x!=k1){
			x=k1=k2=k3=k4;
		}
		position1=0;
	}
	
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT){

	System.out.println("点击了右方向键");
	repaint();
	x=x+10;
	
	if(position2==0){
		k1=k1+20;
		k4=k4+20;
	}
	if(position2==1){
		k2=k2+20;
		k3=k3+20;
	}
	if(k1>k2){
		if(y!=t1){
			y=t1=t2=t3=t4;
		}
		position2=1;
	}
	if(k1<=k2){
		if(y!=t1){
			y=t1=t2=t3=t4;
		}
		position2=0;
	}
}


if(e.getKeyCode()==KeyEvent.VK_LEFT){

	System.out.println("点击了左方向键");
	repaint();
	x=x-10;

	if(position3==0){
		k1=k1-20;
		k4=k4-20;
	}
	if(position3==1){
		k2=k2-20;
		k3=k3-20;
	}
	if(k1<k2){
		if(y!=t1){
			y=t1=t2=t3=t4;
		}
		position3=1;
	}
	if(k1>=k2){
		if(y!=t1){
			x=t1=t2=t3=t4;
		}
		position3=0;
	}
}
}

@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() {
	
	//定义小球移动轨迹
	  
	       while(true){
	            x1 += m;
	            y1 += n;
	            if(x1 >= 1400){
	                m = -m; 
	            }
	            if(x1 < 0){
	                m = 1;
	            }
	            if(y1 >= 900){
	                n = -n;
	            }
	            if(y1 < 0){
	                n = 1;
	            }
	            try {
	                Thread.sleep(5);
	            } catch (InterruptedException e) {
	                e.printStackTrace();
	            }
	            repaint();
	        
	    
	
	//System.out.println("线程启动");
	
	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();
}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值