Pentago Board Game Simulation
2021-01-11 00:46
This GeoGebra applet simulates the classic board game Pentago. It uses Polygon and Sequence commands to construct a 6x6 board divided into four rotatable 3x3 quadrants. By leveraging the Rotate command and interactive buttons, it dynamically demonstrates the 90-degree rotation of any quadrant after a piece is placed. This model vividly illustrates the application of geometric transformations in lo
In collections
Math Games with GeoGebra
<?xml version="1.0" encoding="utf-8"?>
<geogebra format="5.0" version="5.0.620.0" app="classic" platform="w" id="a649f4e4-30aa-4b5e-b54a-e5a369ee174f" xsi:noNamespaceSchemaLocation="http://www.geogebra.org/apps/xsd/ggb.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<gui>
<window width="764" height="889" />
<perspectives>
<perspective id="tmp">
<panes>
<pane location="" divider="0.331151832460733" orientation="1" />
</panes>
<views>
<view id="512" toolbar="0 | 1 501 5 19 , 67 | 2 15 45 18 , 7 37 | 514 3 9 , 13 44 , 47 | 16 | 551 550 11 , 20 22 21 23 , 55 56 57 , 12 | 69 | 510 511 , 512 513 | 533 531 , 534 532 , 522 523 , 537 536 , 535 | 521 520 | 36 , 38 49 560 | 571 30 29 570 31 33 | 17 | 540 40 41 42 , 27 28 35 , 6 , 502" visible="false" inframe="false" stylebar="false" location="1,1,1" size="500" window="100,100,600,400" />
<view id="4" toolbar="0 || 2020 , 2021 , 2022 , 66 || 2001 , 2003 , 2002 , 2004 , 2005 || 2040 , 2041 , 2042 , 2044 , 2043" visible="false" inframe="false" stylebar="false" location="1,1" size="300" window="100,100,600,400" />
<view id="8" toolbar="1001 | 1002 | 1003 || 1005 | 1004 || 1006 | 1007 | 1010 || 1008 1009 || 66 68 || 6" visible="false" inframe="false" stylebar="false" location="1,3" size="300" window="100,100,600,400" />
<view id="4097" visible="false" inframe="false" stylebar="true" location="1,1" size="395" window="339,24,1413,690" />
<view id="1" visible="true" inframe="false" stylebar="false" location="1" size="762" window="100,100,600,400" />
<view id="2" visible="false" inframe="false" stylebar="true" location="3" size="253" tab="ALGEBRA" window="112,0,432,1030" />
<view id="16" visible="false" inframe="false" stylebar="false" location="1" size="150" window="50,50,500,500" />
<view id="32" visible="false" inframe="false" stylebar="true" location="1" size="150" window="50,50,500,500" />
<view id="64" toolbar="0" visible="false" inframe="false" stylebar="false" location="1" size="150" window="50,50,500,500" />
<view id="128" visible="false" inframe="false" stylebar="false" location="1" size="480" window="50,50,500,500" />
<view id="70" toolbar="0 || 2020 || 2021 || 2022" visible="false" inframe="false" stylebar="true" location="1" size="150" window="50,50,500,500" />
</views>
<toolbar show="false" items="0 39 73 62 | 1 501 67 , 5 19 , 72 75 76 | 2 15 45 , 18 65 , 7 37 | 4 3 8 9 , 13 44 , 58 , 47 | 16 51 64 , 70 | 10 34 53 11 , 24 20 22 , 21 23 | 55 56 57 , 12 | 36 46 , 38 49 50 , 71 14 68 | 30 29 54 32 31 33 | 25 17 26 60 52 61 | 40 41 42 , 27 28 35 , 6" position="3" help="false" />
<input show="false" cmd="true" top="algebra" />
<dockBar show="false" east="false" />
</perspective>
</perspectives>
<labelingStyle val="3"/>
<font size="16"/>
</gui>
<euclidianView>
<viewNumber viewNo="1"/>
<size width="762" height="886"/>
<coordSystem xZero="381.99999999999994" yZero="394.49999999999994" scale="49.99999999999996" yscale="50.000000000000014"/>
<evSettings axes="false" grid="false" gridIsBold="false" pointCapturing="3" rightAngleStyle="1" checkboxSize="26" gridType="3"/>
<bgColor r="255" g="255" b="255"/>
<axesColor r="0" g="0" b="0"/>
<gridColor r="192" g="192" b="192"/>
<lineStyle axes="1" grid="0"/>
<axis id="0" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true"/>
<axis id="1" show="false" label="" unitLabel="" tickStyle="1" showNumbers="true"/>
</euclidianView>
<kernel>
<uses3D val="true"/>
<continuous val="false"/>
<usePathAndRegionParameters val="true"/>
<decimals val="2"/>
<angleUnit val="degree"/>
<algebraStyle val="0" spreadsheet="0"/>
<coordStyle val="0"/>
</kernel>
<tableview min="-2" max="2" step="1"/>
<scripting blocked="false" disabled="false"/>
<construction title="" author="" date="">
<element type="angle" label="α1">
<angleStyle val="3"/>
<value val="0"/>
<slider min="0°" max="360°" absoluteScreenLocation="true" width="180" x="21" y="645" fixed="false" horizontal="true" showAlgebra="true"/>
<show object="false" label="true" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<lineStyle thickness="10" type="0" typeHidden="2" opacity="178"/>
<arcSize val="30"/>
<animation step="5°" speed="(3 * speed1)" type="1" playing="false"/>
<ggbscript onUpdate="If[α1==0°||α1==90°||α1==180°||α1==270°||α1==360°,StartAnimation(α1,false)]
"/>
</element>
<expression label="x1" exp="(6 * cos(α1))" />
<element type="numeric" label="x1">
<value val="6"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<element type="button" label="button1cc">
<show object="true" label="true"/>
<condition showObject="showTwistButtons"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<bgColor r="255" g="255" b="0" alpha="255"/>
<layer val="0"/>
<labelOffset x="648" y="90"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="speed1=-1
If[α1==0°,SetValue(α1,360°)]
StartAnimation(α1)
SetValue(showTwistButtons,false)
SetValue(turn,!turn)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<file name="geogebra/gui/images/go-previous.png"/>
<dimensions width="100" height="50" />
<startPoint x="3" y="7.1" z="1"/>
</element>
<expression label="speed1" exp="1"/>
<element type="numeric" label="speed1">
<value val="1"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<animation speed="1" type="0" playing="false"/>
</element>
<element type="button" label="button1cl">
<show object="true" label="true"/>
<condition showObject="showTwistButtons"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<bgColor r="255" g="255" b="0" alpha="255"/>
<layer val="0"/>
<labelOffset x="797" y="218"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="speed1=1
If[α1==360°,SetValue(α1,0°)]
StartAnimation(α1)
SetValue(showTwistButtons,false)
SetValue(turn,!turn)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<file name="geogebra/gui/images/go-down.png"/>
<dimensions width="50" height="100" />
<startPoint x="6.1" y="5" z="1"/>
</element>
<expression label="y1" exp="(6 * sin(α1))" />
<element type="numeric" label="y1">
<value val="0"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<expression label="O1" exp="(If[x1 ≥ 0 ∧ y1 ≥ 0, 0, x1 ≤ 0 ∧ y1 ≥ 0, (-x1), x1 ≤ 0 ∧ y1 ≤ 0, (-x1) - y1, x1 ≥ 0 ∧ y1 ≤ 0, (-y1)], If[x1 ≥ 0 ∧ y1 ≥ 0, y1, x1 ≤ 0 ∧ y1 ≥ 0, (-x1) + y1, x1 ≤ 0 ∧ y1 ≤ 0, (-x1), x1 ≥ 0 ∧ y1 ≤ 0, 0])" type="point" />
<element type="point" label="O1">
<show object="false" label="true" ev="4"/>
<objColor r="68" g="68" b="68" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0" y="0" z="1"/>
<pointSize val="4"/>
<pointStyle val="0"/>
</element>
<expression label="X1" exp="(If[x1 ≥ 0 ∧ y1 ≥ 0, x1, x1 ≤ 0 ∧ y1 ≥ 0, 0, x1 ≤ 0 ∧ y1 ≤ 0, (-y1), x1 ≥ 0 ∧ y1 ≤ 0, x1 - y1], If[x1 ≥ 0 ∧ y1 ≥ 0, 0, x1 ≤ 0 ∧ y1 ≥ 0, (-x1), x1 ≤ 0 ∧ y1 ≤ 0, (-x1) - y1, x1 ≥ 0 ∧ y1 ≤ 0, (-y1)])" type="point" />
<element type="point" label="X1">
<show object="false" label="true" ev="4"/>
<objColor r="68" g="68" b="68" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="6" y="0" z="1"/>
<pointSize val="4"/>
<pointStyle val="0"/>
</element>
<element type="angle" label="α2">
<angleStyle val="3"/>
<value val="0"/>
<slider min="0" max="6.283185307179586" absoluteScreenLocation="true" width="180" x="32" y="687" fixed="false" horizontal="true" showAlgebra="true"/>
<show object="false" label="true" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelOffset x="1" y="7"/>
<labelMode val="1"/>
<lineStyle thickness="10" type="0" typeHidden="2" opacity="178"/>
<arcSize val="30"/>
<animation step="5°" speed="(3 * speed2)" type="1" playing="false"/>
<ggbscript onUpdate="If[α2==0°||α2==90°||α2==180°||α2==270°||α2==360°,StartAnimation(α2,false)]
"/>
</element>
<expression label="x2" exp="(6 * cos(α2))" />
<element type="numeric" label="x2">
<value val="6"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<expression label="y2" exp="(6 * sin(α2))" />
<element type="numeric" label="y2">
<value val="0"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<expression label="O2" exp="(If[x2 ≥ 0 ∧ y2 ≥ 0, (-x2) - y2, x2 ≤ 0 ∧ y2 ≥ 0, (-y2), x2 ≤ 0 ∧ y2 ≤ 0, 0, x2 ≥ 0 ∧ y2 ≤ 0, (-x2)], If[x2 ≥ 0 ∧ y2 ≥ 0, y2, x2 ≤ 0 ∧ y2 ≥ 0, (-x2) + y2, x2 ≤ 0 ∧ y2 ≤ 0, (-x2), x2 ≥ 0 ∧ y2 ≤ 0, 0])" type="point" />
<element type="point" label="O2">
<show object="false" label="true" ev="4"/>
<objColor r="68" g="68" b="68" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-6" y="0" z="1"/>
<pointSize val="4"/>
<pointStyle val="0"/>
</element>
<expression label="X2" exp="(If[x2 ≥ 0 ∧ y2 ≥ 0, (-y2), x2 ≤ 0 ∧ y2 ≥ 0, x2 - y2, x2 ≤ 0 ∧ y2 ≤ 0, x2, x2 ≥ 0 ∧ y2 ≤ 0, 0], If[x2 ≥ 0 ∧ y2 ≥ 0, 0, x2 ≤ 0 ∧ y2 ≥ 0, (-x2), x2 ≤ 0 ∧ y2 ≤ 0, (-x2) - y2, x2 ≥ 0 ∧ y2 ≤ 0, (-y2)])" type="point" />
<element type="point" label="X2">
<show object="false" label="true" ev="4"/>
<objColor r="68" g="68" b="68" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0" y="0" z="1"/>
<pointSize val="4"/>
<pointStyle val="0"/>
</element>
<element type="angle" label="α3">
<angleStyle val="3"/>
<value val="4.71238898038469"/>
<slider min="0" max="6.283185307179586" absoluteScreenLocation="true" width="180" x="32" y="725" fixed="false" horizontal="true" showAlgebra="true"/>
<show object="false" label="true" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<lineStyle thickness="10" type="0" typeHidden="2" opacity="178"/>
<arcSize val="30"/>
<animation step="5°" speed="(3 * speed3)" type="3" playing="false"/>
<ggbscript onUpdate="If[α3==0°||α3==90°||α3==180°||α3==270°||α3==360°,StartAnimation(α3,false)]
"/>
</element>
<expression label="x3" exp="(6 * cos(α3))" />
<element type="numeric" label="x3">
<value val="0"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<expression label="y3" exp="(6 * sin(α3))" />
<element type="numeric" label="y3">
<value val="-6"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<expression label="O3" exp="(If[x3 ≥ 0 ∧ y3 ≥ 0, (-x3) - y3, x3 ≤ 0 ∧ y3 ≥ 0, (-y3), x3 ≤ 0 ∧ y3 ≤ 0, 0, x3 ≥ 0 ∧ y3 ≤ 0, (-x3)], If[x3 ≥ 0 ∧ y3 ≥ 0, (-x3), x3 ≤ 0 ∧ y3 ≥ 0, 0, x3 ≤ 0 ∧ y3 ≤ 0, y3, x3 ≥ 0 ∧ y3 ≤ 0, (-x3) + y3])" type="point" />
<element type="point" label="O3">
<show object="false" label="true" ev="4"/>
<objColor r="68" g="68" b="68" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0" y="-6" z="1"/>
<pointSize val="4"/>
<pointStyle val="0"/>
</element>
<expression label="X3" exp="(If[x3 ≥ 0 ∧ y3 ≥ 0, (-y3), x3 ≤ 0 ∧ y3 ≥ 0, x3 - y3, x3 ≤ 0 ∧ y3 ≤ 0, x3, x3 ≥ 0 ∧ y3 ≤ 0, 0], If[x3 ≥ 0 ∧ y3 ≥ 0, (-x3) - y3, x3 ≤ 0 ∧ y3 ≥ 0, (-y3), x3 ≤ 0 ∧ y3 ≤ 0, 0, x3 ≥ 0 ∧ y3 ≤ 0, (-x3)])" type="point" />
<element type="point" label="X3">
<show object="false" label="true" ev="4"/>
<objColor r="68" g="68" b="68" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0" y="0" z="1"/>
<pointSize val="4"/>
<pointStyle val="0"/>
</element>
<element type="angle" label="α4">
<angleStyle val="3"/>
<value val="3.141592653589793"/>
<slider min="0" max="6.283185307179586" absoluteScreenLocation="true" width="180" x="35" y="767" fixed="false" horizontal="true" showAlgebra="true"/>
<show object="false" label="true" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<lineStyle thickness="10" type="0" typeHidden="2" opacity="178"/>
<arcSize val="30"/>
<animation step="5°" speed="(3 * speed4)" type="1" playing="false"/>
<ggbscript onUpdate="If[α4==0°||α4==90°||α4==180°||α4==270°||α4==360°,StartAnimation(α4,false)]
"/>
</element>
<expression label="x4" exp="(6 * cos(α4))" />
<element type="numeric" label="x4">
<value val="-6"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<expression label="y4" exp="(6 * sin(α4))" />
<element type="numeric" label="y4">
<value val="0"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
</element>
<expression label="O4" exp="(If[x4 ≥ 0 ∧ y4 ≥ 0, 0, x4 ≤ 0 ∧ y4 ≥ 0, (-x4), x4 ≤ 0 ∧ y4 ≤ 0, (-x4) - y4, x4 ≥ 0 ∧ y4 ≤ 0, (-y4)], If[x4 ≥ 0 ∧ y4 ≥ 0, (-x4), x4 ≤ 0 ∧ y4 ≥ 0, 0, x4 ≤ 0 ∧ y4 ≤ 0, y4, x4 ≥ 0 ∧ y4 ≤ 0, (-x4) + y4])" type="point" />
<element type="point" label="O4">
<show object="false" label="true" ev="4"/>
<objColor r="68" g="68" b="68" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="6" y="0" z="1"/>
<pointSize val="4"/>
<pointStyle val="0"/>
</element>
<expression label="X4" exp="(If[x4 ≥ 0 ∧ y4 ≥ 0, x4, x4 ≤ 0 ∧ y4 ≥ 0, 0, x4 ≤ 0 ∧ y4 ≤ 0, (-y4), x4 ≥ 0 ∧ y4 ≤ 0, x4 - y4], If[x4 ≥ 0 ∧ y4 ≥ 0, (-x4) - y4, x4 ≤ 0 ∧ y4 ≥ 0, (-y4), x4 ≤ 0 ∧ y4 ≤ 0, 0, x4 ≥ 0 ∧ y4 ≤ 0, (-x4)])" type="point" />
<element type="point" label="X4">
<show object="false" label="true" ev="4"/>
<objColor r="68" g="68" b="68" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0" y="0" z="1"/>
<pointSize val="4"/>
<pointStyle val="0"/>
</element>
<expression label="polyBoard" exp="{Polygon[O2, X2, 4], Polygon[O1, X1, 4], Polygon[O3, X3, 4], Polygon[O4, X4, 4]}" />
<element type="list" label="polyBoard">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0.800000011920929"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<selectionAllowed val="false"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<pointSize val="5"/>
<pointStyle val="0"/>
<angleStyle val="0"/>
</element>
<expression label="polyBoardborder" exp="{Polygon[O2, X2, 4], Polygon[O1, X1, 4], Polygon[O3, X3, 4], Polygon[O4, X4, 4]}" />
<element type="list" label="polyBoardborder">
<show object="true" label="false" ev="4"/>
<objColor r="255" g="255" b="255" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<selectionAllowed val="false"/>
<lineStyle thickness="13" type="0" typeHidden="1"/>
<pointSize val="5"/>
<pointStyle val="0"/>
<angleStyle val="0"/>
</element>
<element type="button" label="button2cl">
<show object="true" label="true"/>
<condition showObject="showTwistButtons"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<bgColor r="255" g="255" b="0" alpha="255"/>
<layer val="0"/>
<labelOffset x="309" y="93"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="speed2=1
If[α2==360°,SetValue(α2,0°)]
StartAnimation(α2)
SetValue(showTwistButtons,false)
SetValue(turn,!turn)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<file name="geogebra/gui/images/go-next.png"/>
<dimensions width="100" height="50" />
<startPoint x="-5" y="7.1" z="1"/>
</element>
<element type="button" label="button2cc">
<show object="true" label="true"/>
<condition showObject="showTwistButtons"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<bgColor r="255" g="255" b="0" alpha="255"/>
<layer val="0"/>
<labelOffset x="204" y="180"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="speed2=-1
If[α2==0°,SetValue(α2,360°)]
StartAnimation(α2)
SetValue(showTwistButtons,false)
SetValue(turn,!turn)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<file name="geogebra/gui/images/go-down.png"/>
<dimensions width="50" height="100" />
<startPoint x="-7.1" y="5" z="1"/>
</element>
<expression label="speed2" exp="1"/>
<element type="numeric" label="speed2">
<value val="1"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<animation speed="1" type="0" playing="false"/>
</element>
<element type="button" label="button3cl">
<show object="true" label="true"/>
<condition showObject="showTwistButtons"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<bgColor r="255" g="255" b="0" alpha="255"/>
<layer val="0"/>
<labelOffset x="206" y="507"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="speed3=1
If[α3==360°,SetValue(α3,0°)]
StartAnimation(α3)
SetValue(showTwistButtons,false)
SetValue(turn,!turn)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<file name="geogebra/gui/images/go-up.png"/>
<dimensions width="50" height="100" />
<startPoint x="-7.1" y="-3" z="1"/>
</element>
<element type="button" label="button3cc">
<show object="true" label="true"/>
<condition showObject="showTwistButtons"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<bgColor r="255" g="255" b="0" alpha="255"/>
<layer val="0"/>
<labelOffset x="357" y="717"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="speed3=-1
If[α3==0°,SetValue(α3,360°)]
StartAnimation(α3)
SetValue(showTwistButtons,false)
SetValue(turn,!turn)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<file name="geogebra/gui/images/go-next.png"/>
<dimensions width="100" height="50" />
<startPoint x="-5" y="-6.1" z="1"/>
</element>
<element type="button" label="button4cl">
<show object="true" label="true"/>
<condition showObject="showTwistButtons"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<bgColor r="255" g="255" b="0" alpha="255"/>
<layer val="0"/>
<labelOffset x="637" y="701"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="speed4=1
If[α4==360°,SetValue(α4,0°)]
StartAnimation(α4)
SetValue(showTwistButtons,false)
SetValue(turn,!turn)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<file name="geogebra/gui/images/go-previous.png"/>
<dimensions width="100" height="50" />
<startPoint x="3" y="-6.1" z="1"/>
</element>
<element type="button" label="button4cc">
<show object="true" label="true"/>
<condition showObject="showTwistButtons"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<bgColor r="255" g="255" b="0" alpha="255"/>
<layer val="0"/>
<labelOffset x="796" y="529"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="speed4=-1
If[α4==0°,SetValue(α4,360°)]
StartAnimation(α4)
SetValue(showTwistButtons,false)
SetValue(turn,!turn)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<file name="geogebra/gui/images/go-up.png"/>
<dimensions width="50" height="100" />
<startPoint x="6.1" y="-3" z="1"/>
</element>
<expression label="speed3" exp="-1"/>
<element type="numeric" label="speed3">
<value val="-1"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<animation speed="1" type="0" playing="false"/>
</element>
<expression label="speed4" exp="1"/>
<element type="numeric" label="speed4">
<value val="1"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<animation speed="1" type="0" playing="false"/>
</element>
<expression label="u1" exp="(1 / 6 * (X1 - O1))" type="vector" />
<element type="vector" label="u1">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1" y="0" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<coordStyle style="cartesian"/>
</element>
<command name="Rotate">
<input a0="u1" a1="90°" a2="O1"/>
<output a0="v1"/>
</command>
<element type="vector" label="v1">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="6.123233995736766e-17" y="1" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<coordStyle style="cartesian"/>
</element>
<expression label="u2" exp="(1 / 6 * (X2 - O2))" type="vector" />
<element type="vector" label="u2">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="1" y="0" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<coordStyle style="cartesian"/>
</element>
<expression label="u3" exp="(1 / 6 * (X3 - O3))" type="vector" />
<element type="vector" label="u3">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="0" y="1" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<coordStyle style="cartesian"/>
</element>
<command name="Rotate">
<input a0="u3" a1="90°" a2="O3"/>
<output a0="v3"/>
</command>
<element type="vector" label="v3">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-1" y="6.123233995736766e-17" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<coordStyle style="cartesian"/>
</element>
<expression label="u4" exp="(1 / 6 * (X4 - O4))" type="vector" />
<element type="vector" label="u4">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-1" y="0" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<coordStyle style="cartesian"/>
</element>
<command name="Rotate">
<input a0="u4" a1="90°" a2="O4"/>
<output a0="v4"/>
</command>
<element type="vector" label="v4">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="-6.123233995736766e-17" y="-1" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<coordStyle style="cartesian"/>
</element>
<command name="Rotate">
<input a0="u2" a1="90°" a2="O2"/>
<output a0="v2"/>
</command>
<element type="vector" label="v2">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<coords x="6.123233995736766e-17" y="1" z="0"/>
<lineStyle thickness="5" type="0" typeHidden="1" opacity="178"/>
<coordStyle style="cartesian"/>
</element>
<expression label="P111" exp="O1 + (1 * u1) + (1 * v1)" type="point" />
<element type="point" label="P111">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,1,1))"/>
<coords x="1" y="1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P131" exp="O1 + (3 * u1) + (1 * v1)" type="point" />
<element type="point" label="P131">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,3,1))"/>
<coords x="3" y="1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P151" exp="O1 + (5 * u1) + (1 * v1)" type="point" />
<element type="point" label="P151">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,5,1))"/>
<coords x="5" y="1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P113" exp="O1 + (1 * u1) + (3 * v1)" type="point" />
<element type="point" label="P113">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,1,3))"/>
<coords x="1.0000000000000002" y="3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P133" exp="O1 + (3 * u1) + (3 * v1)" type="point" />
<element type="point" label="P133">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,3,3))"/>
<coords x="3" y="3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P153" exp="O1 + (5 * u1) + (3 * v1)" type="point" />
<element type="point" label="P153">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,5,3))"/>
<coords x="5" y="3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P115" exp="O1 + (1 * u1) + (5 * v1)" type="point" />
<element type="point" label="P115">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,1,5))"/>
<coords x="1.0000000000000002" y="5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P135" exp="O1 + (3 * u1) + (5 * v1)" type="point" />
<element type="point" label="P135">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,3,5))"/>
<coords x="3.0000000000000004" y="5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P155" exp="O1 + (5 * u1) + (5 * v1)" type="point" />
<element type="point" label="P155">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(1,5,5))"/>
<coords x="5" y="5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<element type="numeric" label="nHoleSize">
<value val="25"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<slider min="20" max="30" absoluteScreenLocation="true" width="200" x="17" y="311" fixed="false" horizontal="true" showAlgebra="true"/>
<lineStyle thickness="10" type="0" typeHidden="1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<ggbscript onUpdate="SetPointSize( P11, nHoleSize )
SetPointSize( P12, nHoleSize )
SetPointSize( P13, nHoleSize )
SetPointSize( P14, nHoleSize )
SetPointSize( P15, nHoleSize )
SetPointSize( P16, nHoleSize )
SetPointSize( P17, nHoleSize )
SetPointSize( P18, nHoleSize )
SetPointSize( P19, nHoleSize )
SetPointSize( P21, nHoleSize )
SetPointSize( P22, nHoleSize )
SetPointSize( P23, nHoleSize )
SetPointSize( P24, nHoleSize )
SetPointSize( P25, nHoleSize )
SetPointSize( P26, nHoleSize )
SetPointSize( P27, nHoleSize )
SetPointSize( P28, nHoleSize )
SetPointSize( P29, nHoleSize )
SetPointSize( P31, nHoleSize )
SetPointSize( P32, nHoleSize )
SetPointSize( P33, nHoleSize )
SetPointSize( P34, nHoleSize )
SetPointSize( P35, nHoleSize )
SetPointSize( P36, nHoleSize )
SetPointSize( P37, nHoleSize )
SetPointSize( P38, nHoleSize )
SetPointSize( P39, nHoleSize )
SetPointSize( P41, nHoleSize )
SetPointSize( P42, nHoleSize )
SetPointSize( P43, nHoleSize )
SetPointSize( P44, nHoleSize )
SetPointSize( P45, nHoleSize )
SetPointSize( P46, nHoleSize )
SetPointSize( P47, nHoleSize )
SetPointSize( P48, nHoleSize )
SetPointSize( P49, nHoleSize )"/>
</element>
<expression label="P211" exp="O2 + (1 * u2) + (1 * v2)" type="point" />
<element type="point" label="P211">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,1,1))"/>
<coords x="-5" y="1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P231" exp="O2 + (3 * u2) + (1 * v2)" type="point" />
<element type="point" label="P231">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,3,1))"/>
<coords x="-3" y="1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P251" exp="O2 + (5 * u2) + (1 * v2)" type="point" />
<element type="point" label="P251">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,5,1))"/>
<coords x="-0.9999999999999999" y="1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P213" exp="O2 + (1 * u2) + (3 * v2)" type="point" />
<element type="point" label="P213">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,1,3))"/>
<coords x="-5" y="3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P233" exp="O2 + (3 * u2) + (3 * v2)" type="point" />
<element type="point" label="P233">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,3,3))"/>
<coords x="-3" y="3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P253" exp="O2 + (5 * u2) + (3 * v2)" type="point" />
<element type="point" label="P253">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,5,3))"/>
<coords x="-0.9999999999999998" y="3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P215" exp="O2 + (1 * u2) + (5 * v2)" type="point" />
<element type="point" label="P215">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,1,5))"/>
<coords x="-5" y="5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P235" exp="O2 + (3 * u2) + (5 * v2)" type="point" />
<element type="point" label="P235">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,3,5))"/>
<coords x="-2.9999999999999996" y="5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P255" exp="O2 + (5 * u2) + (5 * v2)" type="point" />
<element type="point" label="P255">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(2,5,5))"/>
<coords x="-0.9999999999999997" y="5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P311" exp="O3 + (1 * u3) + (1 * v3)" type="point" />
<element type="point" label="P311">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,1,1))"/>
<coords x="-1" y="-5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P331" exp="O3 + (3 * u3) + (1 * v3)" type="point" />
<element type="point" label="P331">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,3,1))"/>
<coords x="-1" y="-3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P351" exp="O3 + (5 * u3) + (1 * v3)" type="point" />
<element type="point" label="P351">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,5,1))"/>
<coords x="-1" y="-0.9999999999999999" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P313" exp="O3 + (1 * u3) + (3 * v3)" type="point" />
<element type="point" label="P313">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,1,3))"/>
<coords x="-3" y="-5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P333" exp="O3 + (3 * u3) + (3 * v3)" type="point" />
<element type="point" label="P333">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,3,3))"/>
<coords x="-3" y="-3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P353" exp="O3 + (5 * u3) + (3 * v3)" type="point" />
<element type="point" label="P353">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,5,3))"/>
<coords x="-3" y="-0.9999999999999998" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P315" exp="O3 + (1 * u3) + (5 * v3)" type="point" />
<element type="point" label="P315">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,1,5))"/>
<coords x="-5" y="-5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P335" exp="O3 + (3 * u3) + (5 * v3)" type="point" />
<element type="point" label="P335">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,3,5))"/>
<coords x="-5" y="-2.9999999999999996" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P355" exp="O3 + (5 * u3) + (5 * v3)" type="point" />
<element type="point" label="P355">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(3,5,5))"/>
<coords x="-5" y="-0.9999999999999997" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P411" exp="O4 + (1 * u4) + (1 * v4)" type="point" />
<element type="point" label="P411">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,1,1))"/>
<coords x="5" y="-1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P431" exp="O4 + (3 * u4) + (1 * v4)" type="point" />
<element type="point" label="P431">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,3,1))"/>
<coords x="3" y="-1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P451" exp="O4 + (5 * u4) + (1 * v4)" type="point" />
<element type="point" label="P451">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,5,1))"/>
<coords x="0.9999999999999999" y="-1" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P413" exp="O4 + (1 * u4) + (3 * v4)" type="point" />
<element type="point" label="P413">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,1,3))"/>
<coords x="5" y="-3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P433" exp="O4 + (3 * u4) + (3 * v4)" type="point" />
<element type="point" label="P433">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,3,3))"/>
<coords x="3" y="-3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P453" exp="O4 + (5 * u4) + (3 * v4)" type="point" />
<element type="point" label="P453">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,5,3))"/>
<coords x="0.9999999999999998" y="-3" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P415" exp="O4 + (1 * u4) + (5 * v4)" type="point" />
<element type="point" label="P415">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,1,5))"/>
<coords x="5" y="-5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P435" exp="O4 + (3 * u4) + (5 * v4)" type="point" />
<element type="point" label="P435">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,3,5))"/>
<coords x="2.9999999999999996" y="-5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="P455" exp="O4 + (5 * u4) + (5 * v4)" type="point" />
<element type="point" label="P455">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SetValue(F,(4,5,5))"/>
<coords x="0.9999999999999997" y="-5" z="1"/>
<pointSize val="25"/>
<pointStyle val="0"/>
</element>
<expression label="Blacks" exp="{(4, 1, 1), (4, 5, 3)}"/>
<element type="list" label="Blacks">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="2"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="1"/>
<pointStyle val="0"/>
<angleStyle val="0"/>
</element>
<expression label="Whites" exp="{(3, 5, 1), (3, 1, 1)}"/>
<element type="list" label="Whites">
<show object="false" label="false" ev="4"/>
<objColor r="255" g="255" b="255" alpha="0"/>
<layer val="2"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="1"/>
<pointStyle val="0"/>
<angleStyle val="0"/>
</element>
<element type="button" label="buttonScript">
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelOffset x="497" y="832"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="If[showTwistButtons==false&&turn==true,SetValue(Blacks,Append(Blacks,F))]
If[showTwistButtons==false&&turn==false,SetValue(Whites,Append(Whites,F))]

