//
/* ---------------------------------------------------------------------------------------------- and_or.java AND & OR ver. 1.10 (JDK 1.02) ueyama@infonet.co.jp 2005.01.16 ---------------------------------------------------------------------------------------------- */ import java.applet.Applet; import java.awt.*; public class and_or extends Applet { int Aa=0, Ab=0, Ax=0; // AND 回路スイッチ A, B, 出力 X int Oa=0, Ob=0, Ox=0; // OR 回路スイッチ A, B, 出力 X Image Img; public void init() { String bg=getParameter("bgcolor"); int 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){}; } 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) { int w=0, h=0, ox=0, oy=0; switch(c) { case 0: w= 32; h=17; ox=540; oy= 0; break; // スイッチ case 1: w= 21; h=21; ox=540; oy= 34; break; // 電球 } Graphics gx=getGraphics(); gx.clipRect(x,y,w,h); gx.clearRect(x,y,w,h); gx.drawImage(Img,x-ox,y-(oy+n*h),this); gx.dispose(); } public void dsp_p() { dsp_g( 52, 21, Aa, 0); // AND 回路スイッチ A の表示 dsp_g(118, 21, Ab, 0); // AND 回路スイッチ B の表示 dsp_g(388, 17, Oa, 0); // OR 回路スイッチ A の表示 dsp_g(388, 45, Ob, 0); // OR 回路スイッチ B の表示 dsp_g(197, 65, Ax, 1); // AND 回路電球 の表示 dsp_g(496, 70, Ox, 1); // OR 回路電球 の表示 } public void paint(Graphics g) { g.clearRect(0, 0, size().width, size().height); g.drawImage(Img, 0, 0, this); dsp_p(); } public boolean mouseDown(Event e, int x, int y) { if(inside(y, 19, 42)) // AND 回路 { if(inside(x, 48, 88)) Aa=(Aa==0)?1:0; // スイッチ A をクリック if(inside(x,114,154)) Ab=(Ab==0)?1:0; // スイッチ B をクリック } if(inside(x,384,424)) // OR 回路 { if(inside(y, 15, 38)) Oa=(Oa==0)?1:0; // スイッチ A をクリック if(inside(y, 43, 66)) Ob=(Ob==0)?1:0; // スイッチ B をクリック } Ax=(Aa+Ab==2)?1:0; // AND 回路の出力 Ox=(Oa+Ob>0)?1:0; // OR 回路の出力 dsp_p(); return true; } } //戻る