java乌龟游啊游的有趣小程序

package com.cn;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class WangBa {
	public static void main(String[] args) {
		JFrame w=new JFrame("乌龟游啊游");
		w.setSize(1720, 768);
		w.setBackground(Color.LIGHT_GRAY);
		Mypan mp=new Mypan();
		w.add(mp);
		
		w.addMouseListener(mp);
		w.addMouseMotionListener(mp);
		
		w.addKeyListener(mp);
		mp.addKeyListener(mp);
		
		Thread ti=new Thread(mp);
		ti.start();
		w.show();
	}
}

class Mypan extends JPanel implements Runnable,MouseListener,MouseMotionListener,KeyListener{//这里要设置监听
	int x=300;//乌龟的初始坐标
	int y=100;
	int[] m=new int[50];//气泡
	int[] n=new int[50];
	int[] q=new int[50];
	int[] a=new int[300];//海水
	int[] b=new int[300];
	int[] c=new int[10];//金鱼
	int[] d=new int[10];

	int f=0;//o就是右下,如果是1就是左下,2就是左上,3就是右上
	int ga=0;
	boolean fan=true;
	boolean mov=true;
	
	
	Mypan(){
		for(int i=0;i<300;i++){//设置海浪的随机
			a[i]=(int)(Math.random()*1720);
			b[i]=(int)(Math.random()* 768);
		}
		for(int j=0;j<50;j++){//设置气泡的随机
			m[j]=(int)(Math.random()*1720);
			n[j]=(int)(Math.random()* 768);
			q[j]=(int)(Math.random()*35+4);
		}
		for(int k=0;k<10;k++){//设置金鱼的随机
			c[k]=(int)(Math.random()*1720);
			d[k]=(int)(Math.random()* 268+450);//金鱼一般在底部运动
		}
	}
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		this.setBackground(Color.cyan);
	
		
		for(int j=0;j<50;j++){//画气泡
			g.setColor(Color.blue);
			g.fillOval(m[j], n[j], q[j], q[j]);
			g.setColor(Color.white);
			g.fillOval(m[j]+3,n[j]+3,q[j]-4,q[j]-4);
		}
		
		g.setColor(Color.green);
		g.fillOval(80,600,20,200);
		g.fillOval(70, 650, 200, 200);
		g.setColor(Color.cyan);
		g.fillOval(80, 670, 200, 200);
		g.setColor(Color.green);
		g.fillOval(40, 650, 50, 50);
		g.setColor(Color.cyan);
		g.fillOval(30, 670, 50, 50);
		
		g.setColor(Color.green);
		g.fillOval(150,500,25,300);
		g.fillOval(140, 650, 200, 300);
		g.setColor(Color.cyan);
		g.fillOval(150, 670, 200, 200);
		g.setColor(Color.green);
		g.fillOval(110, 650, 50, 50);
		g.setColor(Color.cyan);
		g.fillOval(100, 670, 50, 50);
		
		for(int k=0;k<10;k++){//画金鱼
			g.setColor(Color.black);
			g.fillOval(c[k], d[k], 20, 15);
			g.setColor(Color.cyan);
			g.fillOval(c[k]-10, d[k], 20, 15);
			g.setColor(Color.orange);
			g.fillOval(c[k]+15, d[k]-10, 50, 30);
			g.setColor(Color.black);
			g.fillOval(c[k]+45, d[k]-5, 5, 10);
			g.setColor(Color.red);
			g.fillOval(c[k]+63, d[k]+3, 5, 8);
		}
		
