修炼大数据04-----自己动手做一个Moon和Rocket

package demo444;

import javax.swing.JFrame;
/*
 * JFrame ---- 窗体 ---- 相框
 * JPanel ---- 画布 ---- 相片
 * 
 * 导包
 * 1.手动导包 import....
 * 2.自动导包 ctrl + shift + o
 * 3.点击红色的×号
 */
public class MoonDemo {
	public static void main(String[] args) {
		//1.创建一个窗体
		JFrame frame = new JFrame();
		//2.给窗体添加标题
		frame.setTitle("Moon and Rocket");
		//3.给窗体添加大小
		frame.setSize(1400, 820);
		//4.窗体居中显示
		frame.setLocationRelativeTo(null);
		//类名.静态常量
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//画布
		Rocket tj = new Rocket();
		//添加画布到面板上
		frame.add(tj);
		//添加鼠标的监听事件
		frame.addMouseListener(tj);
		tj.addMouseListener(tj);	
		//添加键盘的监听事件
		frame.addKeyListener(tj);
		tj.addKeyListener(tj);
		//5.显示窗体
		frame.setVisible(true);
	}
}

嘿嘿嘿

package demo444;

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;

public class Rocket extends JPanel implements KeyListener,MouseListener,Runnable{
	//初始位置
	int x = 300;
	int y = 200;
	//火箭头
	int k1 = 800, t1 = 330;
	//火箭身体
	int k2 = 800, t2 = 330;
	//火箭的火
	int k3 = 800, t3 = 330;
	int k4 = 800, t4 = 330;
	int k5 = 800, t5 = 330;
	int k6 = 800, t6 = 330;
	//王冠
	int k7 = 500, t7 = 200;
	//月亮
	int k9 = 300, t9 = 216;
	int ke = 300, te = 216;
	//星星
	int[] a = new int[300];
	int[] b = new int[300];
	
	int position = 0;
	
	public Rocket(){
		Thread t = new Thread(this);
		t.start();//启动线程
		//构造方法:方法名与类同名;无任何返回值类型;无参构造
		for(int i = 0 ; i <a.length ; i++){
			//随机产生位置
			a[i] = (int)(Math.random()*1400);
			b[i] = (int)(Math.random()*800);
		}
	}
	
	public void paint(Graphics g) {
		super.paint(g);
		//修改底部背景色
		this.setBackground(Color.black);
		// g 代表画笔
		//加logo
		//g.setColor(Color.red);
		//g.fillOval(x+30, y, 10, 7);
		//火箭头
		g.setColor(Color.red);
		g.fillOval(k1 + 20, t1 + 195, 50, 40);
		//火箭身体
		g.setColor(Color.lightGray);
		g.fillRect(k2 - 52, t2 + 195, 100, 40);
		//火箭尾巴
		g.setColor(Color.yellow);
		g.fillOval(k3 - 90, t3 + 195, 40, 6);
		g.fillOval(k4 - 90, t4 + 206, 40, 6);
		g.fillOval(k5 - 90, t5 + 217, 40, 6);
		g.fillOval(k6 - 90, t6 + 228, 40, 6);
		
		//王冠
		g.setColor(Color.yellow);
		g.fillRect(k7+1, t7, 47, 15);// 矩形
		g.fillOval(k7+1, t7-15, 15, 30); //左椭圆
		g.fillOval(k7+15, t7-30, 18, 40);
		g.fillOval(k7+32, t7-15, 15, 30);
		g.setColor(Color.red);
		g.fillOval(k7+20, t7, 10, 10);
		g.fillOval(k7+5, t7-10, 4, 7);
		g.fillOval(k7+22, t7-20, 4, 7);
		g.fillOval(k7+38, t7-10, 4, 7);
		
		//月亮
		//外框
		g.setColor(Color.ORANGE);
		g.fillOval(k9+90, t9, 260, 260);
		//画圆
		g.setColor(Color.yellow);
		g.fillOval(k9+100, t9, 250, 250);
		//加眼睛
		g.setColor(Color.BLACK);
		g.fillOval(ke + 290, te + 120, 25,20);
		g.fillOval(ke +230, te + 120, 25, 20);
		//嘴巴
		g.fillOval(ke + 260, te + 145, 25,20);
		g.setColor(Color.ORANGE);
		
		//火箭上面加文字
		g.setColor(Color.black);
		Font font = new Font(Font.DIALOG,Font.BOLD,15);
		g.setFont(font);
		g.drawString("biubiubiu~", k1-35, t1 + 220);
		
		//画波纹
		g.setColor(Color.yellow);
		for (int i = 0; i < a.length;i++) {
			g.drawString("*", a[i], b[i]);
		}
	}
	//使用方法!!!
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		System.out.println("111111111");
		x=e.getX();
		y=e.getY();
		k1 = e.getX();
		t1 = e.getY();
		k2 = e.getX();
		t2 = e.getY();
		k3 = e.getX();
		t3 = e.getY();
		k4 = e.getX();
		t4 = e.getY();
		k5 = e.getX();
		t5 = e.getY();
		k6 = e.getX();
		t6 = e.getY();
		//重绘,重复调用paint方法
		repaint();
	}
	public void run(){
		System.out.println("start");
		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) {
				e.printStackTrace();
			}
			repaint();
		}
	}
	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub

	}
	@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 keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub

	}
	@Override
	// ctrl + F
	// ctrl + O
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		//		System.out.println("点击了按钮。");
		if(e.getKeyCode() == KeyEvent.VK_RIGHT){
			System.out.println("点击了右键");
			x=x+10;
			k1=k1+10;
			k2=k2+10;
			k3=k3+10;
			k4=k4+10;
			k5=k5+10;
			k6=k6+10;
			ke=ke+2;
		}
		if(e.getKeyCode() == KeyEvent.VK_LEFT){
			System.out.println("点击了←键");
			x=x-10;
			k1=k1-10;
			k2=k2-10;
			k3=k3-10;
			k4=k4-10;
			k5=k5-10;
			k6=k6-10;
			ke=ke-2;
		}
	}
	@Override
	//键盘松开产生反应
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值