//
/* ----------------------------------------------------------------------------------------------
seven_seg_led.java 7セグメント LED ver. 1.00 (JDK 1.02)
ueyama@infonet.co.jp 2000.04.07
---------------------------------------------------------------------------------------------- */
import java.applet.*;
import java.awt.*;
import java.util.*;
public class seven_seg_led extends Applet implements Runnable
{
// Segment a b c d e f g
boolean L[][]={{true, true, true, true, true, true, false}, // 0
{false,true, true, false,false,false,false}, // 1
{true, true, false,true, true, false,true }, // 2
{true, true, true, true, false,false,true }, // 3
{false,true, true, false,false,true, true }, // 4
{true, false,true, true, false,true, true }, // 5
{true, false,true, true, true, true, true }, // 6
{true, true, true, false,false,false,false}, // 7
{true, true, true, true, true, true, true }, // 8
{true, true, true, true, false,true, true }}; // 9
int X[]={30,59,52,16,10,18,25};
int Y[]={10,16,60,95,60,16,53};
int N;
int T=0;
int Bgc;
Image Img;
Graphics gr;
Random Rnd=new Random();
Thread th=null;
public void start()
{
if(th==null)
{
th=new Thread(this);
th.start();
}
}
public void update(Graphics g)
{
paint(g);
}
public void init()
{
String bg=getParameter("BgColor");
Bgc=Integer.valueOf(bg,16).intValue();
setBackground(new Color(Bgc));
MediaTracker mt=new MediaTracker(this);
Img=getImage(getCodeBase(), getParameter("figure"));
mt.addImage(Img, 0);
try
{
mt.waitForID(0);
}
catch(InterruptedException e){};
gr=getGraphics();
N=Math.abs(Rnd.nextInt())%10;
}
public boolean inside(int x, int a, int b)
{
return (x<=Math.max(a,b) && x>=Math.min(a,b)) ? true:false;
}
public void dsp_g(int x, int y, int n, int c) // LED、数字の表示
{
Graphics gx=gr.create();
int w=0, h=0, ox=0, oy=0;
switch(n)
{
case 0: w=41; h=11; ox= 0; oy= 0; break; // segment a
case 1: w=16; h=40; ox=48; oy=33; break; // segment b
case 2: w=15; h=41; ox=33; oy=33; break; // segment c
case 3: w=41; h=11; ox= 0; oy=22; break; // segment d
case 4: w=17; h=41; ox=16; oy=33; break; // segment e
case 5: w=16; h=40; ox= 0; oy=33; break; // segment f
case 6: w=36; h=11; ox= 0; oy=11; break; // segment g
case 7: w= 5; h= 7; ox= 0; oy=74; break; // 数字 (明)
case 8: w= 5; h= 7; ox= 0; oy=81; break; // 数字 (暗)
}
gx.clipRect(x,y,w,h);
gx.drawImage(Img,x-(ox+w*c),y-oy,this);
gx.dispose();
}
public void paint(Graphics g)
{
int i,j;
g.clearRect(0,0,size().width,size().height);
g.setColor(new Color(0,0,0));
g.fillRect(0,0,85,116);
for(i=0;i<7;i++) if(L[N][i]) dsp_g(X[i],Y[i],i,0);
for(i=0;i<10;i++) dsp_g(i*8+3,120,(i==N)?8:7,i);
}
public void run()
{
while(true)
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e){}
T++;
if(T%25==0)
{
N=Math.abs(Rnd.nextInt())%10;
repaint();
}
}
}
public boolean mouseDown(Event e, int x, int y)
{
if(y>116 && inside(x,2,81))
{
N=(x-2)/8; T=0; repaint();
}
return true;
}
public void stop()
{
if(th!=null)
{
th.stop();
th=null;
}
}
}
//戻る