carfield.com.hk MouseTrapTest.java 2001-12-26T16:00:00Z 2001-12-26T16:00:00Z <br/><TEXTAREA name="code" class="java" rows="16" cols="100">//: c04:mousetrap1:MouseTrapTest.java // State Machine pattern using 'if' statements // to determine the next state. package c04.mousetrap1; import c04.mouse.*; import c04.statemachine.*; import com.bruceeckel.util.*; import java.util.*; import java.io.*; import com.bruceeckel.test.*; // A different subclass for each state: class Waiting implements State { public void run() { System.out.println( &quot;Waiting: Broadcasting cheese smell&quot;); } public State next(Input i) { MouseAction ma = (MouseAction)i; if(ma.equals(MouseAction.appears)) return MouseTrap.luring; return MouseTrap.waiting; } } class Luring implements State { public void run() { System.out.println( &quot;Luring: Presenting Cheese, door open&quot;); } public State next(Input i) { MouseAction ma = (MouseAction)i; if(ma.equals(MouseAction.runsAway)) return MouseTrap.waiting; if(ma.equals(MouseAction.enters)) return MouseTrap.trapping; return MouseTrap.luring; } } class Trapping implements State { public void run() { System.out.println(&quot;Trapping: Closing door&quot;); } public State next(Input i) { MouseAction ma = (MouseAction)i; if(ma.equals(MouseAction.escapes)) return MouseTrap.waiting; if(ma.equals(MouseAction.trapped)) return MouseTrap.holding; return MouseTrap.trapping; } } class Holding implements State { public void run() { System.out.println(&quot;Holding: Mouse caught&quot;); } public State next(Input i) { MouseAction ma = (MouseAction)i; if(ma.equals(MouseAction.removed)) return MouseTrap.waiting; return MouseTrap.holding; } } class MouseTrap extends StateMachine { public static State waiting = new Waiting(), luring = new Luring(), trapping = new Trapping(), holding = new Holding(); public MouseTrap() { super(waiting); // Initial state } } public class MouseTrapTest extends UnitTest { MouseTrap trap = new MouseTrap(); MouseMoveList moves = new MouseMoveList( new StringList(&quot;../mouse/MouseMoves.txt&quot;) .iterator()); public void test() { trap.runAll(moves.iterator()); } public static void main(String args[]) { new MouseTrapTest().test(); } } ///:~ </TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2001-12-26T16:00:00Z makefile 2001-12-26T16:00:00Z 2001-12-26T16:00:00Z <br/><TEXTAREA name="code" class="" rows="16" cols="100"># From Thinking in Patterns (with Java) by Bruce Eckel # At http://www.BruceEckel.com # (c)2001 Bruce Eckel # Copyright notice in Copyright.txt # Automatically-generated MAKEFILE # For examples in directory .\c04\mousetrap1 # using the JDK 1.3 compiler # Invoke with: make HOME := ../../ ifndef MAKECMDGOALS MAKECMDGOALS := javac endif # Command.com is too weak to build this under Windows NT/2000: ifeq ($(OS),Windows_NT) COMSPEC=$(SYSTEMROOT)\system32\cmd.exe endif ifneq ($(MAKECMDGOALS),clean) include $(HOME)/$(MAKECMDGOALS).mac endif .SUFFIXES : .class .java .java.class : $(JVC) $(JVCFLAGS) $&lt; javac: \ MouseTrapTest.class jikes: \ MouseTrapTest.class clean: ifeq ($(notdir $(SHELL)),COMMAND.COM) del *.class else rm -f *.class endif MouseTrapTest.class: MouseTrapTest.java $(JVC) $(JVCFLAGS) $&lt; java com.bruceeckel.test.RunUnitTests c04.mousetrap1.MouseTrapTest </TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2001-12-26T16:00:00Z