// $Id: Carpenter.java,v 2.3 2003-05-07 19:17:45+09 kaiya Exp $ import java.util.*; /** 大工を表すクラス */ class Carpenter extends Thread{ private WorkPlace wp; private Chisel[] cls; private Hammer[] hrs; private Random r=new Random(); /** 削った(たたいた)回数 */ private int done=0; /** もってるノミのid */ private int hasChisel=(-1); /** もってるハンマーのid */ private int hasHammer=(-1); /** @param wp 表示部分 @param cls ノミ群 @param hrs ハンマー群 */ Carpenter(WorkPlace wp, Chisel[] cls, Hammer[] hrs){ this.wp=wp; this.cls=cls; this.hrs=hrs; } public void run(){ while(true){ try{ sleep(r.nextInt(1000)); }catch(Exception e){} // ノミとハンマーを両方もてたら,叩いて,ノミ,ハンマーを離す if(chisel() && hammer()){ done++; cls[hasChisel].release(); hrs[hasHammer].release(); hasChisel=hasHammer=(-1); wp.repaint(); continue; } // もし,ハンマーをもってなかったら,ハンマーをとる. if(!hammer()){ int i; for(i=0; i=0; } boolean hammer(){ return hasHammer>=0; } }