java程序实现小球来回运动

来源:互联网 发布:网络语言tnt是什么意思 编辑:程序博客网 时间:2024/05/16 17:54

java基础:窗口右上角有一个静小白球,左下角有一个动小蓝球,我们让动小蓝球去找静小白球,找到以后动小蓝球在原路返回,这样来回运动。背景是下雪场景。

import java.awt.Component;import javax.swing.JFrame;public class MyStarFrame {    //给私有化JFrame起一个名称,名叫frame    private JFrame frame;    //给私有化MyStarPanel起一个名称,名叫msp(画板类)    private MyStarPanel msp;    //给私有化Thread起一个名称,名叫t(让小球动起来)    private Thread t;    //showMe方法    public void showMe(){        //定义JFrame对象        frame = new JFrame();        //定义MyStarPanel对象        msp = new MyStarPanel();        //将msp(画板)添加到窗口中去        frame.add(msp);        //画板调用MyPanel方法,产生随机数(星星)        msp.MyPanel();        //定义Thead对象,与msp关联        t = new Thread(msp);        //动起来        t.start();        //设置窗口的大小(宽和高)        frame.setSize(700, 700);        //窗口标题        frame.setTitle("下雪的练习");        //默认关闭操作        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //可视化        frame.setVisible(true);    }    public static void main(String[] args) {        //实例化        MyStarFrame msf = new MyStarFrame();        //调用showMe方法(显示在窗口上)        msf.showMe();    }}
import java.awt.Color;import java.awt.Graphics;import javax.swing.JPanel;/* * extends JPanel 继承 * implements Runnable 接口方法(目的是让其动起来,下边有个run()方法会用到) * */public class MyStarPanel extends JPanel implements Runnable{    //定义雪花数组,量为300    int[] x = new int[300];    int[] y = new int[300];    //定义动球的初坐标    int x1 = 0;    int y1 = 600;    //定义小球动的方向,0为左下,1为右上    int att=0;    //构造函数,在画板上随机产生300个雪花    public void MyPanel(){        for(int i=0;i<300;i++){            x[i] = (int)(Math.random()*700);            y[i] = (int)(Math.random()*700);        }    }    //定义paint方法(画星星、球)    public void paint(Graphics g){        //调用paint方法        super.paint(g);        //设置背景颜色为黑色        this.setBackground(Color.black);        //设置画笔颜色为白色(作用于右上角的白球)        g.setColor(Color.WHITE);        //画实心球(右上角的白球,参数分别为x,y,white,height)        g.fillOval(600, 0, 50, 50);        //设置画笔颜色为蓝色(作用于左下角动的蓝球)        g.setColor(Color.blue);        //画动球(这里为什么用x1,y1?想象一下)        g.fillOval(x1, y1, 50, 50);        //设置画笔颜色为白色(为什么老是设置画笔的颜色?想一下吧)        g.setColor(Color.WHITE);        //循环画出300个随机的星星(雪花也行,都是*)        for(int i=0;i<300;i++){            g.drawString("*", x[i], y[i]);        }    }    //使用线程(动力)    public void run(){        while(true){            //定义飞行轨迹            if(att==0){                x1--;                y1++;            }            if(att==1){                x1++;                y1--;            }            //try catch(异常处理)是配套的,不要问为什么,这是规定            try{                //改变飞行轨迹                if(y1<0){                    att=0;                }                if(x1<0){                    att=1;                }                //雪花(星星)下落,消失一个,就随机产生一个,始终有300个显示在窗口上                for(int i=0;i<300;i++){                    //下落                    y[i]++;                    //如果超出下届则重新从上界下落                    if(y[i]>700){                        y[i]=0;                    }                }                //设置睡眠(下落速度,数越大越慢)                Thread.sleep(10);            }catch(Exception e){}            //重画            repaint();        }    }}

这里写图片描述

原创粉丝点击