<?xml version="1.0"?>
<!DOCTYPE activity SYSTEM "escot.dtd" >
<activity name="Pirates and Diamonds" size="600,375" puzzle_id="3">
  <page name="Part 3">
    <component class="SketchpadBean2" position="374,63" size="161,141" portid="SketchpadBean2-1">
{1} Point(119,385)[hidden];
{2} Point(119,357)[hidden];
{3} Point(138,386)[hidden];
{4} Point(138,325)[hidden];
{5} Point(170,388)[hidden];
{6} Point(170,352)[hidden];
{7} Point(201,388)[hidden];
{8} Point(201,292)[hidden];
{9} Point(22,131)[hidden];
{10} Point(98,131)[hidden];
{11} Segment(2,1)[hidden,black];
{12} Segment(4,3)[hidden,black];
{13} Segment(6,5)[hidden,black];
{14} Segment(8,7)[hidden,black];
{15} Segment(10,9)[hidden,black];
{16} Parameter(0,235,306,'contentsa')[hidden,black];
{17} Midpoint(15)[hidden];
{18} Parameter(60,235,319,'sizea')[hidden,black];
{19} Parameter(0,235,332,'contentsb')[hidden,black];
{20} Parameter(100,235,346,'sizeb')[hidden,black];
{21} Circle(10,17)[hidden,black];
{22} Segment(17,9)[black];
{23} Translation/FixedAngle/MarkedDistance(9,16,1.57)[hidden];
{24} Translation/FixedAngle/MarkedDistance(9,18,1.57)[hidden];
{25} Translation/FixedAngle/MarkedDistance(10,19,1.57)[hidden];
{26} Translation/FixedAngle/MarkedDistance(10,20,1.57)[hidden];
{27} Point on object(21,0.00000000)[hidden];
{28} Parallel(22,23)[hidden,black];
{29} Perpendicular(22,9)[hidden,black];
{30} Perpendicular(22,17)[hidden,black];
{31} Segment(23,9)[black];
{32} Parallel(22,24)[hidden,black];
{33} Segment(24,9)[black];
{34} Segment(25,10)[black];
{35} Segment(26,10)[black];
{36} Segment(27,10)[black];
{37} Intersect(30,28)[hidden];
{38} Intersect(32,30)[hidden];
{39} Segment(37,23)[black];
{40} Segment(17,37)[black];
{41} Segment(38,24)[black];
{42} Segment(17,38)[black];
{43} Polygon(17,38,24,9)[black];
{44} Polygon(17,37,23,9)[yellow];
{45} Perpendicular(36,10)[hidden,black];
{46} Perpendicular(36,27)[hidden,black];
{47} Parallel(36,25)[hidden,black];
{48} Parallel(36,26)[hidden,black];
{49} Intersect(47,46)[hidden];
{50} Intersect(46,48)[hidden];
{51} Segment(49,25)[black];
{52} Segment(27,49)[black];
{53} Segment(50,26)[black];
{54} Segment(27,50)[black];
{55} Polygon(27,50,26,10)[black];
{56} Polygon(27,49,25,10)[yellow];
 <property name="SketchBackColor" value="128,128,128"/>
    </component>
    <component class="com.sri.escot.javascript.JavaScript" position="1000,1000" size="73,23" portid="JavaScript-1">
      <![CDATA[
contentsa = new EscotNumber("contentsa", 0)
sizea = new EscotNumber("sizea", 60)
contentsb= new EscotNumber("contentsb", 0)
sizeb = new EscotNumber("sizeb", 100)
waste = new EscotNumber("waste", 0)
steps = new EscotNumber("steps", 0)
displaysizea = new EscotNumber("displaysizea", 6)
displaysizeb = new EscotNumber("displaysizeb", 10)
displaycontentsa = new EscotNumber("displaycontentsa", 0)
displaycontentsb = new EscotNumber("displaycontentsb", 0)

fillA = new EscotAction("Fill A")
emptyA = new EscotAction("Empty A")
fillB = new EscotAction("Fill B")
emptyB = new EscotAction("Empty B")
pourAtoB = new EscotAction("Pour A to B")
pourBtoA = new EscotAction("Pour B to A")
reset = new EscotAction("Reset")
six_Ten = new EscotAction("Six, Ten")
four_Three = new EscotAction("Four, Three")
three_Seven = new EscotAction("Three, Seven")
ten_Twelve = new EscotAction("Ten, Twelve")
six_Eleven = new EscotAction("Six, Eleven")

addExport(contentsa)
addExport(sizea)
addExport(contentsb)
addExport(sizeb)
addExport(waste)
addExport(steps)
addExport(displaysizea)
addExport(displaysizeb)
addExport(displaycontentsa)
addExport(displaycontentsb)

addExport(fillA)
addExport(emptyA)
addExport(fillB)
addExport(emptyB)
addExport(pourAtoB)
addExport(pourBtoA)
addExport(reset)
addExport(six_Ten)
addExport(four_Three)
addExport(three_Seven)
addExport(ten_Twelve)
addExport(six_Eleven)

function performed(action) {
	if (action.name == fillA.name) {
		contentsa.value = sizea.value
		steps.value++
	}
	else if (action.name == emptyA.name) {
		waste.value = waste.value + displaycontentsa.value
		contentsa.value = 0
		displaycontentsa.value = 0
		steps.value++
	}
	else if (action.name == fillB.name) {
		contentsb.value = sizeb.value
		steps.value++
	}
	else if (action.name == emptyB.name) {
		waste.value = waste.value + displaycontentsb.value
		contentsb.value = 0
		steps.value++		
	}
	else if (action.name == pourAtoB.name) {
		var total = contentsa.value + contentsb.value
		if (total > sizeb.value) {
			contentsa.value = total - sizeb.value
			contentsb.value = sizeb.value
		} else {
			contentsa.value = 0
			contentsb.value = total
		}
		steps.value++		
	}
	else if (action.name == pourBtoA.name) {
		var total = contentsa.value + contentsb.value
		if (total > sizea.value) {
			contentsb.value = total - sizea.value
			contentsa.value = sizea.value
		} else {
			contentsb.value = 0
			contentsa.value = total
		}
		steps.value++		
	}
	else {
		// do a reset
		contentsa.value = 0
		contentsb.value = 0
		waste.value = 0
		steps.value = 0
		if (action.name == six_Ten.name) {
			displaysizea.value = 6
			displaysizeb.value = 10
		}
		else if (action.name == four_Three.name) {
			displaysizea.value = 4
			displaysizeb.value = 3
		}
		else if (action.name == three_Seven.name) {
			displaysizea.value = 3
			displaysizeb.value = 7
		}
		else if (action.name == ten_Twelve.name) {
			displaysizea.value = 10
			displaysizeb.value = 12
		}
		else if (action.name == six_Eleven.name) {
			displaysizea.value = 6
			displaysizeb.value = 11
		}
		sizea.value = displaysizea.value * 10
		sizeb.value = displaysizeb.value * 10
	}
	displaycontentsa.value = contentsa.value * .1
	displaycontentsb.value = contentsb.value * .1
}
]]>
    </component>
    <component class="org.escot.demo.ButtonPanel" position="371,240" size="167,30" portid="ButtonPanel-2">
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="org.escot.demo.ButtonPanel" position="363,276" size="184,32" portid="ButtonPanel-1">
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="org.escot.demo.ButtonPanel" position="341,310" size="225,31" portid="ButtonPanel-3">
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="265,352" size="129,17" portid="NumberEntry-5">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Amount emptied"/>
      <property name="value" value="0.0"/>
      <property name="exporting" value="false"/>
      <property name="name" value="number"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="399,352" size="111,17" portid="NumberEntry-6">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Steps taken"/>
      <property name="value" value="0.0"/>
      <property name="exporting" value="false"/>
      <property name="name" value="number"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="org.escot.demo.ButtonPanel" position="517,345" size="86,29" portid="ButtonPanel-4">
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.ActionMenu" position="366,5" size="177,23" portid="ActionMenu-1">
      <property name="label" value="Choose container sizes..."/>
      <property name="font" value="SansSerif,SansSerif,1,10"/>
    </component>
    <component class="org.escot.demo.TextEditor" answerText="true" position="5,219" size="328,127" portid="TextEditor-1">
      <![CDATA[]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="372,37" size="77,17" portid="NumberEntry-1">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="size"/>
      <property name="value" value="6.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value="lbs."/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="462,37" size="82,17" portid="NumberEntry-7">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="size"/>
      <property name="value" value="10.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value="lbs."/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="348,213" size="105,17" portid="NumberEntry-8">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="contents"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value="lbs."/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="463,213" size="102,17" portid="NumberEntry-9">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="contents"/>
      <property name="value" value="0.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value="lbs."/>
      <property name="editable" value="false"/>
    </component>
    <component class="org.escot.demo.HTMLViewer" position="5,28" size="328,156" portid="HTMLViewer-1">
      <![CDATA[<html>
  <head>
  </head>
  <body>
      You now have a choice of five pairs of containers to use for measuring. For each pair of 
      containers, can you make the purchase of 8 lbs. of diamonds? For those pairs that work, 
      how can you make the purchase? 
  </body>
</html>
]]>
    </component>
    <component class="com.sri.escot.EscotLabel" position="5,5" size="106,16" portid="StringView-1">
      <property name="text" value="Problem"/>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.EscotLabel" position="7,196" size="112,16" portid="StringView-2">
      <property name="text" value="Solution"/>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="displaysizea"/>
      <to portid="NumberEntry-1" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="displaysizeb"/>
      <to portid="NumberEntry-7" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="displaycontentsa"/>
      <to portid="NumberEntry-8" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="displaycontentsb"/>
      <to portid="NumberEntry-9" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Fill A"/>
      <to portid="ButtonPanel-2" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Fill B"/>
      <to portid="ButtonPanel-2" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Empty A"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Empty B"/>
      <to portid="ButtonPanel-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Pour A to B"/>
      <to portid="ButtonPanel-3" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Pour B to A"/>
      <to portid="ButtonPanel-3" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="waste"/>
      <to portid="NumberEntry-5" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="steps"/>
      <to portid="NumberEntry-6" name="number"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="sizea"/>
      <to portid="JavaScript-1" name="sizea"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="contentsb"/>
      <to portid="SketchpadBean2-1" name="contentsb"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="contentsa"/>
      <to portid="SketchpadBean2-1" name="contentsa"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SketchpadBean2-1" name="sizeb"/>
      <to portid="JavaScript-1" name="sizeb"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Six, Ten"/>
      <to portid="ActionMenu-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Four, Three"/>
      <to portid="ActionMenu-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Three, Seven"/>
      <to portid="ActionMenu-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Ten, Twelve"/>
      <to portid="ActionMenu-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Six, Eleven"/>
      <to portid="ActionMenu-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="Reset"/>
      <to portid="ButtonPanel-4" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="sizea"/>
      <to portid="SketchpadBean2-1" name="sizea"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="sizeb"/>
      <to portid="SketchpadBean2-1" name="sizeb"/>
    </wire>
  </page>
</activity>

