import java.applet.*;
import java.awt.*;
public class ja208b extends Applet implements Runnable
{
Thread td = null; //スレッド
ja208XY XY[]; //オブジェクト(クラスのインスタンス)の配列
boolean frg = true;
public void init(){
setBackground(Color.black); //Appletの背景色を黒色に設定
getXY(); //メソッド呼び出し
}
void getXY(){ //四辺に描く円のxy座標を取得する
//AppletのサイズはHTMLで<400*100>に設定
//上辺には直径16ピクセルの円を,4ピクセル間隔を空け20個描く(下辺も同じ)
//右辺に直径16ピクセルの円を,4ピクセル間隔を空け5個描く(左辺も同じ)
XY = new ja208XY[46]; //46個のオブジェクト配列を作成
int x,y;
int n = 0; //配列のindex番号
//上辺の円
y = 2; //上辺のy座標は固定
for(x = 2;x <= 382;x += 20){
XY[n++] = new ja208XY(x,y);
}
//右辺の円
x = 382; //右辺のx座標は固定
for(y = 22;y <= 62;y += 20){
//最上部と最下部の円は,上辺,下辺の円と重複するので除く
XY[n++] = new ja208XY(x,y);
}
//下辺の円
y = 82;
for(x = 382;x >= 2;x -= 20){
XY[n++] = new ja208XY(x,y);
}
//左辺の円
x = 2;
for(y = 62;y >= 22;y -= 20){
XY[n++] = new ja208XY(x,y);
}
}
public void update(Graphics g){
int n = 0;
if(frg){ //boolean変数frgがtrueの時
for(int i = 0;i < 46;i += 2){ //偶数Index番号の配列だけ黄色で描画
g.setColor(Color.yellow);
g.fillOval(XY[i].x,XY[i].y,16,16);
}
for(int i = 1;i < 46;i += 2){ //奇数Index番号の配列だけ赤色で描画
g.setColor(Color.red);
g.fillOval(XY[i].x,XY[i].y,16,16);
}
}else{ //boolean変数frgがfalseの時
for(int i = 0;i < 46;i += 2){ //偶数Index番号の配列だけ赤色で描画
g.setColor(Color.red);
g.fillOval(XY[i].x,XY[i].y,16,16);
}
for(int i = 1;i < 46;i += 2){ //奇数Index番号の配列だけ黄色で描画
g.setColor(Color.yellow);
g.fillOval(XY[i].x,XY[i].y,16,16);
}
}
g.setFont(new Font("TimesRoman",Font.BOLD,35));
g.setColor(Color.pink);
g.drawString("Kodayan HomePage",45,60);
paint(g);
}
public void start(){
if(td == null){
td = new Thread(this);
td.start();
}
}
public void run(){
while(true){
try{
repaint();
frg = !frg; //boolean型変数frgの値を反転する
Thread.sleep(300); //0.3秒だけスレッドを停止する。
}catch (InterruptedException e){
stop(); //スレッドの実行を中止
}
}
}
public void stop(){
if (td != null){
td.stop();
td = null;
}
}
}
class ja208XY //x,yの値を保持するクラス
{
public int x;
public int y;
public ja208XY(int x,int y){
this.x = x;
this.y = y;
}
}
末尾