//
/* ----------------------------------------------------------------------------------------------
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;
}
}
//戻る