//
/* ---------------------------------------------------------------------------------------------- lamp.java 2進数 ver. 2.00 (JDK 1.02) ueyama@infonet.co.jp 1999.08.30 update: 2008.03.21 ---------------------------------------------------------------------------------------------- */ import java.applet.Applet; import java.awt.*; public class lamp extends Applet { int Dec=13; // 10進数値 Image Img; Graphics gr; public void init() { String bg=getParameter("bgcolor"); // 背景色の読み込み int bgc=Integer.valueOf(bg,16).intValue(); setBackground(new Color(bgc)); MediaTracker mt=new MediaTracker(this); // GIF ファイルの読み込み Img=getImage(getCodeBase(), getParameter("figure")); mt.addImage(Img, 0); try { mt.waitForID(0); } catch(InterruptedException e){}; gr=getGraphics(); } 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_p(int x, int y, int m, int n, int c) { Graphics gx=gr.create(); int w=0, h=0, ox=0, oy=0; switch(c) { case 0: w=35; h=61; ox= 0; oy= 0; break; // 電球 case 1: w=17; h=24; ox= 70; oy= 0; break; // 10進数 case 2: w=23; h=27; ox=115; oy=24; break; // 2進数 case 3: w=45; h=11; ox= 70; oy=24; break; // (2進数) } gx.clipRect(x,y,w,h); gx.clearRect(x,y,w,h); gx.drawImage(Img,x-(ox+m*w),y-(oy+n*h),this); gx.dispose(); } public void dsp_s() // 電球、数値の表示 { int i,j,m; for(j=8, i=0; i<4; i++,j/=2) { m=((Dec & j)==0)?0:1; dsp_p(60*i,0,m,0,0); // 電球の表示 dsp_p(283+24*i,18,m,0,2); // 2進数の表示 } dsp_p(240,18,2,0,2); // = の表示 dsp_p(390,19,10,0,1); // = の表示 m=Dec/10; dsp_p(420,19,(m>0)? m:11,0,1); // 10進数の表示 m=Dec%10; dsp_p(440,19,m,0,1); // 10進数の表示 dsp_p(306,50,0,0,3); // "(2進数)" の表示 dsp_p(418,50,0,1,3); // "(10進数)" の表示 } public void paint(Graphics g) { dsp_s(); } public boolean mouseDown(Event e, int x, int y) { int m,n,i,j=1; if((x<215 && x%60<35) || (inside(x,283,374) && inside(y,18,45) && (x-283)%24<19)) { n=(x<215)? 0:4; m=(x<215)? 3-x/60: 3-(x-283)/24; for(i=0; i< m; i++) j*=2; if((Dec & j) ==0) Dec+=j; else Dec-=j; dsp_s(); } return true; } } //戻る