今はなつかしやぁ、Java Applet

```
::::::::::::::
AnotherStar.java
::::::::::::::
/**
* $Id: Pursuit3.html,v 1.1 2009/06/22 16:11:53 kishi Exp kishi $
* @author KISHI Yasuhiro
*/

import java.awt.Color;
import java.awt.Graphics;

public class AnotherStar {

    public AnotherStar( double d, double d1, double d2, double d3, double d4, double d5, Color color1, double d6 ) {
        cx = d;
        cy = d1;
        rx = d2;
        ry = d3;
        theta = d4;
        pitch = d5;
        color = color1;
        size = d6;
    }

    public void moveNext() {
        theta += pitch;
        x = cx + rx * Math.cos( theta );
        y = cy + ry * Math.sin( theta );
        x += 100D * Math.sin( ( -1D * theta ) / 6D );
        y += 50D * Math.cos( ( -1D * theta ) / 13D );
    }

    public void setColor( Color color1 ) {
        color = color1;
    }

    public void paint( Graphics g ) {
        g.setColor( color );
        g.fillOval( ( int ) x, ( int ) y, ( int ) size, ( int ) size );
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public int getRed() {
        return color.getRed();
    }

    public int getBlue() {
        return color.getBlue();
    }

    public int getGreen() {
        return color.getGreen();
    }

    private double x;
    private double y;
    private double cx;
    private double cy;
    private double rx;
    private double ry;
    private double size;
    private double theta;
    private double pitch;
    private Color color;
}
::::::::::::::
ColorEnum.java
::::::::::::::
/**
* $Id: Pursuit3.html,v 1.1 2009/06/22 16:11:53 kishi Exp kishi $
* @author KISHI Yasuhiro
*/

import java.awt.Color;
import java.io.PrintStream;

public class ColorEnum {

    public ColorEnum( Color color1 ) {
        color = color1;
    }

    public int getRed() {
        return color.getRed();
    }

    public int getBlue() {
        return color.getBlue();
    }

    public int getGreen() {
        return color.getGreen();
    }

    public Color getNextColor() {
        int i = getRed();
        int j = getGreen();
        int k = getBlue();
        if ( ++k > 255 ) {
            k = 0;
            if ( ++j > 255 ) {
                j = 0;
                k = 0;
                if ( ++i > 255 ) {
                    i = 0;
                    j = 0;
                    k = 0;
                }
            }
        }
        return new Color( i, j, k );
    }

    public void printCurrentStatus() {
        int i = getRed();
        int j = getGreen();
        int k = getBlue();
        System.out.println( i + "," + j + "," + k );
    }

    public static void main( String args[] ) {
        ColorEnum colorenum = new ColorEnum( new Color( 254, 254, 0 ) );
        for ( int i = 0; i < 0x186a0; i++ ) {
            Color color1 = colorenum.getNextColor();
            colorenum.printCurrentStatus();
            colorenum = new ColorEnum( color1 );
        }

    }

    private Color color;
}
::::::::::::::
Literal.java
::::::::::::::
/**
* $Id: Pursuit3.html,v 1.1 2009/06/22 16:11:53 kishi Exp kishi $
* @author KISHI Yasuhiro
*/

import java.awt.*;

public class Literal {

    public Literal() {
        font = new Font( "Dialog", 0, 32 );
    }

    public void moveNext() {
        if ( y-- < to_y )
            y = ( int ) from_y + 50;
    }

    public void setLiteral( String s ) {
        literal = s;
    }

    public void setFont( Font font1 ) {
        font = font1;
    }

    public void setColor( Color color1 ) {
        color = color1;
    }

    public Color getColor() {
        return color;
    }

    public void setXY( double d, double d1 ) {
        x = d;
        y = d1;
    }

    public void setVerticalRange( double d, double d1 ) {
        from_y = d;
        to_y = d1;
    }

    public void paint( Graphics g ) {
        g.setFont( font );
        g.setColor( color );
        g.drawString( literal, ( int ) x, ( int ) y );
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public int getRed() {
        return color.getRed();
    }

    public int getBlue() {
        return color.getBlue();
    }

    public int getGreen() {
        return color.getGreen();
    }

    private double x;
    private double y;
    private Color color;
    private String literal;
    private double from_y;
    private double to_y;
    private Font font;
}
::::::::::::::
Master.java
::::::::::::::
/**
* $Id: Pursuit3.html,v 1.1 2009/06/22 16:11:53 kishi Exp kishi $
* @author KISHI Yasuhiro
*/

public class Master {

    public Master( Star star1, double d ) {
        star = star1;
        influence = d;
    }

    public double getX() {
        return star.getX();
    }

    public double getY() {
        return star.getY();
    }

    public int getStarColorRed() {
        return star.getRed();
    }

    public int getStarColorBlue() {
        return star.getBlue();
    }

    public int getStarColorGreen() {
        return star.getGreen();
    }

    public double getInfluence() {
        return influence;
    }

    private Star star;
    private double influence;
}
::::::::::::::
Planet.java
::::::::::::::
/**
* $Id: Pursuit3.html,v 1.1 2009/06/22 16:11:53 kishi Exp kishi $
* @author KISHI Yasuhiro
*/

import java.awt.Color;
import java.awt.Graphics;

public class Planet {

    public Planet( Star star1, AnotherStar anotherstar, double d, double d1, double d2, Color color1 ) {
        star = star1;
        anotherStar = anotherstar;
        x = d;
        y = d1;
        velocity = d2;
        color = color1;
    }

    public void moveNext() {
        double d = star.getX() - x;
        double d1 = star.getY() - y;
        double d2 = anotherStar.getX() - x;
        double d3 = anotherStar.getY() - y;
        double d4 = Math.atan2( d1, d );
        double d5 = Math.atan2( d3, d2 );
        x += velocity * Math.cos( d4 );
        y += velocity * Math.sin( d4 );
        x += 0.5D * velocity * Math.cos( 2D * d5 );
        y += 0.5D * velocity * Math.sin( 0.5D * d5 );
    }

    public void paint( Graphics g ) {
        g.setColor( color );
        g.fillOval( ( int ) x, ( int ) y, 5, 5 );
    }

    private Star star;
    private AnotherStar anotherStar;
    private double x;
    private double y;
    private double velocity;
    private Color color;
}
::::::::::::::
PlanetNova.java
::::::::::::::
/**
* $Id: Pursuit3.html,v 1.1 2009/06/22 16:11:53 kishi Exp kishi $
* @author KISHI Yasuhiro
*/

import java.awt.Color;
import java.awt.Graphics;
import java.util.Enumeration;
import java.util.Vector;

public class PlanetNova {

    public PlanetNova( double d, double d1, double d2, double d3 ) {
        masters = new Vector();
        bumbo = 0.0D;
        x = d;
        y = d1;
        velocity = d2;
        size = d3;
    }

    public void addMaster( Star star, double d ) {
        masters.addElement( new Master( star, d ) );
        bumbo += d;
    }

    public void moveNext() {
        double d = 0.0D;
        r = 0.0D;
        g = 0.0D;
        r = 0.0D;
        for ( Enumeration enumeration = masters.elements(); enumeration.hasMoreElements(); ) {
            Master master = ( Master ) enumeration.nextElement();
            double d1 = master.getX() - x;
            double d2 = master.getY() - y;
            double d3 = Math.atan2( d2, d1 );
            x += ( velocity * Math.cos( d3 ) * master.getInfluence() ) / bumbo;
            y += ( velocity * Math.sin( d3 ) * master.getInfluence() ) / bumbo;
            double d4 = d1 * d1 + d2 * d2;
            r += ( double ) master.getStarColorRed() * ( 1.0D / d4 );
            g += ( double ) master.getStarColorGreen() * ( 1.0D / d4 );
            b += ( double ) master.getStarColorBlue() * ( 1.0D / d4 );
            d += 1.0D / d4;
        }

        r /= d;
        g /= d;
        b /= d;
    }

    public void paint( Graphics g1 ) {
        g1.setColor( new Color( ( int ) r % 256, ( int ) g % 256, ( int ) b % 256 ) );
        g1.drawOval( ( int ) x, ( int ) y, ( int ) size, ( int ) size );
    }

    private Vector masters;
    private double size;
    private double x;
    private double y;
    private double velocity;
    private double r;
    private double g;
    private double b;
    private double bumbo;
}
::::::::::::::
Pursuit3.java
::::::::::::::
/**
* $Id: Pursuit3.html,v 1.1 2009/06/22 16:11:53 kishi Exp kishi $
* @author KISHI Yasuhiro
*/

import java.applet.Applet;
import java.awt.*;
import java.io.PrintStream;
import java.util.*;

public class Pursuit3 extends Applet
    implements Runnable {

    public Pursuit3() {
        counter = 0;
        sleepCounter = 0;
        anime = null;
        isActive = true;
        planet = new Planet[ 100 ];
        other_planet = new Planet[ 100 ];
        planetNova = new PlanetNova[ 500 ];
        literal = new Literal();
        myFont = new Font( "Dialog", 0, 16 );
        messages = new Vector();
        literals = new Vector();
    }

    public void init() {
        d = getSize();
        x_size = d.width;
        y_size = d.height;
        offs = createImage( x_size, y_size );
        grf = offs.getGraphics();
        star = new Star( 300D, 300D, 100D, 200D, 3.1415926535897931D, 0.098174770424681035D, Color.blue, 30D );
        other_star = new Star( 320D, 300D, 300D, 200D, 3.1415926535897931D, -0.19634954084936207D, Color.green, 50D );
        vertical_star = new Star( 50D, ( double ) y_size / 2D, 0.0D, ( double ) y_size / 2D, 3.1415926535897931D, -0.1308996938995747D, Color.pink, 40D );
        anotherStar = new AnotherStar( 500D, ( double ) y_size / 2D, 100D, ( double ) y_size / 3D, 1.5707963267948966D, -0.065449846949787352D, Color.gray, 20D );
        for ( int i = 0; i < planet.length; i++ )
            planet[ i ] = new Planet( star, anotherStar, 0.1F * ( float ) i, 0.0D, 0.3F * ( float ) ( i + 1 ), new Color( ( 256 - planet.length ) + i, ( 256 - planet.length ) + i, 255 ) );

        for ( int j = 0; j < other_planet.length; j++ )
            other_planet[ j ] = new Planet( other_star, anotherStar, ( double ) x_size / 2D, ( double ) y_size - ( double ) ( 5F * ( float ) j ), 9D * Math.sin( ( ( double ) ( j + 1 ) * 3.1415926535897931D ) / ( double ) ( other_planet.length + 1 ) ), new Color( ( 256 - planet.length ) + j, 255 - j, 64 ) );

        for ( int k = 0; k < planetNova.length; k++ ) {
            Random random = new Random( k * 29 );
            Random random1 = new Random( k * 31 );
            Random random2 = new Random( k * 37 );
            Random random3 = new Random( k * 41 );
            Random random4 = new Random( k * 43 );
            planetNova[ k ] = new PlanetNova( 5D * random.nextGaussian() + 100D, 5F * ( float ) k + 200F, 0.6F * ( float ) ( k + 1 ), 3D + 5D * random1.nextGaussian() );
            planetNova[ k ].addMaster( star, 1.0D + random2.nextGaussian() );
            planetNova[ k ].addMaster( other_star, 2D + random3.nextGaussian() );
            planetNova[ k ].addMaster( vertical_star, 3D + random4.nextGaussian() );
        }

        messages.addElement( "\u30FB\u30FB\u30FBSpiral forever\u30FB\u30FB\u30FB" );
        messages.addElement( "Nothing's gonna change my world\u266A" );
        messages.addElement( "I'm  only scrolling over and over again. " );
        messages.addElement( "" );
        messages.addElement( "" );
        messages.addElement( "" );
        double d1 = 200D;
        for ( Enumeration enumeration = messages.elements(); enumeration.hasMoreElements(); ) {
            Literal literal1 = new Literal();
            literal1.setXY( 300D, d1 );
            literal1.setVerticalRange( y_size, 0.0D );
            literal1.setFont( new Font( "Dialog", 0, 10 ) );
            literal1.setColor( Color.blue );
            literal1.setLiteral( ( String ) enumeration.nextElement() );
            literals.addElement( literal1 );
            d1 += 20D;
        }

    }

    public void start() {
        if ( anime == null ) {
            anime = new Thread( this );
            anime.start();
        }
    }

    public void paint( Graphics g ) {
        grf.setColor( Color.black );
        grf.fillRect( 0, 0, x_size, y_size );
        star.moveNext();
        vertical_star.moveNext();
        anotherStar.moveNext();
        if ( isActive ) {
            if ( counter < 80 ) {
                grf.setColor( Color.green );
            } else {
                grf.setColor( Color.yellow );
                other_star.setColor( Color.yellow );
            }
            grf.setFont( myFont );
            grf.drawString( "\u73FE\u5728\u6D3B\u52D5\u4E2D...", 0, 20 );
            other_star.moveNext();
            if ( counter++ > 100 ) {
                isActive = false;
                sleepCounter = 0;
                other_star.setColor( Color.red );
            }
        } else {
            grf.setColor( Color.red );
            grf.setFont( myFont );
            grf.drawString( "\u73FE\u5728\u4F11\u6B62\u4E2D...", 0, 20 );
            if ( sleepCounter++ > 100 ) {
                isActive = true;
                counter = 0;
                other_star.setColor( Color.green );
            }
        }
        for ( int i = 0; i < planet.length; i++ )
            planet[ i ].moveNext();

        for ( int j = 0; j < other_planet.length; j++ )
            other_planet[ j ].moveNext();

        for ( int k = 0; k < planetNova.length; k++ )
            planetNova[ k ].moveNext();

        Literal literal1;
        for ( Enumeration enumeration = literals.elements(); enumeration.hasMoreElements(); literal1.moveNext() )
            literal1 = ( Literal ) enumeration.nextElement();

        star.paint( grf );
        other_star.paint( grf );
        vertical_star.paint( grf );
        anotherStar.paint( grf );
        for ( int l = 0; l < planet.length; l++ )
            planet[ l ].paint( grf );

        for ( int i1 = 0; i1 < other_planet.length; i1++ )
            other_planet[ i1 ].paint( grf );

        for ( int j1 = 0; j1 < planetNova.length; j1++ )
            planetNova[ j1 ].paint( grf );

        Literal literal2;
        for ( Enumeration enumeration1 = literals.elements(); enumeration1.hasMoreElements(); literal2.paint( grf ) )
            literal2 = ( Literal ) enumeration1.nextElement();

        g.drawImage( offs, 0, 0, x_size, y_size, this );
    }

    public void update( Graphics g ) {
        paint( g );
    }

    public void run() {
        while ( anime != null ) {
            repaint();
            try {
                Thread.sleep( 1L );
            } catch ( InterruptedException interruptedexception ) {
                System.out.println( "Error: " + interruptedexception );
            }
        }
    }

    private Dimension d;
    private Image offs;
    private Graphics grf;
    private int counter;
    private int sleepCounter;
    private Thread anime;
    private int x_size;
    private int y_size;
    private boolean isActive;
    private Star star;
    private Star other_star;
    private Star vertical_star;
    private AnotherStar anotherStar;
    private Planet planet[];
    private Planet other_planet[];
    private PlanetNova planetNova[];
    private Literal literal;
    private Font myFont;
    private Vector messages;
    private Vector literals;
}
::::::::::::::
Star.java
::::::::::::::
/**
* $Id: Pursuit3.html,v 1.1 2009/06/22 16:11:53 kishi Exp kishi $
* @author KISHI Yasuhiro
*/

import java.awt.Color;
import java.awt.Graphics;

public class Star {

    public Star( double d, double d1, double d2, double d3, double d4, double d5, Color color1, double d6 ) {
        cx = d;
        cy = d1;
        rx = d2;
        ry = d3;
        theta = d4;
        pitch = d5;
        color = color1;
        size = d6;
    }

    public void moveNext() {
        theta += pitch;
        x = cx + rx * Math.cos( theta );
        y = cy + ry * Math.sin( theta );
    }

    public void setColor( Color color1 ) {
        color = color1;
    }

    public void paint( Graphics g ) {
        g.setColor( color );
        g.fillOval( ( int ) x, ( int ) y, ( int ) size, ( int ) size );
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public int getRed() {
        return color.getRed();
    }

    public int getBlue() {
        return color.getBlue();
    }

    public int getGreen() {
        return color.getGreen();
    }

    private double x;
    private double y;
    private double cx;
    private double cy;
    private double rx;
    private double ry;
    private double size;
    private double theta;
    private double pitch;
    private Color color;
}
```