//HakkeOpen1.java import java.applet.*; import java.awt.*; import java.awt.event.*; public class HakkeOpen1 extends Applet implements Runnable { int i; //文字色指定用変数 int flag; //描画モード指定用変数 String mesg[]; //表示文字列用配列 Color col[]; //描画色用配列 Thread th; //スレッド public void init() //初期設定 { setBackground(Color.black);//背景を黒に i=0; //初期化 col=new Color[5]; //描画色用配列サイズ指定 col[0]=Color.red; //以下配列内容指定 col[1]=Color.green; col[2]=Color.yellow; col[3]=Color.cyan; col[4]=Color.orange; mesg=new String[3]; //文字列用配列サイズ mesg[0]="当たるも"; //以下配列内容 mesg[1]="当たらぬも"; mesg[2]="はっけ"; } public void start() //スレッド開始のメソッド { th=new Thread(this); th.start(); } public void stop() //スレッド処理停止のメソッド { th=null; } public void run() //再描画に関する設定や時間管理の設定 { for(;;) //アプレット終了まで以下の処理を繰り返す { flag=1; //描画モードを1に設定 //paint(Graphics g)メソッドで利用 i=i+1; //表示色指定変数の値を1増やす if(i>4) //4を越えたら0に戻す(配列サイズは4なので) i=0; repaint(); //設定した内容で再描画 try { th.sleep(1000); //1000ミリ秒(1秒)停止 } catch(InterruptedException e){} flag=2; //描画モードを2に設定 repaint();//モード2で再描画 try { th.sleep(1000); //1000ミリ秒停止 } catch(InterruptedException e){} } } public void paint(Graphics g) //描画メソッド { int mn; //表示文字列の配列番号用変数 int px, py, mx, my; //描画位置指定用変数 if(flag==1) //描画モードが1ならこの部分を実行 { g.setColor(col[i]); //配列番号iの色を描画色に指定 g.setFont(new Font("Dialog", Font.BOLD, 16)); px=(int)(Math.random()*340+10);//文字列のx座標 py=(int)(Math.random()*270+20); //文字列のx座標 mn=(int)(Math.random()*3); //表示文字列配列番号 g.drawString(mesg[mn],px,py); //配列番号mnの文字列を //座標(px,py)に表示 } else if(flag==2) //描画モードが2ならば、この部分を実行 { int mci=i-1; //描画色配列用変数(モード1と2で色を分けるため) if(mci<0) { mci=4; } g.setColor(col[mci]); //描画色を配列番号mciの色に指定 g.setFont(new Font("Dialog", Font.BOLD, 24)); //次の部分で、乱数により文字列表示位置(x,y座標)を取得 mx=(int)(Math.random()*320+10); my=(int)(Math.random()*250+40); g.drawString("八 卦 堂",mx,my); //色col[mci]で、位置(mx,my)に描画 } } } //////////////////// 以上 /////////////////////////