		if(fan==true){
			if(mov==true){
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟的头
				g.fillOval(x, y, 70, 100);
				g.setColor(Color.BLACK);
				g.fillOval(x+10, y+30, 10, 10);
				g.fillOval(x+50, y+30, 10, 10);
			}else{
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟的头
				g.fillOval(x, y, 70, 120);
				g.setColor(Color.BLACK);
				g.fillOval(x+10, y+30, 12, 12);
				g.fillOval(x+50, y+30, 12, 12);
				g.setColor(Color.red);
				g.fillOval(x+30, y, 8, 5);
			}
		}else{
			g.setColor(Color.getHSBColor(30,20,50));//乌龟的头
			g.fillOval(x, y, 70, 100);
			g.setColor(Color.black);
			g.drawOval(x+10, y+30, 20, 20);
			g.drawOval(x+40, y+30, 20, 20);
			g.setColor(Color.white);
			g.fillOval(x+10, y+30, 20, 20);
			g.fillOval(x+40, y+30, 20, 20);
			g.setColor(Color.black);
			g.fillOval(x+8, y+30, 15, 15);
			g.fillOval(x+38, y+30, 15, 15);
			g.setColor(Color.red);
			g.fillOval(x+25, y+50, 20, 10);
			
			
		}
		
		if(fan==true){
			if(mov==true){
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟左shang腿
				g.fillOval(x-90, y+60, 70, 70);
			}else{
				g.setColor(Color.getHSBColor(169, 40, 3));//龟左上腿
				g.fillOval(x-80, y+70, 70, 70);
			}
		}else{
			g.setColor(Color.getHSBColor(30, 20, 50));//龟左上腿
			g.fillOval(x-80, y+70, 60, 60);
		}
		if(fan==true){
			
			if(mov==true){
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟右上腿
				g.fillOval(x+90, y+50, 70, 70);
			}else{
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟右上腿
				g.fillOval(x+80, y+70, 70, 70);
			}
		}else{
			g.setColor(Color.getHSBColor(30, 20, 50));//乌龟右上腿
			g.fillOval(x+80, y+70, 60, 60);
			
		}
		if(fan==true){	
			if(mov==true){			
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟左下腿
				g.fillOval(x-80, y+220, 70, 70);
			}else{
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟左下腿
				g.fillOval(x-90, y+210, 70, 70);
			}
		}else{
			g.setColor(Color.getHSBColor(30, 20, 50));//乌龟左下腿
			g.fillOval(x-80, y+220, 60, 60);
		}
		if(fan==true){
			if(mov==true){
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟右下腿
				g.fillOval(x+80, y+220, 70, 70);
			}else{
				g.setColor(Color.getHSBColor(169, 40, 3));//乌龟右下腿
				g.fillOval(x+90, y+210, 70, 70);
			}
		}else{
			g.setColor(Color.getHSBColor(30, 20, 50));//乌龟右下腿
			g.fillOval(x+80, y+220, 60, 60);
		}
		//g.fillOval(arg0, arg1, arg2, arg3)
		if(fan==true){
			if(mov==true){
				g.setColor(Color.getHSBColor(169, 40, 3));//龟尾巴
				g.fillOval(x, y+290, 60, 80);
				g.setColor(Color.cyan);
				g.fillOval(x+20, y+300, 60, 80);
				}else{
					g.setColor(Color.getHSBColor(169, 40, 3));//龟尾巴
					g.fillOval(x, y+290, 60, 80);
					g.setColor(Color.cyan);
					g.fillOval(x-20, y+300, 60, 80);
				}
		}else{
			g.setColor(Color.getHSBColor(30, 20, 50));//龟尾巴
			g.fillOval(x, y+290, 60, 80);
			g.setColor(Color.cyan);
			g.fillOval(x-20, y+300, 60, 80);
		}
		if(fan==true){
			g.setColor(Color.GREEN);//龟盖
			g.fillOval(x-66, y+69, 200, 230);
			g.setColor(Color.black);
			g.drawOval(x-65, y+70, 200, 230);
			g.setColor(Color.black);//龟盖		
		
			g.drawLine(x+5, y+130, x+75, y+130);
			g.drawLine(x+5, y+130, x-30, y+200);
			g.drawLine(x-30, y+200, x+5, y+270);
			g.drawLine(x+5, y+270, x+75, y+270);
			g.drawLine(x+75, y+270, x+100, y+200);
			g.drawLine(x+100, y+200, x+75, y+130);
			
			g.drawLine(x+5, y+130, x-5, y+80);
			g.drawLine(x+75, y+130,x+100,y+95);
			g.drawLine(x-30, y+200, x-64, y+200);
			g.drawLine( x+5, y+270,x-5,y+290);
			g.drawLine(x+75, y+270, x+95, y+280);
			g.drawLine(x+100, y+200, x+130, y+200);
		}else{
			g.setColor(Color.getHSBColor(169, 40, 3));//龟盖
			g.fillOval(x-66, y+69, 200, 230);
			g.setColor(Color.black);
			g.drawOval(x-65, y+70, 200, 230);
			g.setColor(Color.black);//龟盖
			
			g.drawLine(x+5, y+130, x+75, y+130);
			g.drawLine(x-10, y+82, x+5, y+130);
			g.drawLine( x+75, y+130, x+100, y+95);
			g.drawLine(x-67,y+200,x+135,y+200);
			g.drawLine(x+5,y+250,x+75,y+250);
			g.drawLine(x+5,y+250,x-20,y+278);
			g.drawLine(x+100,y+275,x+75,y+250);
			g.drawLine(x+40, y+70, x+40, y+300);
		}
		
