アステロイド

/*
    A basic extension of the java.applet.Applet class
*/

import java.awt.*;
import java.applet.*;

public class Applet1 extends Applet implements Runnable
{
Thread th;
int x,y,ang=0;
double a=150;
double rad=(Math.PI)/180;
boolean Flag=true;

    public void init()
    {
        // Take out this line if you don't use symantec.itools.net.RelativeURL or                                                     symantec.itools.awt.util.StatusScroller
        symantec.itools.lang.Context.setApplet(this);
   
        // This code is automatically generated by Visual Cafe when you add
        // components to the visual environment. It instantiates and initializes
        // the components. To modify the code, only use code syntax that matches
        // what Visual Cafe can generate, or Visual Cafe may be unable to back
        // parse your Java file into its visual environment.
        //{{INIT_CONTROLS
        setLayout(null);
        setSize(631,371);
        add(label1);
        label1.setBounds(516,96,67,25);
        label2.setText("angle");
        add(label2);
        label2.setBounds(468,96,48,24);
        //}}
   
        //{{REGISTER_LISTENERS
        SymMouse aSymMouse = new SymMouse();
        this.addMouseListener(aSymMouse);
        //}}
    }
   
    //{{DECLARE_CONTROLS
    java.awt.Label label1 = new java.awt.Label();
    java.awt.Label label2 = new java.awt.Label();
    //}}
    public void start()
    {
    if(th==null)
    {
    th=new Thread(this);
    th.start();
    }
    }
   
    public void run()
    {
    while(true)
    {
    ang=ang+1;
    if (ang>361)
    {
    ang=0;
    }
   
   
   
    repaint();
    try
    {
    th.sleep(20);
    }
    catch(InterruptedException e)
    {
    }
    }
    }
   
    public void update(Graphics g)
    {
    paint(g);
    }
   
    public void paint(Graphics g)
{



for (double angle=0;angle<361;angle=angle+1) //角度を1度ごとに360度まで変化させる
{

g.setColor(Color.blue);

x=(int)(a*Math.cos(rad*angle)*Math.cos(rad*angle)*Math.cos(rad*angle)); //x座標の定義。
y=(int)(a*Math.sin(rad*angle)*Math.sin(rad*angle)*Math.sin(rad*angle)); //y座標の定義。
g.drawLine(x+300, -y+200, x+300, -y+200);




}
label1.setText(""+ang);
g.setColor(Color.white); //曲線上を移動する白色の点を表示。


x=(int)(a*Math.cos(rad*ang)*Math.cos(rad*ang)*Math.cos(rad*ang));
y=(int)(a*Math.sin(rad*ang)*Math.sin(rad*ang)*Math.sin(rad*ang));
g.drawLine(x+300, -y+200, x+300, -y+200);

//g.setColor(Color.black);
//g.drawLine(10,200,600,200);
//g.drawLine(300,10,300,400);




}



public void stop()
{
if(th !=null)
{
th.stop();
th=null;
}
}

    class SymMouse extends java.awt.event.MouseAdapter
    {
        public void mouseClicked(java.awt.event.MouseEvent event)
        {
            Object object = event.getSource();
            if (object == Applet1.this)
                Applet1_MouseClicked(event);
        }
    }

    void Applet1_MouseClicked(java.awt.event.MouseEvent event) //マウスクリックでスレッドを一時停止する。
    {                                                                                    //再度クリックすれば再開する。
        // to do: code goes here.
       
        if (Flag==false)
        {
       
        th.resume();
        Flag=true;
        }
        else if (Flag==true)
        {
        th.suspend();
        Flag=false;   
        }   
    }
}


BACK >>