アステロイド
/*
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;
}
}
}