SetValue(showTwistButtons,true)"/>
<font serif="false" sizeM="2" size="16" style="0"/>
</element>
<element type="button" label="buttonReset">
<show object="true" label="true"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<bgColor r="191" g="255" b="0" alpha="255"/>
<layer val="9"/>
<labelOffset x="284" y="806"/>
<labelMode val="3"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<auxiliary val="true"/>
<ggbscript val="SetValue(F,(0,0,0))
SetValue(α1,0°)
SetValue(α2,0°)
SetValue(α3,0°)
SetValue(α4,0°)
SetValue(turn,true)
Blacks={}
Whites={}
SetValue(showTwistButtons,false)"/>
<font serif="false" sizeM="3" size="32" style="1"/>
<dimensions width="225" height="80" />
<startPoint x="-2.2" y="-8.2" z="1"/>
<caption val="New Game"/>
</element>
<element type="boolean" label="turn">
<value val="false"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<checkbox fixed="true"/>
</element>
<element type="boolean" label="showTwistButtons">
<value val="true"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<checkbox fixed="true"/>
</element>
<element type="numeric" label="nBWSize">
<value val="32"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0.10000000149011612"/>
<layer val="0"/>
<labelMode val="1"/>
<slider min="20" max="40" absoluteScreenLocation="true" width="200" x="18" y="256" fixed="false" horizontal="true" showAlgebra="true"/>
<lineStyle thickness="10" type="0" typeHidden="1"/>
<animation step="1" speed="1" type="0" playing="false"/>
<ggbscript onUpdate="SetPointSize(BlacksC,nBWSize)
SetPointSize(WhitesC,nBWSize)"/>
</element>
<expression label="F" exp="(3, 1, 1)" type="point"/>
<element type="point3d" label="F">
<show object="false" label="true" ev="4"/>
<objColor r="77" g="77" b="255" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="1" playing="false"/>
<ggbscript onUpdate="If[F!=(0,0),RunClickScript(buttonScript)]"/>
<coords x="3" y="1" z="1" w="1"/>
<pointSize val="5"/>
</element>
<command name="Sequence">
<input a0="If[x(Blacks(k)) ≟ 1, O1 + (y(Blacks(k)) * u1) + (z(Blacks(k)) * v1), x(Blacks(k)) ≟ 2, O2 + (y(Blacks(k)) * u2) + (z(Blacks(k)) * v2), x(Blacks(k)) ≟ 3, O3 + (y(Blacks(k)) * u3) + (z(Blacks(k)) * v3), x(Blacks(k)) ≟ 4, O4 + (y(Blacks(k)) * u4) + (z(Blacks(k)) * v4)]" a1="k" a2="1" a3="Length[Blacks]"/>
<output a0="BlacksC"/>
</command>
<element type="list" label="BlacksC">
<show object="true" label="false" ev="4"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="2"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SelectObjects()"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="32"/>
<pointStyle val="0"/>
<angleStyle val="0"/>
</element>
<command name="Sequence">
<input a0="If[x(Whites(k)) ≟ 1, O1 + (y(Whites(k)) * u1) + (z(Whites(k)) * v1), x(Whites(k)) ≟ 2, O2 + (y(Whites(k)) * u2) + (z(Whites(k)) * v2), x(Whites(k)) ≟ 3, O3 + (y(Whites(k)) * u3) + (z(Whites(k)) * v3), x(Whites(k)) ≟ 4, O4 + (y(Whites(k)) * u4) + (z(Whites(k)) * v4)]" a1="k" a2="1" a3="Length[Whites]"/>
<output a0="WhitesC"/>
</command>
<element type="list" label="WhitesC">
<show object="true" label="false" ev="4"/>
<objColor r="255" g="255" b="255" alpha="0"/>
<layer val="2"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<ggbscript val="SelectObjects()"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="32"/>
<pointStyle val="0"/>
<angleStyle val="0"/>
</element>
<expression label="wins" exp="{{(-5, -3), (-5, -1), (-5, 1), (-5, 3), (-5, 5)}, {(-3, -3), (-3, -1), (-3, 1), (-3, 3), (-3, 5)}, {(-1, -3), (-1, -1), (-1, 1), (-1, 3), (-1, 5)}, {(1, -3), (1, -1), (1, 1), (1, 3), (1, 5)}, {(3, -3), (3, -1), (3, 1), (3, 3), (3, 5)}, {(5, -3), (5, -1), (5, 1), (5, 3), (5, 5)}, {(-5, -5), (-5, -3), (-5, -1), (-5, 1), (-5, 3)}, {(-3, -5), (-3, -3), (-3, -1), (-3, 1), (-3, 3)}, {(-1, -5), (-1, -3), (-1, -1), (-1, 1), (-1, 3)}, {(1, -5), (1, -3), (1, -1), (1, 1), (1, 3)}, {(3, -5), (3, -3), (3, -1), (3, 1), (3, 3)}, {(5, -5), (5, -3), (5, -1), (5, 1), (5, 3)}, {(-5, -5), (-3, -5), (-1, -5), (1, -5), (3, -5)}, {(-5, -3), (-3, -3), (-1, -3), (1, -3), (3, -3)}, {(-5, -1), (-3, -1), (-1, -1), (1, -1), (3, -1)}, {(-5, 1), (-3, 1), (-1, 1), (1, 1), (3, 1)}, {(-5, 3), (-3, 3), (-1, 3), (1, 3), (3, 3)}, {(-5, 5), (-3, 5), (-1, 5), (1, 5), (3, 5)}, {(-3, -5), (-1, -5), (1, -5), (3, -5), (5, -5)}, {(-3, -3), (-1, -3), (1, -3), (3, -3), (5, -3)}, {(-3, -1), (-1, -1), (1, -1), (3, -1), (5, -1)}, {(-3, 1), (-1, 1), (1, 1), (3, 1), (5, 1)}, {(-3, 3), (-1, 3), (1, 3), (3, 3), (5, 3)}, {(-3, 5), (-1, 5), (1, 5), (3, 5), (5, 5)}, {(-5, -3), (-3, -1), (-1, 1), (1, 3), (3, 5)}, {(-5, -5), (-3, -3), (-1, -1), (1, 1), (3, 3)}, {(-3, -3), (-1, -1), (1, 1), (3, 3), (5, 5)}, {(-3, -5), (-1, -3), (1, -1), (3, 1), (5, 3)}, {(-3, 5), (-1, 3), (1, 1), (3, -1), (5, -3)}, {(-5, 5), (-3, 3), (-1, 1), (1, -1), (3, -3)}, {(-3, 3), (-1, 1), (1, -1), (3, -3), (5, -5)}, {(-5, 3), (-3, 1), (-1, -1), (1, -3), (3, -5)}}"/>
<element type="list" label="wins">
<show object="false" label="false" ev="4"/>
<objColor r="0" g="100" b="0" alpha="0"/>
<layer val="2"/>
<labelMode val="0"/>
<animation step="1" speed="1" type="0" playing="false"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<pointSize val="5"/>
<pointStyle val="0"/>
<angleStyle val="0"/>
</element>
<command name="RemoveUndefined">
<input a0="Sequence[If[wins(k) ⊆ BlacksC, wins(k)], k, 1, Length[wins]]"/>
<output a0="BlackWin"/>
</command>
<element type="list" label="BlackWin">
<show object="true" label="false" ev="4"/>
<objColor r="255" g="0" b="0" alpha="0"/>
<layer val="2"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<listType val="list"/>
<pointSize val="9"/>
<pointStyle val="3"/>
<angleStyle val="0"/>
</element>
<command name="RemoveUndefined">
<input a0="Sequence[If[wins(k) ⊆ WhitesC, wins(k)], k, 1, Length[wins]]"/>
<output a0="WhiteWin"/>
</command>
<element type="list" label="WhiteWin">
<show object="true" label="false" ev="4"/>
<objColor r="255" g="0" b="0" alpha="0"/>
<layer val="2"/>
<labelMode val="0"/>
<lineStyle thickness="5" type="0" typeHidden="1"/>
<listType val="list"/>
<pointSize val="9"/>
<pointStyle val="2"/>
<angleStyle val="0"/>
</element>
<element type="button" label="buttonTurnBlack">
<show object="true" label="true"/>
<condition showObject="turn"/>
<objColor r="128" g="128" b="128" alpha="1"/>
<bgColor r="0" g="0" b="0" alpha="255"/>
<layer val="2"/>
<labelOffset x="55" y="801"/>
<labelMode val="3"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<auxiliary val="true"/>
<font serif="false" sizeM="4" size="48" style="1"/>
<dimensions width="180" height="80" />
<startPoint x="-6" y="-8" z="1"/>
<caption val="Black"/>
</element>
<element type="button" label="buttonTurnWhite">
<show object="true" label="true"/>
<condition showObject="¬turn"/>
<objColor r="128" g="128" b="128" alpha="1"/>
<bgColor r="255" g="255" b="255" alpha="255"/>
<layer val="2"/>
<labelOffset x="554" y="800"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<fixed val="true"/>
<selectionAllowed val="false"/>
<auxiliary val="true"/>
<font serif="false" sizeM="4" size="48" style="1"/>
<dimensions width="180" height="80" />
<startPoint x="2.5" y="-8" z="1"/>
<caption val="White"/>
</element>
<command name="If">
<input a0="BlackWin ≠ {}" a1="true" a2="false"/>
<output a0="bBlackWin"/>
</command>
<element type="boolean" label="bBlackWin">
<value val="false"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<checkbox fixed="true"/>
</element>
<command name="If">
<input a0="WhiteWin ≠ {}" a1="true" a2="false"/>
<output a0="bWhiteWin"/>
</command>
<element type="boolean" label="bWhiteWin">
<value val="false"/>
<show object="false" label="true"/>
<objColor r="0" g="0" b="0" alpha="0"/>
<layer val="0"/>
<labelMode val="0"/>
<checkbox fixed="true"/>
</element>
<command name="Polygon">
<input a0="{Corner[1], Corner[2], Corner[3], Corner[4]}"/>
<output a0="polyMask"/>
</command>
<element type="polygon" label="polyMask">
<lineStyle thickness="0" type="0" typeHidden="1" opacity="178"/>
<show object="true" label="false" ev="4"/>
<condition showObject="showTwistButtons ≟ false ∧ (bBlackWin ≠ false ∨ bWhiteWin ≠ false)"/>
<objColor r="0" g="0" b="0" alpha="0.5"/>
<layer val="8"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<selectionAllowed val="false"/>
</element>
<expression label="a" exp="a: y ≤ -6" type="inequality"/>
<element type="function" label="a">
<show object="true" label="false" ev="4"/>
<condition showObject="showTwistButtons ≟ false ∧ (bBlackWin ≠ false ∨ bWhiteWin ≠ false)"/>
<objColor r="0" g="0" b="0" alpha="1"/>
<layer val="8"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<animation step="1" speed="1" type="0" playing="false"/>
<selectionAllowed val="false"/>
<lineStyle thickness="0" type="0" typeHidden="1"/>
</element>
<expression label="text1" exp=""Game Over! " + (If[bBlackWin ≟ true ∧ bWhiteWin ≟ true, "Ended with a DRAW.", bBlackWin ≟ true ∧ bWhiteWin ≟ false, "The BLACK wins.", bBlackWin ≟ false ∧ bWhiteWin ≟ true, "The WHITE wins."]) + "
遊戲結束! " + (If[bBlackWin ≟ true ∧ bWhiteWin ≟ true, "雙方平手..", bBlackWin ≟ true ∧ bWhiteWin ≟ false, "黑方獲勝.", bBlackWin ≟ false ∧ bWhiteWin ≟ true, "白方獲勝."]) + """ />
<element type="text" label="text1">
<show object="true" label="false" ev="8"/>
<condition showObject="showTwistButtons ≟ false ∧ (bBlackWin ≠ false ∨ bWhiteWin ≠ false)"/>
<objColor r="255" g="255" b="0" alpha="0"/>
<layer val="8"/>
<labelMode val="0"/>
<tooltipMode val="2"/>
<selectionAllowed val="false"/>
<font serif="false" sizeM="2" size="16" style="0"/>
<startPoint x="-5" y="-6.9" z="1"/>
</element>
</construction>
</geogebra>