		//g.draw
		
			
		g.setColor(Color.BLUE);//画海浪
		for(int i=0;i<300;i++){
			g.drawString("~~~~", a[i], b[i]);
		}
		
		
		
		
	}
	public void run(){
		while(true){
			
			ga++;
			if(ga>20){
				ga=0;
				if(mov==true){
					mov=false;
				}else {
					mov=true;
				}
			}
			if(f==0){
				x++;
				y++;
				
			}
			if(f==1){
				x--;
				y++;
			}
			if(f==2){
				x--;
				y--;
			}
			if(f==3){
				x++;
				y--;
			}
			if(x>1200){
				if(f==0){
					f=1;
				}else{
					f=2;
				}
			}
			if(y>400){
				if(f==1){
					f=2;
				}else{
					f=3;
				}
			}
			if(x<0){
				if(f==1){
					f=0;
				}else{
					f=3;
				}
			}
			if(y<40){
				if(f==3){
					f=0;
				}else{
					f=1;
				}
			}
			for(int i=0;i<300;i++){
				
				a[i]--;
				if(a[i]<0){
					a[i]=1720;
				}
			}
			for(int j=0;j<50;j++){
				n[j]--;
				if(n[j]<2){
					n[j]=765;
				}
			}
			for(int k=0;k<10;k++){
				c[k]=c[k]+2;
				if(c[k]>1720){
					c[k]=0;
				}
			}
			try{
				Thread.sleep(20);
			}catch(Exception e){}
			repaint();
			
		}
		
	}
	public void mouseClicked(MouseEvent arg0) {
		// TODO 自动生成方法存根
		
		
	}
	public void mouseEntered(MouseEvent arg0) {
		// TODO 自动生成方法存根
		
	}
	public void mouseExited(MouseEvent arg0) {
		// TODO 自动生成方法存根
		
	}
	public void mousePressed(MouseEvent e) {
		// TODO 自动生成方法存根
		if(e.getX()>x-18&&e.getY()>y&&e.getX()<x+80&&e.getY()<y+300)
		{
			fan=false;
		}
		
	}
	public void mouseReleased(MouseEvent e) {
		// TODO 自动生成方法存根
		fan=true;
		
	}
	public void mouseDragged(MouseEvent e) {
		// TODO 自动生成方法存根
		x = e.getX()-30 ; 
		y = e.getY()-200 ; 
		this.repaint() ; 
		
		
	}
	public void mouseMoved(MouseEvent e) {
		// TODO 自动生成方法存根
		
	}
	public void keyPressed(KeyEvent e) {
		// TODO 自动生成方法存根
		if(e.getKeyCode()==39){
			
		}
		
	}
	public void keyReleased(KeyEvent e) {
		// TODO 自动生成方法存根
		
		
	}
	public void keyTyped(KeyEvent e) {
		// TODO 自动生成方法存根
		
	}
}


 说明:泡泡,水草,小鱼是会动的且大小不一,乌龟会四处跑,拖拽乌龟有意想不到的惊喜。

附带运行后的效果图:

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值