diff --git a/Cribbage/.classpath b/Cribbage/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..4c6698451bc17960ac5b7d5ee30586b6fdc50e69 --- /dev/null +++ b/Cribbage/.classpath @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="src" path="sprites"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JGameGrid"/> + <classpathentry kind="output" path="bin"/> +</classpath> \ No newline at end of file diff --git a/Cribbage/.idea/.gitignore b/Cribbage/.idea/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..26d33521af10bcc7fd8cea344038eaaeb78d0ef5 --- /dev/null +++ b/Cribbage/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Cribbage/.idea/.name b/Cribbage/.idea/.name new file mode 100644 index 0000000000000000000000000000000000000000..ce75906cdaf838fc62e83de5d9da397df677e6e6 --- /dev/null +++ b/Cribbage/.idea/.name @@ -0,0 +1 @@ +Cribbage.java \ No newline at end of file diff --git a/Cribbage/.idea/libraries/JGameGrid.xml b/Cribbage/.idea/libraries/JGameGrid.xml new file mode 100644 index 0000000000000000000000000000000000000000..96f358fd8596e6f524fb6d64abd4a6ecdc7cc84f --- /dev/null +++ b/Cribbage/.idea/libraries/JGameGrid.xml @@ -0,0 +1,9 @@ +<component name="libraryTable"> + <library name="JGameGrid"> + <CLASSES> + <root url="jar://$PROJECT_DIR$/dist/lib/JGameGrid.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/Cribbage/.idea/misc.xml b/Cribbage/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..735e154ea92a53e3bb4d4b12c29187c438a0e19b --- /dev/null +++ b/Cribbage/.idea/misc.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_12" project-jdk-name="12 (2)" project-jdk-type="JavaSDK"> + <output url="file://$PROJECT_DIR$/out" /> + </component> +</project> \ No newline at end of file diff --git a/Cribbage/.idea/modules.xml b/Cribbage/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..2326fbacac3f7120f5328f97f23566adf9b7f1fc --- /dev/null +++ b/Cribbage/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/Cribbage.iml" filepath="$PROJECT_DIR$/Cribbage.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/Cribbage/.idea/uiDesigner.xml b/Cribbage/.idea/uiDesigner.xml new file mode 100644 index 0000000000000000000000000000000000000000..e96534fb27b68192f27f985d3879e173ec77adb8 --- /dev/null +++ b/Cribbage/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Palette2"> + <group name="Swing"> + <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> + </item> + <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true"> + <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> + <initial-values> + <property name="text" value="Button" /> + </initial-values> + </item> + <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="RadioButton" /> + </initial-values> + </item> + <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="CheckBox" /> + </initial-values> + </item> + <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> + <initial-values> + <property name="text" value="Label" /> + </initial-values> + </item> + <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> + <preferred-size width="150" height="-1" /> + </default-constraints> + </item> + <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> + <preferred-size width="150" height="50" /> + </default-constraints> + </item> + <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> + <preferred-size width="200" height="200" /> + </default-constraints> + </item> + <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> + </item> + <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> + </item> + <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> + <preferred-size width="-1" height="20" /> + </default-constraints> + </item> + <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false"> + <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> + </item> + <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> + <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> + </item> + </group> + </component> +</project> \ No newline at end of file diff --git a/Cribbage/.project b/Cribbage/.project new file mode 100644 index 0000000000000000000000000000000000000000..7142b656ab09e565208ff937c6551e037d7daec7 --- /dev/null +++ b/Cribbage/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>Cribbage</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Cribbage/.settings/org.eclipse.jdt.core.prefs b/Cribbage/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..3a21537071bf4118b9e1ee864cb4bc258aa48211 --- /dev/null +++ b/Cribbage/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Cribbage/Cribbage.eml b/Cribbage/Cribbage.eml new file mode 100644 index 0000000000000000000000000000000000000000..3147d0406a3351c3ef1db93f85390e8e36c9033a --- /dev/null +++ b/Cribbage/Cribbage.eml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<component inherit-compiler-output="true" inheritJdk="true"> + <exclude-output/> + <contentEntry url="file://$MODULE_DIR$"/> + <levels> + <level name="JGameGrid" value="project"/> + </levels> +</component> \ No newline at end of file diff --git a/Cribbage/Cribbage.iml b/Cribbage/Cribbage.iml new file mode 100644 index 0000000000000000000000000000000000000000..e2a228313a7b0de712540542cf33a49cb6f9aa63 --- /dev/null +++ b/Cribbage/Cribbage.iml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module classpath="eclipse" classpath-dir="$MODULE_DIR$" type="WEB_MODULE" version="4" /> \ No newline at end of file diff --git a/Cribbage/Cribbage.userlibraries b/Cribbage/Cribbage.userlibraries new file mode 100644 index 0000000000000000000000000000000000000000..25eba150dd812120752893333ad8d9ed5335135d --- /dev/null +++ b/Cribbage/Cribbage.userlibraries @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<eclipse-userlibraries> + <library name="JGameGrid"> + <archive path="C:/Users/pdart/OneDrive - The University of Melbourne/Teaching/SWEN30006 2021 S1/Projects/Project_2/Cribbage/dist/lib/JGameGrid.jar" /> + </library> +</eclipse-userlibraries> + diff --git a/Cribbage/bin/whist/BrokeRuleException.class b/Cribbage/bin/whist/BrokeRuleException.class new file mode 100644 index 0000000000000000000000000000000000000000..18ce2386b12addc6c8944cc6158f386f7101d5dd Binary files /dev/null and b/Cribbage/bin/whist/BrokeRuleException.class differ diff --git a/Cribbage/bin/whist/HumanPlayer$1.class b/Cribbage/bin/whist/HumanPlayer$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b048a111a507e842fe8d2e767259595d67eeabf5 Binary files /dev/null and b/Cribbage/bin/whist/HumanPlayer$1.class differ diff --git a/Cribbage/bin/whist/HumanPlayer.class b/Cribbage/bin/whist/HumanPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..e7cdaf1c56175806bbf7ca9c9b0cd66f47cb5560 Binary files /dev/null and b/Cribbage/bin/whist/HumanPlayer.class differ diff --git a/Cribbage/bin/whist/IPlayer.class b/Cribbage/bin/whist/IPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..23f33e38835b798395f277acd8c4616ea8416e72 Binary files /dev/null and b/Cribbage/bin/whist/IPlayer.class differ diff --git a/Cribbage/bin/whist/LegalPlayer.class b/Cribbage/bin/whist/LegalPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..216203fca340f62ee9b53947ec5d3d5cc2c2e917 Binary files /dev/null and b/Cribbage/bin/whist/LegalPlayer.class differ diff --git a/Cribbage/bin/whist/LowPlayer.class b/Cribbage/bin/whist/LowPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..6b2174da628ea4ae6dea9f0b1aa76a4d51d21042 Binary files /dev/null and b/Cribbage/bin/whist/LowPlayer.class differ diff --git a/Cribbage/bin/whist/RandomPlayer.class b/Cribbage/bin/whist/RandomPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..d5bef28032fba579684ad3f0c329c65ea252101e Binary files /dev/null and b/Cribbage/bin/whist/RandomPlayer.class differ diff --git a/Cribbage/bin/whist/Whist$Action.class b/Cribbage/bin/whist/Whist$Action.class new file mode 100644 index 0000000000000000000000000000000000000000..c489aa8e8afba50e45f60fb3b1fb71aa780e698d Binary files /dev/null and b/Cribbage/bin/whist/Whist$Action.class differ diff --git a/Cribbage/bin/whist/Whist$Play.class b/Cribbage/bin/whist/Whist$Play.class new file mode 100644 index 0000000000000000000000000000000000000000..aaa5b47835bbdbbdfa020a7232e2dca96eb7959b Binary files /dev/null and b/Cribbage/bin/whist/Whist$Play.class differ diff --git a/Cribbage/bin/whist/Whist$Rank.class b/Cribbage/bin/whist/Whist$Rank.class new file mode 100644 index 0000000000000000000000000000000000000000..c15803f4fd53411ae62ad0b38f67f281fa7e38b5 Binary files /dev/null and b/Cribbage/bin/whist/Whist$Rank.class differ diff --git a/Cribbage/bin/whist/Whist$Suit.class b/Cribbage/bin/whist/Whist$Suit.class new file mode 100644 index 0000000000000000000000000000000000000000..37a6f4b258bf0ec4fde919239f3ecd872ad877ac Binary files /dev/null and b/Cribbage/bin/whist/Whist$Suit.class differ diff --git a/Cribbage/bin/whist/Whist$Trick.class b/Cribbage/bin/whist/Whist$Trick.class new file mode 100644 index 0000000000000000000000000000000000000000..d3cc3e1585459a3ba8aade6b59c29f0de997f5bb Binary files /dev/null and b/Cribbage/bin/whist/Whist$Trick.class differ diff --git a/Cribbage/bin/whist/Whist.class b/Cribbage/bin/whist/Whist.class new file mode 100644 index 0000000000000000000000000000000000000000..b61f704c922f71d0b58bdffa5ade2c286c730281 Binary files /dev/null and b/Cribbage/bin/whist/Whist.class differ diff --git a/Cribbage/cribbage.properties b/Cribbage/cribbage.properties new file mode 100644 index 0000000000000000000000000000000000000000..c9e8635a9c9831d8bfbd97036796b354a1f698ab --- /dev/null +++ b/Cribbage/cribbage.properties @@ -0,0 +1,10 @@ +Seed=55510 +#Seed=12345 +#Seed=1248 +#Seed=30006 +#Animate=true +#Animate=false +#Player0=cribbage.HumanPlayer +Player0=cribbage.RandomPlayer +#Player1=cribbage.HumanPlayer +Player1=cribbage.RandomPlayer diff --git a/Cribbage/dist/CGMauMau.jar b/Cribbage/dist/CGMauMau.jar new file mode 100644 index 0000000000000000000000000000000000000000..d0b3cb92f1b3e273ac90b1281ef4972d7ae20a1f Binary files /dev/null and b/Cribbage/dist/CGMauMau.jar differ diff --git a/Cribbage/dist/README.TXT b/Cribbage/dist/README.TXT new file mode 100644 index 0000000000000000000000000000000000000000..8782a57c76cd70ab1a1be02c5d13087bca41954a --- /dev/null +++ b/Cribbage/dist/README.TXT @@ -0,0 +1,32 @@ +======================== +BUILD OUTPUT DESCRIPTION +======================== + +When you build an Java application project that has a main class, the IDE +automatically copies all of the JAR +files on the projects classpath to your projects dist/lib folder. The IDE +also adds each of the JAR files to the Class-Path element in the application +JAR files manifest file (MANIFEST.MF). + +To run the project from the command line, go to the dist folder and +type the following: + +java -jar "CGMauMau.jar" + +To distribute this project, zip up the dist folder (including the lib folder) +and distribute the ZIP file. + +Notes: + +* If two JAR files on the project classpath have the same name, only the first +JAR file is copied to the lib folder. +* Only JAR files are copied to the lib folder. +If the classpath contains other types of files or folders, these files (folders) +are not copied. +* If a library on the projects classpath also has a Class-Path element +specified in the manifest,the content of the Class-Path element has to be on +the projects runtime path. +* To set a main class in a standard Java project, right-click the project node +in the Projects window and choose Properties. Then click Run and enter the +class name in the Main Class field. Alternatively, you can manually type the +class name in the manifest Main-Class element. diff --git a/Cribbage/dist/lib/JGameGrid.jar b/Cribbage/dist/lib/JGameGrid.jar new file mode 100644 index 0000000000000000000000000000000000000000..62dbba7aaa79d14118b3d75fbe3ba63233c5dab5 Binary files /dev/null and b/Cribbage/dist/lib/JGameGrid.jar differ diff --git a/Cribbage/out/production/Cribbage/bigclub.gif b/Cribbage/out/production/Cribbage/bigclub.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf07ff0a3b53c6cf1e69b1706b1fd8db76918d3c Binary files /dev/null and b/Cribbage/out/production/Cribbage/bigclub.gif differ diff --git a/Cribbage/out/production/Cribbage/bigclub1.gif b/Cribbage/out/production/Cribbage/bigclub1.gif new file mode 100644 index 0000000000000000000000000000000000000000..05336b86a536e9d0acf7f9670ea1c4ffae5667a8 Binary files /dev/null and b/Cribbage/out/production/Cribbage/bigclub1.gif differ diff --git a/Cribbage/out/production/Cribbage/bigdiamond.gif b/Cribbage/out/production/Cribbage/bigdiamond.gif new file mode 100644 index 0000000000000000000000000000000000000000..9db504ce64f62436dfd1328030e1ef556d903e09 Binary files /dev/null and b/Cribbage/out/production/Cribbage/bigdiamond.gif differ diff --git a/Cribbage/out/production/Cribbage/bigdiamond1.gif b/Cribbage/out/production/Cribbage/bigdiamond1.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8161d6a9004da4d773bc494c1562bbc2f06b248 Binary files /dev/null and b/Cribbage/out/production/Cribbage/bigdiamond1.gif differ diff --git a/Cribbage/out/production/Cribbage/bigheart.gif b/Cribbage/out/production/Cribbage/bigheart.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f23a079d6abfa1c6917757e254a8464e3011a08 Binary files /dev/null and b/Cribbage/out/production/Cribbage/bigheart.gif differ diff --git a/Cribbage/out/production/Cribbage/bigheart1.gif b/Cribbage/out/production/Cribbage/bigheart1.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b807f397489841697f7b7d332928949bc323661 Binary files /dev/null and b/Cribbage/out/production/Cribbage/bigheart1.gif differ diff --git a/Cribbage/out/production/Cribbage/bigspade.gif b/Cribbage/out/production/Cribbage/bigspade.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ac08a6d6ff783cc43f26681dfd043de028ec663 Binary files /dev/null and b/Cribbage/out/production/Cribbage/bigspade.gif differ diff --git a/Cribbage/out/production/Cribbage/bigspade1.gif b/Cribbage/out/production/Cribbage/bigspade1.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdef80f5ffb8f7408d7fb0e1fba774f35845342a Binary files /dev/null and b/Cribbage/out/production/Cribbage/bigspade1.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs0.gif b/Cribbage/out/production/Cribbage/clubs0.gif new file mode 100644 index 0000000000000000000000000000000000000000..b09b1b1a545259fb24bea4b914d96eb086dea1e6 Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs0.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs1.gif b/Cribbage/out/production/Cribbage/clubs1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b759a2a5d4a6de33dceb6b9631dfcfe56b86e49c Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs1.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs10.gif b/Cribbage/out/production/Cribbage/clubs10.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea992be2c7792818d7b2831e0e6a7285cfee879c Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs10.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs11.gif b/Cribbage/out/production/Cribbage/clubs11.gif new file mode 100644 index 0000000000000000000000000000000000000000..2100b55f9416e31db9ce27922653c51d96cb83a4 Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs11.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs12.gif b/Cribbage/out/production/Cribbage/clubs12.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e6906c7f7a6c7c3ae9bf848b46685784bbf14bd Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs12.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs2.gif b/Cribbage/out/production/Cribbage/clubs2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e900930019ca83fba5a85134a098cd643b9ff14b Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs2.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs3.gif b/Cribbage/out/production/Cribbage/clubs3.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c5d0e9f2a65db0c07ab0d25f9c9caa8ca16d6a1 Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs3.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs4.gif b/Cribbage/out/production/Cribbage/clubs4.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e8d094c1c3bf19415af28c4247ea7f3dfd4db3d Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs4.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs5.gif b/Cribbage/out/production/Cribbage/clubs5.gif new file mode 100644 index 0000000000000000000000000000000000000000..d232c33b15d8f6bbe2c66d8bfffb904757ecf4c4 Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs5.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs6.gif b/Cribbage/out/production/Cribbage/clubs6.gif new file mode 100644 index 0000000000000000000000000000000000000000..9da5b7d199bf6636256368ff17ecdfae0f329786 Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs6.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs7.gif b/Cribbage/out/production/Cribbage/clubs7.gif new file mode 100644 index 0000000000000000000000000000000000000000..a41ed29cf051efeea2dc7611b83a4711174f2675 Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs7.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs8.gif b/Cribbage/out/production/Cribbage/clubs8.gif new file mode 100644 index 0000000000000000000000000000000000000000..23169e94c52a995e63c3394ec7550f98297e885b Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs8.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs9.gif b/Cribbage/out/production/Cribbage/clubs9.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8625d25951aaff96dec177bb1b716d3d17fe605 Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs9.gif differ diff --git a/Cribbage/out/production/Cribbage/clubs_item_0.png b/Cribbage/out/production/Cribbage/clubs_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..544006b3d7d107e13c2fe8c83d904a5c50c9c8bc Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs_item_0.png differ diff --git a/Cribbage/out/production/Cribbage/clubs_item_1.png b/Cribbage/out/production/Cribbage/clubs_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9457f91f228433e1478e7226ac90d9a54671c2a0 Binary files /dev/null and b/Cribbage/out/production/Cribbage/clubs_item_1.png differ diff --git a/Cribbage/out/production/Cribbage/cover.gif b/Cribbage/out/production/Cribbage/cover.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfd99c6cff301d2e7d0bc475fabed7d193b62805 Binary files /dev/null and b/Cribbage/out/production/Cribbage/cover.gif differ diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$1.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b636d7c25768c7e14e9facd6fddfbb332c9f861f Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$1.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$MyCardValues.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$MyCardValues.class new file mode 100644 index 0000000000000000000000000000000000000000..7f88f19f23e274ea9f17e6786740ec458e7e9fe9 Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$MyCardValues.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Rank.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Rank.class new file mode 100644 index 0000000000000000000000000000000000000000..16191b6bcfbdc9d188c27062d7e8b7ff8834c356 Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Rank.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Segment.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Segment.class new file mode 100644 index 0000000000000000000000000000000000000000..c29a01eb38b299c3fdb4558b0fcae0c623362058 Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Segment.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage$Suit.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Suit.class new file mode 100644 index 0000000000000000000000000000000000000000..0feeb133f36e5eb1aad4401e9c03d61c2ce33e29 Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/Cribbage$Suit.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/Cribbage.class b/Cribbage/out/production/Cribbage/cribbage/Cribbage.class new file mode 100644 index 0000000000000000000000000000000000000000..4e8c9da01b16425c21278d4f249537f8e8c10bda Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/Cribbage.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/HumanPlayer$1.class b/Cribbage/out/production/Cribbage/cribbage/HumanPlayer$1.class new file mode 100644 index 0000000000000000000000000000000000000000..850da3e45b0f57766084548f06909ce10e5ff306 Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/HumanPlayer$1.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/HumanPlayer.class b/Cribbage/out/production/Cribbage/cribbage/HumanPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..e1c90c3e0a93ef7ef8fe035267d24c80fea43542 Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/HumanPlayer.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/IPlayer.class b/Cribbage/out/production/Cribbage/cribbage/IPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..0333e8d97086a0e9f30cbe899a0e3119540e16ea Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/IPlayer.class differ diff --git a/Cribbage/out/production/Cribbage/cribbage/RandomPlayer.class b/Cribbage/out/production/Cribbage/cribbage/RandomPlayer.class new file mode 100644 index 0000000000000000000000000000000000000000..eaa3ed0511150f297cccdea3787937151b946eb7 Binary files /dev/null and b/Cribbage/out/production/Cribbage/cribbage/RandomPlayer.class differ diff --git a/Cribbage/out/production/Cribbage/diamonds0.gif b/Cribbage/out/production/Cribbage/diamonds0.gif new file mode 100644 index 0000000000000000000000000000000000000000..9221184d63f3103b63fa4a2b753de1473ba94bbd Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds0.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds1.gif b/Cribbage/out/production/Cribbage/diamonds1.gif new file mode 100644 index 0000000000000000000000000000000000000000..53b3e862d8a86c6e95b0a08cc507aadea5170f5c Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds1.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds10.gif b/Cribbage/out/production/Cribbage/diamonds10.gif new file mode 100644 index 0000000000000000000000000000000000000000..21a4685ddedfcf4d50ad880ab0d378f05f28d48e Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds10.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds11.gif b/Cribbage/out/production/Cribbage/diamonds11.gif new file mode 100644 index 0000000000000000000000000000000000000000..d49072fab376463ca24612c614f908ae354491bf Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds11.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds12.gif b/Cribbage/out/production/Cribbage/diamonds12.gif new file mode 100644 index 0000000000000000000000000000000000000000..03005de0213edaf0ae4b4f1df74039d637ef434d Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds12.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds2.gif b/Cribbage/out/production/Cribbage/diamonds2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac60fcd93756cb31d0459d9faa05aa6e6aef26f3 Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds2.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds3.gif b/Cribbage/out/production/Cribbage/diamonds3.gif new file mode 100644 index 0000000000000000000000000000000000000000..c085929c54e2800068dffcd2bcc6e23e53468379 Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds3.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds4.gif b/Cribbage/out/production/Cribbage/diamonds4.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f8a7ca6ed6e6c3d80c7554b8ac270605e30d84e Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds4.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds5.gif b/Cribbage/out/production/Cribbage/diamonds5.gif new file mode 100644 index 0000000000000000000000000000000000000000..9576337617c8dbd94cfb18937155369b8fb6bfab Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds5.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds6.gif b/Cribbage/out/production/Cribbage/diamonds6.gif new file mode 100644 index 0000000000000000000000000000000000000000..b15bd06ed28640b2210dfddc63d8462e1c1edecf Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds6.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds7.gif b/Cribbage/out/production/Cribbage/diamonds7.gif new file mode 100644 index 0000000000000000000000000000000000000000..6016d2d0958c6e212945e829f2b7ca34cb0a3983 Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds7.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds8.gif b/Cribbage/out/production/Cribbage/diamonds8.gif new file mode 100644 index 0000000000000000000000000000000000000000..d113c5fb88a48e023df5db4409fa03af6b062d15 Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds8.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds9.gif b/Cribbage/out/production/Cribbage/diamonds9.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc76bf48478624c9960fd11c7cd86569a9fb8dd Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds9.gif differ diff --git a/Cribbage/out/production/Cribbage/diamonds_item_0.png b/Cribbage/out/production/Cribbage/diamonds_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9726895725b497e5c4f30d73a081a3fbeb29a31a Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds_item_0.png differ diff --git a/Cribbage/out/production/Cribbage/diamonds_item_1.png b/Cribbage/out/production/Cribbage/diamonds_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f8260e5a0af3c467b60587cdc1c95c0e4aeeb71e Binary files /dev/null and b/Cribbage/out/production/Cribbage/diamonds_item_1.png differ diff --git a/Cribbage/out/production/Cribbage/done30_0.gif b/Cribbage/out/production/Cribbage/done30_0.gif new file mode 100644 index 0000000000000000000000000000000000000000..c187a5919d751e485e61e2f4f6ce859bbf698bd7 Binary files /dev/null and b/Cribbage/out/production/Cribbage/done30_0.gif differ diff --git a/Cribbage/out/production/Cribbage/done30_1.gif b/Cribbage/out/production/Cribbage/done30_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..9df9957fcb9656c91a332714bb0f69a145c4012b Binary files /dev/null and b/Cribbage/out/production/Cribbage/done30_1.gif differ diff --git a/Cribbage/out/production/Cribbage/done30_2.gif b/Cribbage/out/production/Cribbage/done30_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..701079d05ff3cbe7518d25f9b5b872a8c1b7a00d Binary files /dev/null and b/Cribbage/out/production/Cribbage/done30_2.gif differ diff --git a/Cribbage/out/production/Cribbage/gameover.gif b/Cribbage/out/production/Cribbage/gameover.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bf6f867bfd94a695ad3bea957facf2e6913777b Binary files /dev/null and b/Cribbage/out/production/Cribbage/gameover.gif differ diff --git a/Cribbage/out/production/Cribbage/heart.gif b/Cribbage/out/production/Cribbage/heart.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bbef26dc29180d802ffee238352951e0c1bbb40 Binary files /dev/null and b/Cribbage/out/production/Cribbage/heart.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts0.gif b/Cribbage/out/production/Cribbage/hearts0.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a2eba4f37c32d351bd2ce1b9762e0480ff4dba7 Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts0.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts1.gif b/Cribbage/out/production/Cribbage/hearts1.gif new file mode 100644 index 0000000000000000000000000000000000000000..207a17a2cafe45009624f2f7fed504c0fff6c64f Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts1.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts10.gif b/Cribbage/out/production/Cribbage/hearts10.gif new file mode 100644 index 0000000000000000000000000000000000000000..2caa057493d4773df9f68b439bfaa0cc143126b2 Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts10.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts11.gif b/Cribbage/out/production/Cribbage/hearts11.gif new file mode 100644 index 0000000000000000000000000000000000000000..86d902739b6863b77d0df04b10c533693272de16 Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts11.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts12.gif b/Cribbage/out/production/Cribbage/hearts12.gif new file mode 100644 index 0000000000000000000000000000000000000000..215ea796a059d29116096599355f26a52daf5f41 Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts12.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts2.gif b/Cribbage/out/production/Cribbage/hearts2.gif new file mode 100644 index 0000000000000000000000000000000000000000..4de929dfecfc23ca8dbf7fd5a4f96c5576539884 Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts2.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts3.gif b/Cribbage/out/production/Cribbage/hearts3.gif new file mode 100644 index 0000000000000000000000000000000000000000..3adf4cf8767e9601e51e93346e3357422a45a114 Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts3.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts4.gif b/Cribbage/out/production/Cribbage/hearts4.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e2efc30ff6bdb1387e3bfc78dd5f97157f6ed0e Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts4.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts5.gif b/Cribbage/out/production/Cribbage/hearts5.gif new file mode 100644 index 0000000000000000000000000000000000000000..229494ff41ecac31c719dfeff94974846b96d160 Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts5.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts6.gif b/Cribbage/out/production/Cribbage/hearts6.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3dd246487cbf5749b38ede5e2cc229ac3eb68e Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts6.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts7.gif b/Cribbage/out/production/Cribbage/hearts7.gif new file mode 100644 index 0000000000000000000000000000000000000000..f40098add803c6c42f8267467d6c4dc1d1fd1a2c Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts7.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts8.gif b/Cribbage/out/production/Cribbage/hearts8.gif new file mode 100644 index 0000000000000000000000000000000000000000..f94d0738c06e9f39e0f4f893abf426410c5dcffb Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts8.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts9.gif b/Cribbage/out/production/Cribbage/hearts9.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ae5e961e0107a706dd5464f6fb7940acc5f9c4b Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts9.gif differ diff --git a/Cribbage/out/production/Cribbage/hearts_item_0.png b/Cribbage/out/production/Cribbage/hearts_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..312c4386df104908d8a447352f04b27ad7f47da4 Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts_item_0.png differ diff --git a/Cribbage/out/production/Cribbage/hearts_item_1.png b/Cribbage/out/production/Cribbage/hearts_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2ffe684164497d5770917a1fe8ee58b0cd77cf Binary files /dev/null and b/Cribbage/out/production/Cribbage/hearts_item_1.png differ diff --git a/Cribbage/out/production/Cribbage/joker1.gif b/Cribbage/out/production/Cribbage/joker1.gif new file mode 100644 index 0000000000000000000000000000000000000000..492027bd100f3e2c491f47132229678770b76bd0 Binary files /dev/null and b/Cribbage/out/production/Cribbage/joker1.gif differ diff --git a/Cribbage/out/production/Cribbage/joker2.gif b/Cribbage/out/production/Cribbage/joker2.gif new file mode 100644 index 0000000000000000000000000000000000000000..51ab6d473a7a972398496395ce86d8f5d5b34738 Binary files /dev/null and b/Cribbage/out/production/Cribbage/joker2.gif differ diff --git a/Cribbage/out/production/Cribbage/observer/Activity.class b/Cribbage/out/production/Cribbage/observer/Activity.class new file mode 100644 index 0000000000000000000000000000000000000000..92854f2cf543f1c0ab12a2961adeeaf0c5663830 Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/Activity.class differ diff --git a/Cribbage/out/production/Cribbage/observer/CribbageHandCards.class b/Cribbage/out/production/Cribbage/observer/CribbageHandCards.class new file mode 100644 index 0000000000000000000000000000000000000000..bc8c2aa9c134967199547313e9c91007dace4f50 Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/CribbageHandCards.class differ diff --git a/Cribbage/out/production/Cribbage/observer/Fifteens.class b/Cribbage/out/production/Cribbage/observer/Fifteens.class new file mode 100644 index 0000000000000000000000000000000000000000..51db39eb40ecfe53207c37eb235cbdf3ae292b0c Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/Fifteens.class differ diff --git a/Cribbage/out/production/Cribbage/observer/Flush.class b/Cribbage/out/production/Cribbage/observer/Flush.class new file mode 100644 index 0000000000000000000000000000000000000000..6ea2ed63dbdd3ef890751c4a674f2f931d3e053f Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/Flush.class differ diff --git a/Cribbage/out/production/Cribbage/observer/HandCards.class b/Cribbage/out/production/Cribbage/observer/HandCards.class new file mode 100644 index 0000000000000000000000000000000000000000..2e8a71982d23dbe35b3c8a5535c1f3534486a1dd Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/HandCards.class differ diff --git a/Cribbage/out/production/Cribbage/observer/Jack.class b/Cribbage/out/production/Cribbage/observer/Jack.class new file mode 100644 index 0000000000000000000000000000000000000000..aee9e0d83fc8d0035fe6d1a1ec88a5c5950f0b70 Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/Jack.class differ diff --git a/Cribbage/out/production/Cribbage/observer/Pairs.class b/Cribbage/out/production/Cribbage/observer/Pairs.class new file mode 100644 index 0000000000000000000000000000000000000000..f2cc2ee7a40434ffbc765e14d63906ad15aa125b Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/Pairs.class differ diff --git a/Cribbage/out/production/Cribbage/observer/Rule.class b/Cribbage/out/production/Cribbage/observer/Rule.class new file mode 100644 index 0000000000000000000000000000000000000000..9060168db4c48be16f3c57ce88119cc99ea1f392 Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/Rule.class differ diff --git a/Cribbage/out/production/Cribbage/observer/Runs.class b/Cribbage/out/production/Cribbage/observer/Runs.class new file mode 100644 index 0000000000000000000000000000000000000000..4c85fd984ecb2564a6ab05cdf35f0515c9f8c668 Binary files /dev/null and b/Cribbage/out/production/Cribbage/observer/Runs.class differ diff --git a/Cribbage/out/production/Cribbage/original/bigclub.gif b/Cribbage/out/production/Cribbage/original/bigclub.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf07ff0a3b53c6cf1e69b1706b1fd8db76918d3c Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/bigclub.gif differ diff --git a/Cribbage/out/production/Cribbage/original/bigclub1.gif b/Cribbage/out/production/Cribbage/original/bigclub1.gif new file mode 100644 index 0000000000000000000000000000000000000000..05336b86a536e9d0acf7f9670ea1c4ffae5667a8 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/bigclub1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/bigdiamond.gif b/Cribbage/out/production/Cribbage/original/bigdiamond.gif new file mode 100644 index 0000000000000000000000000000000000000000..9db504ce64f62436dfd1328030e1ef556d903e09 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/bigdiamond.gif differ diff --git a/Cribbage/out/production/Cribbage/original/bigdiamond1.gif b/Cribbage/out/production/Cribbage/original/bigdiamond1.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8161d6a9004da4d773bc494c1562bbc2f06b248 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/bigdiamond1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/bigheart.gif b/Cribbage/out/production/Cribbage/original/bigheart.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f23a079d6abfa1c6917757e254a8464e3011a08 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/bigheart.gif differ diff --git a/Cribbage/out/production/Cribbage/original/bigheart1.gif b/Cribbage/out/production/Cribbage/original/bigheart1.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b807f397489841697f7b7d332928949bc323661 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/bigheart1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/bigspade.gif b/Cribbage/out/production/Cribbage/original/bigspade.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ac08a6d6ff783cc43f26681dfd043de028ec663 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/bigspade.gif differ diff --git a/Cribbage/out/production/Cribbage/original/bigspade1.gif b/Cribbage/out/production/Cribbage/original/bigspade1.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdef80f5ffb8f7408d7fb0e1fba774f35845342a Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/bigspade1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs0.gif b/Cribbage/out/production/Cribbage/original/clubs0.gif new file mode 100644 index 0000000000000000000000000000000000000000..b09b1b1a545259fb24bea4b914d96eb086dea1e6 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs0.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs1.gif b/Cribbage/out/production/Cribbage/original/clubs1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b759a2a5d4a6de33dceb6b9631dfcfe56b86e49c Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs2.gif b/Cribbage/out/production/Cribbage/original/clubs2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e900930019ca83fba5a85134a098cd643b9ff14b Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs2.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs3.gif b/Cribbage/out/production/Cribbage/original/clubs3.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c5d0e9f2a65db0c07ab0d25f9c9caa8ca16d6a1 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs3.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs4.gif b/Cribbage/out/production/Cribbage/original/clubs4.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e8d094c1c3bf19415af28c4247ea7f3dfd4db3d Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs4.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs5.gif b/Cribbage/out/production/Cribbage/original/clubs5.gif new file mode 100644 index 0000000000000000000000000000000000000000..d232c33b15d8f6bbe2c66d8bfffb904757ecf4c4 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs5.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs6.gif b/Cribbage/out/production/Cribbage/original/clubs6.gif new file mode 100644 index 0000000000000000000000000000000000000000..9da5b7d199bf6636256368ff17ecdfae0f329786 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs6.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs7.gif b/Cribbage/out/production/Cribbage/original/clubs7.gif new file mode 100644 index 0000000000000000000000000000000000000000..a41ed29cf051efeea2dc7611b83a4711174f2675 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs7.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs8.gif b/Cribbage/out/production/Cribbage/original/clubs8.gif new file mode 100644 index 0000000000000000000000000000000000000000..23169e94c52a995e63c3394ec7550f98297e885b Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs8.gif differ diff --git a/Cribbage/out/production/Cribbage/original/clubs_item_0.png b/Cribbage/out/production/Cribbage/original/clubs_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..544006b3d7d107e13c2fe8c83d904a5c50c9c8bc Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs_item_0.png differ diff --git a/Cribbage/out/production/Cribbage/original/clubs_item_1.png b/Cribbage/out/production/Cribbage/original/clubs_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9457f91f228433e1478e7226ac90d9a54671c2a0 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/clubs_item_1.png differ diff --git a/Cribbage/out/production/Cribbage/original/cover.gif b/Cribbage/out/production/Cribbage/original/cover.gif new file mode 100644 index 0000000000000000000000000000000000000000..a048d8afdfb442cddfc5e7d07f9174881f41c73f Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/cover.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds0.gif b/Cribbage/out/production/Cribbage/original/diamonds0.gif new file mode 100644 index 0000000000000000000000000000000000000000..9221184d63f3103b63fa4a2b753de1473ba94bbd Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds0.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds1.gif b/Cribbage/out/production/Cribbage/original/diamonds1.gif new file mode 100644 index 0000000000000000000000000000000000000000..53b3e862d8a86c6e95b0a08cc507aadea5170f5c Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds2.gif b/Cribbage/out/production/Cribbage/original/diamonds2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac60fcd93756cb31d0459d9faa05aa6e6aef26f3 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds2.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds3.gif b/Cribbage/out/production/Cribbage/original/diamonds3.gif new file mode 100644 index 0000000000000000000000000000000000000000..c085929c54e2800068dffcd2bcc6e23e53468379 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds3.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds4.gif b/Cribbage/out/production/Cribbage/original/diamonds4.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f8a7ca6ed6e6c3d80c7554b8ac270605e30d84e Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds4.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds5.gif b/Cribbage/out/production/Cribbage/original/diamonds5.gif new file mode 100644 index 0000000000000000000000000000000000000000..9576337617c8dbd94cfb18937155369b8fb6bfab Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds5.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds6.gif b/Cribbage/out/production/Cribbage/original/diamonds6.gif new file mode 100644 index 0000000000000000000000000000000000000000..b15bd06ed28640b2210dfddc63d8462e1c1edecf Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds6.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds7.gif b/Cribbage/out/production/Cribbage/original/diamonds7.gif new file mode 100644 index 0000000000000000000000000000000000000000..6016d2d0958c6e212945e829f2b7ca34cb0a3983 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds7.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds8.gif b/Cribbage/out/production/Cribbage/original/diamonds8.gif new file mode 100644 index 0000000000000000000000000000000000000000..d113c5fb88a48e023df5db4409fa03af6b062d15 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds8.gif differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds_item_0.png b/Cribbage/out/production/Cribbage/original/diamonds_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9726895725b497e5c4f30d73a081a3fbeb29a31a Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds_item_0.png differ diff --git a/Cribbage/out/production/Cribbage/original/diamonds_item_1.png b/Cribbage/out/production/Cribbage/original/diamonds_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f8260e5a0af3c467b60587cdc1c95c0e4aeeb71e Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/diamonds_item_1.png differ diff --git a/Cribbage/out/production/Cribbage/original/done30_0.gif b/Cribbage/out/production/Cribbage/original/done30_0.gif new file mode 100644 index 0000000000000000000000000000000000000000..c187a5919d751e485e61e2f4f6ce859bbf698bd7 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/done30_0.gif differ diff --git a/Cribbage/out/production/Cribbage/original/done30_1.gif b/Cribbage/out/production/Cribbage/original/done30_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..9df9957fcb9656c91a332714bb0f69a145c4012b Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/done30_1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/done30_2.gif b/Cribbage/out/production/Cribbage/original/done30_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..701079d05ff3cbe7518d25f9b5b872a8c1b7a00d Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/done30_2.gif differ diff --git a/Cribbage/out/production/Cribbage/original/gameover.gif b/Cribbage/out/production/Cribbage/original/gameover.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bf6f867bfd94a695ad3bea957facf2e6913777b Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/gameover.gif differ diff --git a/Cribbage/out/production/Cribbage/original/heart.gif b/Cribbage/out/production/Cribbage/original/heart.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bbef26dc29180d802ffee238352951e0c1bbb40 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/heart.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts0.gif b/Cribbage/out/production/Cribbage/original/hearts0.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a2eba4f37c32d351bd2ce1b9762e0480ff4dba7 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts0.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts1.gif b/Cribbage/out/production/Cribbage/original/hearts1.gif new file mode 100644 index 0000000000000000000000000000000000000000..207a17a2cafe45009624f2f7fed504c0fff6c64f Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts2.gif b/Cribbage/out/production/Cribbage/original/hearts2.gif new file mode 100644 index 0000000000000000000000000000000000000000..4de929dfecfc23ca8dbf7fd5a4f96c5576539884 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts2.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts3.gif b/Cribbage/out/production/Cribbage/original/hearts3.gif new file mode 100644 index 0000000000000000000000000000000000000000..3adf4cf8767e9601e51e93346e3357422a45a114 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts3.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts4.gif b/Cribbage/out/production/Cribbage/original/hearts4.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e2efc30ff6bdb1387e3bfc78dd5f97157f6ed0e Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts4.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts5.gif b/Cribbage/out/production/Cribbage/original/hearts5.gif new file mode 100644 index 0000000000000000000000000000000000000000..229494ff41ecac31c719dfeff94974846b96d160 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts5.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts6.gif b/Cribbage/out/production/Cribbage/original/hearts6.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3dd246487cbf5749b38ede5e2cc229ac3eb68e Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts6.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts7.gif b/Cribbage/out/production/Cribbage/original/hearts7.gif new file mode 100644 index 0000000000000000000000000000000000000000..f40098add803c6c42f8267467d6c4dc1d1fd1a2c Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts7.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts8.gif b/Cribbage/out/production/Cribbage/original/hearts8.gif new file mode 100644 index 0000000000000000000000000000000000000000..f94d0738c06e9f39e0f4f893abf426410c5dcffb Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts8.gif differ diff --git a/Cribbage/out/production/Cribbage/original/hearts_item_0.png b/Cribbage/out/production/Cribbage/original/hearts_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..312c4386df104908d8a447352f04b27ad7f47da4 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts_item_0.png differ diff --git a/Cribbage/out/production/Cribbage/original/hearts_item_1.png b/Cribbage/out/production/Cribbage/original/hearts_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2ffe684164497d5770917a1fe8ee58b0cd77cf Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/hearts_item_1.png differ diff --git a/Cribbage/out/production/Cribbage/original/reshuffle.gif b/Cribbage/out/production/Cribbage/original/reshuffle.gif new file mode 100644 index 0000000000000000000000000000000000000000..284a4f15d4d54f7181654bf85f014d5bc36abc89 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/reshuffle.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades0.gif b/Cribbage/out/production/Cribbage/original/spades0.gif new file mode 100644 index 0000000000000000000000000000000000000000..914f782f9e45f1f9002d1a042313bc65a48044b2 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades0.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades1.gif b/Cribbage/out/production/Cribbage/original/spades1.gif new file mode 100644 index 0000000000000000000000000000000000000000..5eae07d43f4eb262895f1dce7ffb0e333f91f3f4 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades1.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades2.gif b/Cribbage/out/production/Cribbage/original/spades2.gif new file mode 100644 index 0000000000000000000000000000000000000000..76eb11c896dd532361888e8f833f95b59ea6af9f Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades2.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades3.gif b/Cribbage/out/production/Cribbage/original/spades3.gif new file mode 100644 index 0000000000000000000000000000000000000000..361ab8b9b439ed57f34a531b236a1c7c968222cc Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades3.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades4.gif b/Cribbage/out/production/Cribbage/original/spades4.gif new file mode 100644 index 0000000000000000000000000000000000000000..24f42af55aeb2a7c81e8919be3cde03050e2585d Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades4.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades5.gif b/Cribbage/out/production/Cribbage/original/spades5.gif new file mode 100644 index 0000000000000000000000000000000000000000..b126a244c1e537716acd11ac054d8ac8d241868d Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades5.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades6.gif b/Cribbage/out/production/Cribbage/original/spades6.gif new file mode 100644 index 0000000000000000000000000000000000000000..c43349183e258e023ef81e84ddf0516646832cf9 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades6.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades7.gif b/Cribbage/out/production/Cribbage/original/spades7.gif new file mode 100644 index 0000000000000000000000000000000000000000..1201366d9b7fa30abccc306f4ad39838e06ce075 Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades7.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades8.gif b/Cribbage/out/production/Cribbage/original/spades8.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc2b108a6884f333d9e3cdb3fbb820c77bce086d Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades8.gif differ diff --git a/Cribbage/out/production/Cribbage/original/spades_item_0.png b/Cribbage/out/production/Cribbage/original/spades_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d186152763600cfd29bd42fb7ff963e754b294d Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades_item_0.png differ diff --git a/Cribbage/out/production/Cribbage/original/spades_item_1.png b/Cribbage/out/production/Cribbage/original/spades_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d57fc7081cf8d68e9f62b6dcc1cdda08a5dcce0b Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/spades_item_1.png differ diff --git a/Cribbage/out/production/Cribbage/original/text_item.png b/Cribbage/out/production/Cribbage/original/text_item.png new file mode 100644 index 0000000000000000000000000000000000000000..1dad1788f32bb81b51615da0809372a50fc5a6ee Binary files /dev/null and b/Cribbage/out/production/Cribbage/original/text_item.png differ diff --git a/Cribbage/out/production/Cribbage/reshuffle.gif b/Cribbage/out/production/Cribbage/reshuffle.gif new file mode 100644 index 0000000000000000000000000000000000000000..284a4f15d4d54f7181654bf85f014d5bc36abc89 Binary files /dev/null and b/Cribbage/out/production/Cribbage/reshuffle.gif differ diff --git a/Cribbage/out/production/Cribbage/spades0.gif b/Cribbage/out/production/Cribbage/spades0.gif new file mode 100644 index 0000000000000000000000000000000000000000..914f782f9e45f1f9002d1a042313bc65a48044b2 Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades0.gif differ diff --git a/Cribbage/out/production/Cribbage/spades1.gif b/Cribbage/out/production/Cribbage/spades1.gif new file mode 100644 index 0000000000000000000000000000000000000000..5eae07d43f4eb262895f1dce7ffb0e333f91f3f4 Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades1.gif differ diff --git a/Cribbage/out/production/Cribbage/spades10.gif b/Cribbage/out/production/Cribbage/spades10.gif new file mode 100644 index 0000000000000000000000000000000000000000..f063796c35994570b33c5cc36d6594db27dd5456 Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades10.gif differ diff --git a/Cribbage/out/production/Cribbage/spades11.gif b/Cribbage/out/production/Cribbage/spades11.gif new file mode 100644 index 0000000000000000000000000000000000000000..869576f30243cab007a12b3d44eda5b4490f477f Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades11.gif differ diff --git a/Cribbage/out/production/Cribbage/spades12.gif b/Cribbage/out/production/Cribbage/spades12.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c2082aa83f3caff62b6a8757834ef87c8461377 Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades12.gif differ diff --git a/Cribbage/out/production/Cribbage/spades2.gif b/Cribbage/out/production/Cribbage/spades2.gif new file mode 100644 index 0000000000000000000000000000000000000000..76eb11c896dd532361888e8f833f95b59ea6af9f Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades2.gif differ diff --git a/Cribbage/out/production/Cribbage/spades3.gif b/Cribbage/out/production/Cribbage/spades3.gif new file mode 100644 index 0000000000000000000000000000000000000000..361ab8b9b439ed57f34a531b236a1c7c968222cc Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades3.gif differ diff --git a/Cribbage/out/production/Cribbage/spades4.gif b/Cribbage/out/production/Cribbage/spades4.gif new file mode 100644 index 0000000000000000000000000000000000000000..24f42af55aeb2a7c81e8919be3cde03050e2585d Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades4.gif differ diff --git a/Cribbage/out/production/Cribbage/spades5.gif b/Cribbage/out/production/Cribbage/spades5.gif new file mode 100644 index 0000000000000000000000000000000000000000..b126a244c1e537716acd11ac054d8ac8d241868d Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades5.gif differ diff --git a/Cribbage/out/production/Cribbage/spades6.gif b/Cribbage/out/production/Cribbage/spades6.gif new file mode 100644 index 0000000000000000000000000000000000000000..c43349183e258e023ef81e84ddf0516646832cf9 Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades6.gif differ diff --git a/Cribbage/out/production/Cribbage/spades7.gif b/Cribbage/out/production/Cribbage/spades7.gif new file mode 100644 index 0000000000000000000000000000000000000000..1201366d9b7fa30abccc306f4ad39838e06ce075 Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades7.gif differ diff --git a/Cribbage/out/production/Cribbage/spades8.gif b/Cribbage/out/production/Cribbage/spades8.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc2b108a6884f333d9e3cdb3fbb820c77bce086d Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades8.gif differ diff --git a/Cribbage/out/production/Cribbage/spades9.gif b/Cribbage/out/production/Cribbage/spades9.gif new file mode 100644 index 0000000000000000000000000000000000000000..da72717ebc3bd4cb0ff75340dcfd658da2e7f3a2 Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades9.gif differ diff --git a/Cribbage/out/production/Cribbage/spades_item_0.png b/Cribbage/out/production/Cribbage/spades_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d186152763600cfd29bd42fb7ff963e754b294d Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades_item_0.png differ diff --git a/Cribbage/out/production/Cribbage/spades_item_1.png b/Cribbage/out/production/Cribbage/spades_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d57fc7081cf8d68e9f62b6dcc1cdda08a5dcce0b Binary files /dev/null and b/Cribbage/out/production/Cribbage/spades_item_1.png differ diff --git a/Cribbage/out/production/Cribbage/text_item.png b/Cribbage/out/production/Cribbage/text_item.png new file mode 100644 index 0000000000000000000000000000000000000000..1dad1788f32bb81b51615da0809372a50fc5a6ee Binary files /dev/null and b/Cribbage/out/production/Cribbage/text_item.png differ diff --git a/Cribbage/sample.log b/Cribbage/sample.log new file mode 100644 index 0000000000000000000000000000000000000000..b72e4de0386cc6f059ed52bc256d5c080185d879 --- /dev/null +++ b/Cribbage/sample.log @@ -0,0 +1,25 @@ +seed,55510 +cribbage.RandomPlayer,P0 +cribbage.RandomPlayer,P1 +deal,P0,[2C,2H,7C,QC,QD,KH] +deal,P1,[AD,AH,TD,JS,QH,KC] +discard,P0,[2C,QC] +discard,P1,[JS,KC] +starter,8H +play,P0,2,2H +play,P1,3,AD +play,P0,13,QD +play,P1,23,QH +score,P1,2,2,pair +play,P0,30,7C +play,P1,31,AH +score,P1,4,2,thirtyone +play,P0,10,KH +play,P1,20,TD +score,P1,5,1,go +show,P0,8H+[2H,7C,QD,KH] +score,P0,2,2,fifteen,[7C,8H] +show,P1,8H+[AD,AH,TD,QH] +score,P1,7,2,pair2,[AD,AH] +show,P1,8H+[2C,JS,QC,KC] +score,P1,10,3,run3,[JS,QC,KC] diff --git a/Cribbage/sprites/bigclub.gif b/Cribbage/sprites/bigclub.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf07ff0a3b53c6cf1e69b1706b1fd8db76918d3c Binary files /dev/null and b/Cribbage/sprites/bigclub.gif differ diff --git a/Cribbage/sprites/bigclub1.gif b/Cribbage/sprites/bigclub1.gif new file mode 100644 index 0000000000000000000000000000000000000000..05336b86a536e9d0acf7f9670ea1c4ffae5667a8 Binary files /dev/null and b/Cribbage/sprites/bigclub1.gif differ diff --git a/Cribbage/sprites/bigdiamond.gif b/Cribbage/sprites/bigdiamond.gif new file mode 100644 index 0000000000000000000000000000000000000000..9db504ce64f62436dfd1328030e1ef556d903e09 Binary files /dev/null and b/Cribbage/sprites/bigdiamond.gif differ diff --git a/Cribbage/sprites/bigdiamond1.gif b/Cribbage/sprites/bigdiamond1.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8161d6a9004da4d773bc494c1562bbc2f06b248 Binary files /dev/null and b/Cribbage/sprites/bigdiamond1.gif differ diff --git a/Cribbage/sprites/bigheart.gif b/Cribbage/sprites/bigheart.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f23a079d6abfa1c6917757e254a8464e3011a08 Binary files /dev/null and b/Cribbage/sprites/bigheart.gif differ diff --git a/Cribbage/sprites/bigheart1.gif b/Cribbage/sprites/bigheart1.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b807f397489841697f7b7d332928949bc323661 Binary files /dev/null and b/Cribbage/sprites/bigheart1.gif differ diff --git a/Cribbage/sprites/bigspade.gif b/Cribbage/sprites/bigspade.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ac08a6d6ff783cc43f26681dfd043de028ec663 Binary files /dev/null and b/Cribbage/sprites/bigspade.gif differ diff --git a/Cribbage/sprites/bigspade1.gif b/Cribbage/sprites/bigspade1.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdef80f5ffb8f7408d7fb0e1fba774f35845342a Binary files /dev/null and b/Cribbage/sprites/bigspade1.gif differ diff --git a/Cribbage/sprites/clubs0.gif b/Cribbage/sprites/clubs0.gif new file mode 100644 index 0000000000000000000000000000000000000000..b09b1b1a545259fb24bea4b914d96eb086dea1e6 Binary files /dev/null and b/Cribbage/sprites/clubs0.gif differ diff --git a/Cribbage/sprites/clubs1.gif b/Cribbage/sprites/clubs1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b759a2a5d4a6de33dceb6b9631dfcfe56b86e49c Binary files /dev/null and b/Cribbage/sprites/clubs1.gif differ diff --git a/Cribbage/sprites/clubs10.gif b/Cribbage/sprites/clubs10.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea992be2c7792818d7b2831e0e6a7285cfee879c Binary files /dev/null and b/Cribbage/sprites/clubs10.gif differ diff --git a/Cribbage/sprites/clubs11.gif b/Cribbage/sprites/clubs11.gif new file mode 100644 index 0000000000000000000000000000000000000000..2100b55f9416e31db9ce27922653c51d96cb83a4 Binary files /dev/null and b/Cribbage/sprites/clubs11.gif differ diff --git a/Cribbage/sprites/clubs12.gif b/Cribbage/sprites/clubs12.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e6906c7f7a6c7c3ae9bf848b46685784bbf14bd Binary files /dev/null and b/Cribbage/sprites/clubs12.gif differ diff --git a/Cribbage/sprites/clubs2.gif b/Cribbage/sprites/clubs2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e900930019ca83fba5a85134a098cd643b9ff14b Binary files /dev/null and b/Cribbage/sprites/clubs2.gif differ diff --git a/Cribbage/sprites/clubs3.gif b/Cribbage/sprites/clubs3.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c5d0e9f2a65db0c07ab0d25f9c9caa8ca16d6a1 Binary files /dev/null and b/Cribbage/sprites/clubs3.gif differ diff --git a/Cribbage/sprites/clubs4.gif b/Cribbage/sprites/clubs4.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e8d094c1c3bf19415af28c4247ea7f3dfd4db3d Binary files /dev/null and b/Cribbage/sprites/clubs4.gif differ diff --git a/Cribbage/sprites/clubs5.gif b/Cribbage/sprites/clubs5.gif new file mode 100644 index 0000000000000000000000000000000000000000..d232c33b15d8f6bbe2c66d8bfffb904757ecf4c4 Binary files /dev/null and b/Cribbage/sprites/clubs5.gif differ diff --git a/Cribbage/sprites/clubs6.gif b/Cribbage/sprites/clubs6.gif new file mode 100644 index 0000000000000000000000000000000000000000..9da5b7d199bf6636256368ff17ecdfae0f329786 Binary files /dev/null and b/Cribbage/sprites/clubs6.gif differ diff --git a/Cribbage/sprites/clubs7.gif b/Cribbage/sprites/clubs7.gif new file mode 100644 index 0000000000000000000000000000000000000000..a41ed29cf051efeea2dc7611b83a4711174f2675 Binary files /dev/null and b/Cribbage/sprites/clubs7.gif differ diff --git a/Cribbage/sprites/clubs8.gif b/Cribbage/sprites/clubs8.gif new file mode 100644 index 0000000000000000000000000000000000000000..23169e94c52a995e63c3394ec7550f98297e885b Binary files /dev/null and b/Cribbage/sprites/clubs8.gif differ diff --git a/Cribbage/sprites/clubs9.gif b/Cribbage/sprites/clubs9.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8625d25951aaff96dec177bb1b716d3d17fe605 Binary files /dev/null and b/Cribbage/sprites/clubs9.gif differ diff --git a/Cribbage/sprites/clubs_item_0.png b/Cribbage/sprites/clubs_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..544006b3d7d107e13c2fe8c83d904a5c50c9c8bc Binary files /dev/null and b/Cribbage/sprites/clubs_item_0.png differ diff --git a/Cribbage/sprites/clubs_item_1.png b/Cribbage/sprites/clubs_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9457f91f228433e1478e7226ac90d9a54671c2a0 Binary files /dev/null and b/Cribbage/sprites/clubs_item_1.png differ diff --git a/Cribbage/sprites/cover.gif b/Cribbage/sprites/cover.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfd99c6cff301d2e7d0bc475fabed7d193b62805 Binary files /dev/null and b/Cribbage/sprites/cover.gif differ diff --git a/Cribbage/sprites/diamonds0.gif b/Cribbage/sprites/diamonds0.gif new file mode 100644 index 0000000000000000000000000000000000000000..9221184d63f3103b63fa4a2b753de1473ba94bbd Binary files /dev/null and b/Cribbage/sprites/diamonds0.gif differ diff --git a/Cribbage/sprites/diamonds1.gif b/Cribbage/sprites/diamonds1.gif new file mode 100644 index 0000000000000000000000000000000000000000..53b3e862d8a86c6e95b0a08cc507aadea5170f5c Binary files /dev/null and b/Cribbage/sprites/diamonds1.gif differ diff --git a/Cribbage/sprites/diamonds10.gif b/Cribbage/sprites/diamonds10.gif new file mode 100644 index 0000000000000000000000000000000000000000..21a4685ddedfcf4d50ad880ab0d378f05f28d48e Binary files /dev/null and b/Cribbage/sprites/diamonds10.gif differ diff --git a/Cribbage/sprites/diamonds11.gif b/Cribbage/sprites/diamonds11.gif new file mode 100644 index 0000000000000000000000000000000000000000..d49072fab376463ca24612c614f908ae354491bf Binary files /dev/null and b/Cribbage/sprites/diamonds11.gif differ diff --git a/Cribbage/sprites/diamonds12.gif b/Cribbage/sprites/diamonds12.gif new file mode 100644 index 0000000000000000000000000000000000000000..03005de0213edaf0ae4b4f1df74039d637ef434d Binary files /dev/null and b/Cribbage/sprites/diamonds12.gif differ diff --git a/Cribbage/sprites/diamonds2.gif b/Cribbage/sprites/diamonds2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac60fcd93756cb31d0459d9faa05aa6e6aef26f3 Binary files /dev/null and b/Cribbage/sprites/diamonds2.gif differ diff --git a/Cribbage/sprites/diamonds3.gif b/Cribbage/sprites/diamonds3.gif new file mode 100644 index 0000000000000000000000000000000000000000..c085929c54e2800068dffcd2bcc6e23e53468379 Binary files /dev/null and b/Cribbage/sprites/diamonds3.gif differ diff --git a/Cribbage/sprites/diamonds4.gif b/Cribbage/sprites/diamonds4.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f8a7ca6ed6e6c3d80c7554b8ac270605e30d84e Binary files /dev/null and b/Cribbage/sprites/diamonds4.gif differ diff --git a/Cribbage/sprites/diamonds5.gif b/Cribbage/sprites/diamonds5.gif new file mode 100644 index 0000000000000000000000000000000000000000..9576337617c8dbd94cfb18937155369b8fb6bfab Binary files /dev/null and b/Cribbage/sprites/diamonds5.gif differ diff --git a/Cribbage/sprites/diamonds6.gif b/Cribbage/sprites/diamonds6.gif new file mode 100644 index 0000000000000000000000000000000000000000..b15bd06ed28640b2210dfddc63d8462e1c1edecf Binary files /dev/null and b/Cribbage/sprites/diamonds6.gif differ diff --git a/Cribbage/sprites/diamonds7.gif b/Cribbage/sprites/diamonds7.gif new file mode 100644 index 0000000000000000000000000000000000000000..6016d2d0958c6e212945e829f2b7ca34cb0a3983 Binary files /dev/null and b/Cribbage/sprites/diamonds7.gif differ diff --git a/Cribbage/sprites/diamonds8.gif b/Cribbage/sprites/diamonds8.gif new file mode 100644 index 0000000000000000000000000000000000000000..d113c5fb88a48e023df5db4409fa03af6b062d15 Binary files /dev/null and b/Cribbage/sprites/diamonds8.gif differ diff --git a/Cribbage/sprites/diamonds9.gif b/Cribbage/sprites/diamonds9.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbc76bf48478624c9960fd11c7cd86569a9fb8dd Binary files /dev/null and b/Cribbage/sprites/diamonds9.gif differ diff --git a/Cribbage/sprites/diamonds_item_0.png b/Cribbage/sprites/diamonds_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9726895725b497e5c4f30d73a081a3fbeb29a31a Binary files /dev/null and b/Cribbage/sprites/diamonds_item_0.png differ diff --git a/Cribbage/sprites/diamonds_item_1.png b/Cribbage/sprites/diamonds_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f8260e5a0af3c467b60587cdc1c95c0e4aeeb71e Binary files /dev/null and b/Cribbage/sprites/diamonds_item_1.png differ diff --git a/Cribbage/sprites/done30_0.gif b/Cribbage/sprites/done30_0.gif new file mode 100644 index 0000000000000000000000000000000000000000..c187a5919d751e485e61e2f4f6ce859bbf698bd7 Binary files /dev/null and b/Cribbage/sprites/done30_0.gif differ diff --git a/Cribbage/sprites/done30_1.gif b/Cribbage/sprites/done30_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..9df9957fcb9656c91a332714bb0f69a145c4012b Binary files /dev/null and b/Cribbage/sprites/done30_1.gif differ diff --git a/Cribbage/sprites/done30_2.gif b/Cribbage/sprites/done30_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..701079d05ff3cbe7518d25f9b5b872a8c1b7a00d Binary files /dev/null and b/Cribbage/sprites/done30_2.gif differ diff --git a/Cribbage/sprites/gameover.gif b/Cribbage/sprites/gameover.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bf6f867bfd94a695ad3bea957facf2e6913777b Binary files /dev/null and b/Cribbage/sprites/gameover.gif differ diff --git a/Cribbage/sprites/heart.gif b/Cribbage/sprites/heart.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bbef26dc29180d802ffee238352951e0c1bbb40 Binary files /dev/null and b/Cribbage/sprites/heart.gif differ diff --git a/Cribbage/sprites/hearts0.gif b/Cribbage/sprites/hearts0.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a2eba4f37c32d351bd2ce1b9762e0480ff4dba7 Binary files /dev/null and b/Cribbage/sprites/hearts0.gif differ diff --git a/Cribbage/sprites/hearts1.gif b/Cribbage/sprites/hearts1.gif new file mode 100644 index 0000000000000000000000000000000000000000..207a17a2cafe45009624f2f7fed504c0fff6c64f Binary files /dev/null and b/Cribbage/sprites/hearts1.gif differ diff --git a/Cribbage/sprites/hearts10.gif b/Cribbage/sprites/hearts10.gif new file mode 100644 index 0000000000000000000000000000000000000000..2caa057493d4773df9f68b439bfaa0cc143126b2 Binary files /dev/null and b/Cribbage/sprites/hearts10.gif differ diff --git a/Cribbage/sprites/hearts11.gif b/Cribbage/sprites/hearts11.gif new file mode 100644 index 0000000000000000000000000000000000000000..86d902739b6863b77d0df04b10c533693272de16 Binary files /dev/null and b/Cribbage/sprites/hearts11.gif differ diff --git a/Cribbage/sprites/hearts12.gif b/Cribbage/sprites/hearts12.gif new file mode 100644 index 0000000000000000000000000000000000000000..215ea796a059d29116096599355f26a52daf5f41 Binary files /dev/null and b/Cribbage/sprites/hearts12.gif differ diff --git a/Cribbage/sprites/hearts2.gif b/Cribbage/sprites/hearts2.gif new file mode 100644 index 0000000000000000000000000000000000000000..4de929dfecfc23ca8dbf7fd5a4f96c5576539884 Binary files /dev/null and b/Cribbage/sprites/hearts2.gif differ diff --git a/Cribbage/sprites/hearts3.gif b/Cribbage/sprites/hearts3.gif new file mode 100644 index 0000000000000000000000000000000000000000..3adf4cf8767e9601e51e93346e3357422a45a114 Binary files /dev/null and b/Cribbage/sprites/hearts3.gif differ diff --git a/Cribbage/sprites/hearts4.gif b/Cribbage/sprites/hearts4.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e2efc30ff6bdb1387e3bfc78dd5f97157f6ed0e Binary files /dev/null and b/Cribbage/sprites/hearts4.gif differ diff --git a/Cribbage/sprites/hearts5.gif b/Cribbage/sprites/hearts5.gif new file mode 100644 index 0000000000000000000000000000000000000000..229494ff41ecac31c719dfeff94974846b96d160 Binary files /dev/null and b/Cribbage/sprites/hearts5.gif differ diff --git a/Cribbage/sprites/hearts6.gif b/Cribbage/sprites/hearts6.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3dd246487cbf5749b38ede5e2cc229ac3eb68e Binary files /dev/null and b/Cribbage/sprites/hearts6.gif differ diff --git a/Cribbage/sprites/hearts7.gif b/Cribbage/sprites/hearts7.gif new file mode 100644 index 0000000000000000000000000000000000000000..f40098add803c6c42f8267467d6c4dc1d1fd1a2c Binary files /dev/null and b/Cribbage/sprites/hearts7.gif differ diff --git a/Cribbage/sprites/hearts8.gif b/Cribbage/sprites/hearts8.gif new file mode 100644 index 0000000000000000000000000000000000000000..f94d0738c06e9f39e0f4f893abf426410c5dcffb Binary files /dev/null and b/Cribbage/sprites/hearts8.gif differ diff --git a/Cribbage/sprites/hearts9.gif b/Cribbage/sprites/hearts9.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ae5e961e0107a706dd5464f6fb7940acc5f9c4b Binary files /dev/null and b/Cribbage/sprites/hearts9.gif differ diff --git a/Cribbage/sprites/hearts_item_0.png b/Cribbage/sprites/hearts_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..312c4386df104908d8a447352f04b27ad7f47da4 Binary files /dev/null and b/Cribbage/sprites/hearts_item_0.png differ diff --git a/Cribbage/sprites/hearts_item_1.png b/Cribbage/sprites/hearts_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2ffe684164497d5770917a1fe8ee58b0cd77cf Binary files /dev/null and b/Cribbage/sprites/hearts_item_1.png differ diff --git a/Cribbage/sprites/joker1.gif b/Cribbage/sprites/joker1.gif new file mode 100644 index 0000000000000000000000000000000000000000..492027bd100f3e2c491f47132229678770b76bd0 Binary files /dev/null and b/Cribbage/sprites/joker1.gif differ diff --git a/Cribbage/sprites/joker2.gif b/Cribbage/sprites/joker2.gif new file mode 100644 index 0000000000000000000000000000000000000000..51ab6d473a7a972398496395ce86d8f5d5b34738 Binary files /dev/null and b/Cribbage/sprites/joker2.gif differ diff --git a/Cribbage/sprites/original/bigclub.gif b/Cribbage/sprites/original/bigclub.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf07ff0a3b53c6cf1e69b1706b1fd8db76918d3c Binary files /dev/null and b/Cribbage/sprites/original/bigclub.gif differ diff --git a/Cribbage/sprites/original/bigclub1.gif b/Cribbage/sprites/original/bigclub1.gif new file mode 100644 index 0000000000000000000000000000000000000000..05336b86a536e9d0acf7f9670ea1c4ffae5667a8 Binary files /dev/null and b/Cribbage/sprites/original/bigclub1.gif differ diff --git a/Cribbage/sprites/original/bigdiamond.gif b/Cribbage/sprites/original/bigdiamond.gif new file mode 100644 index 0000000000000000000000000000000000000000..9db504ce64f62436dfd1328030e1ef556d903e09 Binary files /dev/null and b/Cribbage/sprites/original/bigdiamond.gif differ diff --git a/Cribbage/sprites/original/bigdiamond1.gif b/Cribbage/sprites/original/bigdiamond1.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8161d6a9004da4d773bc494c1562bbc2f06b248 Binary files /dev/null and b/Cribbage/sprites/original/bigdiamond1.gif differ diff --git a/Cribbage/sprites/original/bigheart.gif b/Cribbage/sprites/original/bigheart.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f23a079d6abfa1c6917757e254a8464e3011a08 Binary files /dev/null and b/Cribbage/sprites/original/bigheart.gif differ diff --git a/Cribbage/sprites/original/bigheart1.gif b/Cribbage/sprites/original/bigheart1.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b807f397489841697f7b7d332928949bc323661 Binary files /dev/null and b/Cribbage/sprites/original/bigheart1.gif differ diff --git a/Cribbage/sprites/original/bigspade.gif b/Cribbage/sprites/original/bigspade.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ac08a6d6ff783cc43f26681dfd043de028ec663 Binary files /dev/null and b/Cribbage/sprites/original/bigspade.gif differ diff --git a/Cribbage/sprites/original/bigspade1.gif b/Cribbage/sprites/original/bigspade1.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdef80f5ffb8f7408d7fb0e1fba774f35845342a Binary files /dev/null and b/Cribbage/sprites/original/bigspade1.gif differ diff --git a/Cribbage/sprites/original/clubs0.gif b/Cribbage/sprites/original/clubs0.gif new file mode 100644 index 0000000000000000000000000000000000000000..b09b1b1a545259fb24bea4b914d96eb086dea1e6 Binary files /dev/null and b/Cribbage/sprites/original/clubs0.gif differ diff --git a/Cribbage/sprites/original/clubs1.gif b/Cribbage/sprites/original/clubs1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b759a2a5d4a6de33dceb6b9631dfcfe56b86e49c Binary files /dev/null and b/Cribbage/sprites/original/clubs1.gif differ diff --git a/Cribbage/sprites/original/clubs2.gif b/Cribbage/sprites/original/clubs2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e900930019ca83fba5a85134a098cd643b9ff14b Binary files /dev/null and b/Cribbage/sprites/original/clubs2.gif differ diff --git a/Cribbage/sprites/original/clubs3.gif b/Cribbage/sprites/original/clubs3.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c5d0e9f2a65db0c07ab0d25f9c9caa8ca16d6a1 Binary files /dev/null and b/Cribbage/sprites/original/clubs3.gif differ diff --git a/Cribbage/sprites/original/clubs4.gif b/Cribbage/sprites/original/clubs4.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e8d094c1c3bf19415af28c4247ea7f3dfd4db3d Binary files /dev/null and b/Cribbage/sprites/original/clubs4.gif differ diff --git a/Cribbage/sprites/original/clubs5.gif b/Cribbage/sprites/original/clubs5.gif new file mode 100644 index 0000000000000000000000000000000000000000..d232c33b15d8f6bbe2c66d8bfffb904757ecf4c4 Binary files /dev/null and b/Cribbage/sprites/original/clubs5.gif differ diff --git a/Cribbage/sprites/original/clubs6.gif b/Cribbage/sprites/original/clubs6.gif new file mode 100644 index 0000000000000000000000000000000000000000..9da5b7d199bf6636256368ff17ecdfae0f329786 Binary files /dev/null and b/Cribbage/sprites/original/clubs6.gif differ diff --git a/Cribbage/sprites/original/clubs7.gif b/Cribbage/sprites/original/clubs7.gif new file mode 100644 index 0000000000000000000000000000000000000000..a41ed29cf051efeea2dc7611b83a4711174f2675 Binary files /dev/null and b/Cribbage/sprites/original/clubs7.gif differ diff --git a/Cribbage/sprites/original/clubs8.gif b/Cribbage/sprites/original/clubs8.gif new file mode 100644 index 0000000000000000000000000000000000000000..23169e94c52a995e63c3394ec7550f98297e885b Binary files /dev/null and b/Cribbage/sprites/original/clubs8.gif differ diff --git a/Cribbage/sprites/original/clubs_item_0.png b/Cribbage/sprites/original/clubs_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..544006b3d7d107e13c2fe8c83d904a5c50c9c8bc Binary files /dev/null and b/Cribbage/sprites/original/clubs_item_0.png differ diff --git a/Cribbage/sprites/original/clubs_item_1.png b/Cribbage/sprites/original/clubs_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9457f91f228433e1478e7226ac90d9a54671c2a0 Binary files /dev/null and b/Cribbage/sprites/original/clubs_item_1.png differ diff --git a/Cribbage/sprites/original/cover.gif b/Cribbage/sprites/original/cover.gif new file mode 100644 index 0000000000000000000000000000000000000000..a048d8afdfb442cddfc5e7d07f9174881f41c73f Binary files /dev/null and b/Cribbage/sprites/original/cover.gif differ diff --git a/Cribbage/sprites/original/diamonds0.gif b/Cribbage/sprites/original/diamonds0.gif new file mode 100644 index 0000000000000000000000000000000000000000..9221184d63f3103b63fa4a2b753de1473ba94bbd Binary files /dev/null and b/Cribbage/sprites/original/diamonds0.gif differ diff --git a/Cribbage/sprites/original/diamonds1.gif b/Cribbage/sprites/original/diamonds1.gif new file mode 100644 index 0000000000000000000000000000000000000000..53b3e862d8a86c6e95b0a08cc507aadea5170f5c Binary files /dev/null and b/Cribbage/sprites/original/diamonds1.gif differ diff --git a/Cribbage/sprites/original/diamonds2.gif b/Cribbage/sprites/original/diamonds2.gif new file mode 100644 index 0000000000000000000000000000000000000000..ac60fcd93756cb31d0459d9faa05aa6e6aef26f3 Binary files /dev/null and b/Cribbage/sprites/original/diamonds2.gif differ diff --git a/Cribbage/sprites/original/diamonds3.gif b/Cribbage/sprites/original/diamonds3.gif new file mode 100644 index 0000000000000000000000000000000000000000..c085929c54e2800068dffcd2bcc6e23e53468379 Binary files /dev/null and b/Cribbage/sprites/original/diamonds3.gif differ diff --git a/Cribbage/sprites/original/diamonds4.gif b/Cribbage/sprites/original/diamonds4.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f8a7ca6ed6e6c3d80c7554b8ac270605e30d84e Binary files /dev/null and b/Cribbage/sprites/original/diamonds4.gif differ diff --git a/Cribbage/sprites/original/diamonds5.gif b/Cribbage/sprites/original/diamonds5.gif new file mode 100644 index 0000000000000000000000000000000000000000..9576337617c8dbd94cfb18937155369b8fb6bfab Binary files /dev/null and b/Cribbage/sprites/original/diamonds5.gif differ diff --git a/Cribbage/sprites/original/diamonds6.gif b/Cribbage/sprites/original/diamonds6.gif new file mode 100644 index 0000000000000000000000000000000000000000..b15bd06ed28640b2210dfddc63d8462e1c1edecf Binary files /dev/null and b/Cribbage/sprites/original/diamonds6.gif differ diff --git a/Cribbage/sprites/original/diamonds7.gif b/Cribbage/sprites/original/diamonds7.gif new file mode 100644 index 0000000000000000000000000000000000000000..6016d2d0958c6e212945e829f2b7ca34cb0a3983 Binary files /dev/null and b/Cribbage/sprites/original/diamonds7.gif differ diff --git a/Cribbage/sprites/original/diamonds8.gif b/Cribbage/sprites/original/diamonds8.gif new file mode 100644 index 0000000000000000000000000000000000000000..d113c5fb88a48e023df5db4409fa03af6b062d15 Binary files /dev/null and b/Cribbage/sprites/original/diamonds8.gif differ diff --git a/Cribbage/sprites/original/diamonds_item_0.png b/Cribbage/sprites/original/diamonds_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9726895725b497e5c4f30d73a081a3fbeb29a31a Binary files /dev/null and b/Cribbage/sprites/original/diamonds_item_0.png differ diff --git a/Cribbage/sprites/original/diamonds_item_1.png b/Cribbage/sprites/original/diamonds_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f8260e5a0af3c467b60587cdc1c95c0e4aeeb71e Binary files /dev/null and b/Cribbage/sprites/original/diamonds_item_1.png differ diff --git a/Cribbage/sprites/original/done30_0.gif b/Cribbage/sprites/original/done30_0.gif new file mode 100644 index 0000000000000000000000000000000000000000..c187a5919d751e485e61e2f4f6ce859bbf698bd7 Binary files /dev/null and b/Cribbage/sprites/original/done30_0.gif differ diff --git a/Cribbage/sprites/original/done30_1.gif b/Cribbage/sprites/original/done30_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..9df9957fcb9656c91a332714bb0f69a145c4012b Binary files /dev/null and b/Cribbage/sprites/original/done30_1.gif differ diff --git a/Cribbage/sprites/original/done30_2.gif b/Cribbage/sprites/original/done30_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..701079d05ff3cbe7518d25f9b5b872a8c1b7a00d Binary files /dev/null and b/Cribbage/sprites/original/done30_2.gif differ diff --git a/Cribbage/sprites/original/gameover.gif b/Cribbage/sprites/original/gameover.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bf6f867bfd94a695ad3bea957facf2e6913777b Binary files /dev/null and b/Cribbage/sprites/original/gameover.gif differ diff --git a/Cribbage/sprites/original/heart.gif b/Cribbage/sprites/original/heart.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bbef26dc29180d802ffee238352951e0c1bbb40 Binary files /dev/null and b/Cribbage/sprites/original/heart.gif differ diff --git a/Cribbage/sprites/original/hearts0.gif b/Cribbage/sprites/original/hearts0.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a2eba4f37c32d351bd2ce1b9762e0480ff4dba7 Binary files /dev/null and b/Cribbage/sprites/original/hearts0.gif differ diff --git a/Cribbage/sprites/original/hearts1.gif b/Cribbage/sprites/original/hearts1.gif new file mode 100644 index 0000000000000000000000000000000000000000..207a17a2cafe45009624f2f7fed504c0fff6c64f Binary files /dev/null and b/Cribbage/sprites/original/hearts1.gif differ diff --git a/Cribbage/sprites/original/hearts2.gif b/Cribbage/sprites/original/hearts2.gif new file mode 100644 index 0000000000000000000000000000000000000000..4de929dfecfc23ca8dbf7fd5a4f96c5576539884 Binary files /dev/null and b/Cribbage/sprites/original/hearts2.gif differ diff --git a/Cribbage/sprites/original/hearts3.gif b/Cribbage/sprites/original/hearts3.gif new file mode 100644 index 0000000000000000000000000000000000000000..3adf4cf8767e9601e51e93346e3357422a45a114 Binary files /dev/null and b/Cribbage/sprites/original/hearts3.gif differ diff --git a/Cribbage/sprites/original/hearts4.gif b/Cribbage/sprites/original/hearts4.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e2efc30ff6bdb1387e3bfc78dd5f97157f6ed0e Binary files /dev/null and b/Cribbage/sprites/original/hearts4.gif differ diff --git a/Cribbage/sprites/original/hearts5.gif b/Cribbage/sprites/original/hearts5.gif new file mode 100644 index 0000000000000000000000000000000000000000..229494ff41ecac31c719dfeff94974846b96d160 Binary files /dev/null and b/Cribbage/sprites/original/hearts5.gif differ diff --git a/Cribbage/sprites/original/hearts6.gif b/Cribbage/sprites/original/hearts6.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3dd246487cbf5749b38ede5e2cc229ac3eb68e Binary files /dev/null and b/Cribbage/sprites/original/hearts6.gif differ diff --git a/Cribbage/sprites/original/hearts7.gif b/Cribbage/sprites/original/hearts7.gif new file mode 100644 index 0000000000000000000000000000000000000000..f40098add803c6c42f8267467d6c4dc1d1fd1a2c Binary files /dev/null and b/Cribbage/sprites/original/hearts7.gif differ diff --git a/Cribbage/sprites/original/hearts8.gif b/Cribbage/sprites/original/hearts8.gif new file mode 100644 index 0000000000000000000000000000000000000000..f94d0738c06e9f39e0f4f893abf426410c5dcffb Binary files /dev/null and b/Cribbage/sprites/original/hearts8.gif differ diff --git a/Cribbage/sprites/original/hearts_item_0.png b/Cribbage/sprites/original/hearts_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..312c4386df104908d8a447352f04b27ad7f47da4 Binary files /dev/null and b/Cribbage/sprites/original/hearts_item_0.png differ diff --git a/Cribbage/sprites/original/hearts_item_1.png b/Cribbage/sprites/original/hearts_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2ffe684164497d5770917a1fe8ee58b0cd77cf Binary files /dev/null and b/Cribbage/sprites/original/hearts_item_1.png differ diff --git a/Cribbage/sprites/original/reshuffle.gif b/Cribbage/sprites/original/reshuffle.gif new file mode 100644 index 0000000000000000000000000000000000000000..284a4f15d4d54f7181654bf85f014d5bc36abc89 Binary files /dev/null and b/Cribbage/sprites/original/reshuffle.gif differ diff --git a/Cribbage/sprites/original/spades0.gif b/Cribbage/sprites/original/spades0.gif new file mode 100644 index 0000000000000000000000000000000000000000..914f782f9e45f1f9002d1a042313bc65a48044b2 Binary files /dev/null and b/Cribbage/sprites/original/spades0.gif differ diff --git a/Cribbage/sprites/original/spades1.gif b/Cribbage/sprites/original/spades1.gif new file mode 100644 index 0000000000000000000000000000000000000000..5eae07d43f4eb262895f1dce7ffb0e333f91f3f4 Binary files /dev/null and b/Cribbage/sprites/original/spades1.gif differ diff --git a/Cribbage/sprites/original/spades2.gif b/Cribbage/sprites/original/spades2.gif new file mode 100644 index 0000000000000000000000000000000000000000..76eb11c896dd532361888e8f833f95b59ea6af9f Binary files /dev/null and b/Cribbage/sprites/original/spades2.gif differ diff --git a/Cribbage/sprites/original/spades3.gif b/Cribbage/sprites/original/spades3.gif new file mode 100644 index 0000000000000000000000000000000000000000..361ab8b9b439ed57f34a531b236a1c7c968222cc Binary files /dev/null and b/Cribbage/sprites/original/spades3.gif differ diff --git a/Cribbage/sprites/original/spades4.gif b/Cribbage/sprites/original/spades4.gif new file mode 100644 index 0000000000000000000000000000000000000000..24f42af55aeb2a7c81e8919be3cde03050e2585d Binary files /dev/null and b/Cribbage/sprites/original/spades4.gif differ diff --git a/Cribbage/sprites/original/spades5.gif b/Cribbage/sprites/original/spades5.gif new file mode 100644 index 0000000000000000000000000000000000000000..b126a244c1e537716acd11ac054d8ac8d241868d Binary files /dev/null and b/Cribbage/sprites/original/spades5.gif differ diff --git a/Cribbage/sprites/original/spades6.gif b/Cribbage/sprites/original/spades6.gif new file mode 100644 index 0000000000000000000000000000000000000000..c43349183e258e023ef81e84ddf0516646832cf9 Binary files /dev/null and b/Cribbage/sprites/original/spades6.gif differ diff --git a/Cribbage/sprites/original/spades7.gif b/Cribbage/sprites/original/spades7.gif new file mode 100644 index 0000000000000000000000000000000000000000..1201366d9b7fa30abccc306f4ad39838e06ce075 Binary files /dev/null and b/Cribbage/sprites/original/spades7.gif differ diff --git a/Cribbage/sprites/original/spades8.gif b/Cribbage/sprites/original/spades8.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc2b108a6884f333d9e3cdb3fbb820c77bce086d Binary files /dev/null and b/Cribbage/sprites/original/spades8.gif differ diff --git a/Cribbage/sprites/original/spades_item_0.png b/Cribbage/sprites/original/spades_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d186152763600cfd29bd42fb7ff963e754b294d Binary files /dev/null and b/Cribbage/sprites/original/spades_item_0.png differ diff --git a/Cribbage/sprites/original/spades_item_1.png b/Cribbage/sprites/original/spades_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d57fc7081cf8d68e9f62b6dcc1cdda08a5dcce0b Binary files /dev/null and b/Cribbage/sprites/original/spades_item_1.png differ diff --git a/Cribbage/sprites/original/text_item.png b/Cribbage/sprites/original/text_item.png new file mode 100644 index 0000000000000000000000000000000000000000..1dad1788f32bb81b51615da0809372a50fc5a6ee Binary files /dev/null and b/Cribbage/sprites/original/text_item.png differ diff --git a/Cribbage/sprites/reshuffle.gif b/Cribbage/sprites/reshuffle.gif new file mode 100644 index 0000000000000000000000000000000000000000..284a4f15d4d54f7181654bf85f014d5bc36abc89 Binary files /dev/null and b/Cribbage/sprites/reshuffle.gif differ diff --git a/Cribbage/sprites/spades0.gif b/Cribbage/sprites/spades0.gif new file mode 100644 index 0000000000000000000000000000000000000000..914f782f9e45f1f9002d1a042313bc65a48044b2 Binary files /dev/null and b/Cribbage/sprites/spades0.gif differ diff --git a/Cribbage/sprites/spades1.gif b/Cribbage/sprites/spades1.gif new file mode 100644 index 0000000000000000000000000000000000000000..5eae07d43f4eb262895f1dce7ffb0e333f91f3f4 Binary files /dev/null and b/Cribbage/sprites/spades1.gif differ diff --git a/Cribbage/sprites/spades10.gif b/Cribbage/sprites/spades10.gif new file mode 100644 index 0000000000000000000000000000000000000000..f063796c35994570b33c5cc36d6594db27dd5456 Binary files /dev/null and b/Cribbage/sprites/spades10.gif differ diff --git a/Cribbage/sprites/spades11.gif b/Cribbage/sprites/spades11.gif new file mode 100644 index 0000000000000000000000000000000000000000..869576f30243cab007a12b3d44eda5b4490f477f Binary files /dev/null and b/Cribbage/sprites/spades11.gif differ diff --git a/Cribbage/sprites/spades12.gif b/Cribbage/sprites/spades12.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c2082aa83f3caff62b6a8757834ef87c8461377 Binary files /dev/null and b/Cribbage/sprites/spades12.gif differ diff --git a/Cribbage/sprites/spades2.gif b/Cribbage/sprites/spades2.gif new file mode 100644 index 0000000000000000000000000000000000000000..76eb11c896dd532361888e8f833f95b59ea6af9f Binary files /dev/null and b/Cribbage/sprites/spades2.gif differ diff --git a/Cribbage/sprites/spades3.gif b/Cribbage/sprites/spades3.gif new file mode 100644 index 0000000000000000000000000000000000000000..361ab8b9b439ed57f34a531b236a1c7c968222cc Binary files /dev/null and b/Cribbage/sprites/spades3.gif differ diff --git a/Cribbage/sprites/spades4.gif b/Cribbage/sprites/spades4.gif new file mode 100644 index 0000000000000000000000000000000000000000..24f42af55aeb2a7c81e8919be3cde03050e2585d Binary files /dev/null and b/Cribbage/sprites/spades4.gif differ diff --git a/Cribbage/sprites/spades5.gif b/Cribbage/sprites/spades5.gif new file mode 100644 index 0000000000000000000000000000000000000000..b126a244c1e537716acd11ac054d8ac8d241868d Binary files /dev/null and b/Cribbage/sprites/spades5.gif differ diff --git a/Cribbage/sprites/spades6.gif b/Cribbage/sprites/spades6.gif new file mode 100644 index 0000000000000000000000000000000000000000..c43349183e258e023ef81e84ddf0516646832cf9 Binary files /dev/null and b/Cribbage/sprites/spades6.gif differ diff --git a/Cribbage/sprites/spades7.gif b/Cribbage/sprites/spades7.gif new file mode 100644 index 0000000000000000000000000000000000000000..1201366d9b7fa30abccc306f4ad39838e06ce075 Binary files /dev/null and b/Cribbage/sprites/spades7.gif differ diff --git a/Cribbage/sprites/spades8.gif b/Cribbage/sprites/spades8.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc2b108a6884f333d9e3cdb3fbb820c77bce086d Binary files /dev/null and b/Cribbage/sprites/spades8.gif differ diff --git a/Cribbage/sprites/spades9.gif b/Cribbage/sprites/spades9.gif new file mode 100644 index 0000000000000000000000000000000000000000..da72717ebc3bd4cb0ff75340dcfd658da2e7f3a2 Binary files /dev/null and b/Cribbage/sprites/spades9.gif differ diff --git a/Cribbage/sprites/spades_item_0.png b/Cribbage/sprites/spades_item_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d186152763600cfd29bd42fb7ff963e754b294d Binary files /dev/null and b/Cribbage/sprites/spades_item_0.png differ diff --git a/Cribbage/sprites/spades_item_1.png b/Cribbage/sprites/spades_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d57fc7081cf8d68e9f62b6dcc1cdda08a5dcce0b Binary files /dev/null and b/Cribbage/sprites/spades_item_1.png differ diff --git a/Cribbage/sprites/text_item.png b/Cribbage/sprites/text_item.png new file mode 100644 index 0000000000000000000000000000000000000000..1dad1788f32bb81b51615da0809372a50fc5a6ee Binary files /dev/null and b/Cribbage/sprites/text_item.png differ diff --git a/Cribbage/src/cribbage/Cribbage.java b/Cribbage/src/cribbage/Cribbage.java new file mode 100644 index 0000000000000000000000000000000000000000..5fb110551072fa0705466c6d8d4ad3b9412cd7ba --- /dev/null +++ b/Cribbage/src/cribbage/Cribbage.java @@ -0,0 +1,387 @@ +package cribbage; + +// Cribbage.java + +import ch.aplu.jcardgame.*; +import ch.aplu.jgamegrid.*; +import observer.*; + +import java.awt.Color; +import java.awt.Font; +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class Cribbage extends CardGame { + static Cribbage cribbage; // Provide access to singleton + + public enum Suit { + CLUBS, DIAMONDS, HEARTS, SPADES + } + + public enum Rank { + // Order of cards is tied to card images + ACE(1,1), KING(13,10), QUEEN(12,10), JACK(11,10), TEN(10,10), NINE(9,9), EIGHT(8,8), SEVEN(7,7), SIX(6,6), FIVE(5,5), FOUR(4,4), THREE(3,3), TWO(2,2); + public final int order; + public final int value; + Rank(int order, int value) { + this.order = order; + this.value = value; + } + } + + static int cardValue(Card c) { return ((Cribbage.Rank) c.getRank()).value; } + + /* + Canonical String representations of Suit, Rank, Card, and Hand + */ + String canonical(Suit s) { return s.toString().substring(0, 1); } + + String canonical(Rank r) { + switch (r) { + case ACE:case KING:case QUEEN:case JACK:case TEN: + return r.toString().substring(0, 1); + default: + return String.valueOf(r.value); + } + } + + String canonical(Card c) { return canonical((Rank) c.getRank()) + canonical((Suit) c.getSuit()); } + + String canonical(Hand h) { + Hand h1 = new Hand(deck); // Clone to sort without changing the original hand + for (Card C: h.getCardList()) h1.insert(C.getSuit(), C.getRank(), false); + h1.sort(Hand.SortType.POINTPRIORITY, false); + return "[" + h1.getCardList().stream().map(this::canonical).collect(Collectors.joining(",")) + "]"; + } + + class MyCardValues implements Deck.CardValues { // Need to generate a unique value for every card + public int[] values(Enum suit) { // Returns the value for each card in the suit + return Stream.of(Rank.values()).mapToInt(r -> (((Rank) r).order-1)*(Suit.values().length)+suit.ordinal()).toArray(); + } + } + + static Random random; + + public static <T extends Enum<?>> T randomEnum(Class<T> clazz){ + int x = random.nextInt(clazz.getEnumConstants().length); + return clazz.getEnumConstants()[x]; + } + + static boolean ANIMATE; + + void transfer(Card c, Hand h) { + if (ANIMATE) { + c.transfer(h, true); + } else { + c.removeFromHand(true); + h.insert(c, true); + } + } + + private void dealingOut(Hand pack, Hand[] hands) { + for (int i = 0; i < nStartCards; i++) { + for (int j=0; j < nPlayers; j++) { + Card dealt = randomCard(pack); + dealt.setVerso(false); // Show the face + transfer(dealt, hands[j]); + } + } + } + + static int SEED; + + public static Card randomCard(Hand hand){ + int x = random.nextInt(hand.getNumberOfCards()); + return hand.get(x); + } + + private final String version = "0.1"; + static public final int nPlayers = 2; + public final int nStartCards = 6; + public final int nDiscards = 2; + private final int handWidth = 400; + private final int cribWidth = 150; + private final int segmentWidth = 180; + private final Deck deck = new Deck(Suit.values(), Rank.values(), "cover", new MyCardValues()); + private final Location[] handLocations = { + new Location(360, 75), + new Location(360, 625) + }; + private final Location[] scoreLocations = { + new Location(590, 25), + new Location(590, 675) + }; + private final Location[] segmentLocations = { // need at most three as 3x31=93 > 2x4x10=80 + new Location(150, 350), + new Location(400, 350), + new Location(650, 350) + }; + private final Location starterLocation = new Location(50, 625); + private final Location cribLocation = new Location(700, 625); + private final Location seedLocation = new Location(5, 25); + // private final TargetArea cribTarget = new TargetArea(cribLocation, CardOrientation.NORTH, 1, true); + private final Actor[] scoreActors = {null, null}; //, null, null }; + private final Location textLocation = new Location(350, 450); + private final Hand[] hands = new Hand[nPlayers]; + private Hand starter; + private Hand crib; + + public static void setStatus(String string) { cribbage.setStatusText(string); } + +static private final IPlayer[] players = new IPlayer[nPlayers]; +private final int[] scores = new int[nPlayers]; + +final Font normalFont = new Font("Serif", Font.BOLD, 24); +final Font bigFont = new Font("Serif", Font.BOLD, 36); + +private void initScore() { + for (int i = 0; i < nPlayers; i++) { + scores[i] = 0; + scoreActors[i] = new TextActor("0", Color.WHITE, bgColor, bigFont); + addActor(scoreActors[i], scoreLocations[i]); + } + } + +private void updateScore(int player) { + removeActor(scoreActors[player]); + scoreActors[player] = new TextActor(String.valueOf(scores[player]), Color.WHITE, bgColor, bigFont); + addActor(scoreActors[player], scoreLocations[player]); +} + +private void deal(Hand pack, Hand[] hands) { + for (int i = 0; i < nPlayers; i++) { + hands[i] = new Hand(deck); + // players[i] = (1 == i ? new HumanPlayer() : new RandomPlayer()); + players[i].setId(i); + players[i].startSegment(deck, hands[i]); + } + RowLayout[] layouts = new RowLayout[nPlayers]; + for (int i = 0; i < nPlayers; i++) + { + layouts[i] = new RowLayout(handLocations[i], handWidth); + layouts[i].setRotationAngle(0); + // layouts[i].setStepDelay(10); + hands[i].setView(this, layouts[i]); + hands[i].draw(); + } + layouts[0].setStepDelay(0); + + dealingOut(pack, hands); + for (int i = 0; i < nPlayers; i++) { + hands[i].sort(Hand.SortType.POINTPRIORITY, true); + } + layouts[0].setStepDelay(0); +} + +private void discardToCrib() { + crib = new Hand(deck); + RowLayout layout = new RowLayout(cribLocation, cribWidth); + layout.setRotationAngle(0); + crib.setView(this, layout); + // crib.setTargetArea(cribTarget); + crib.draw(); + for (IPlayer player: players) { + for (int i = 0; i < nDiscards; i++) { + transfer(player.discard(), crib); + } + crib.sort(Hand.SortType.POINTPRIORITY, true); + } +} + +private void starter(Hand pack) { + starter = new Hand(deck); // if starter is a Jack, the dealer gets 2 points + RowLayout layout = new RowLayout(starterLocation, 0); + layout.setRotationAngle(0); + starter.setView(this, layout); + starter.draw(); + Card dealt = randomCard(pack); + dealt.setVerso(false); + transfer(dealt, starter); +} + +int total(Hand hand) { + int total = 0; + for (Card c: hand.getCardList()) total += cardValue(c); + return total; +} + +class Segment { + Hand segment; + boolean go; + int lastPlayer; + boolean newSegment; + + void reset(final List<Hand> segments) { + segment = new Hand(deck); + segment.setView(Cribbage.this, new RowLayout(segmentLocations[segments.size()], segmentWidth)); + segment.draw(); + go = false; // No-one has said "go" yet + lastPlayer = -1; // No-one has played a card yet in this segment + newSegment = false; // Not ready for new segment yet + } +} + +private void play() { + final int thirtyone = 31; + final int fifteen = 15; + List<Hand> segments = new ArrayList<>(); + int currentPlayer = 0; // Player 1 is dealer + Segment s = new Segment(); + s.reset(segments); + while (!(players[0].emptyHand() && players[1].emptyHand())) { + // System.out.println("segments.size() = " + segments.size()); + Card nextCard = players[currentPlayer].lay(thirtyone-total(s.segment)); + if (nextCard == null) { + if (s.go) { + // Another "go" after previous one with no intervening cards + // lastPlayer gets 1 point for a "go" + scores[s.lastPlayer] += 1; + updateScore(s.lastPlayer); + s.newSegment = true; + } else { + // currentPlayer says "go" + s.go = true; + } + currentPlayer = (currentPlayer+1) % 2; + } else { + s.lastPlayer = currentPlayer; // last Player to play a card in this segment + transfer(nextCard, s.segment); + // lastPlayer gets 1 point for place the last card. + if ((players[0].emptyHand() && players[1].emptyHand())){ + scores[s.lastPlayer] += 1; + updateScore(s.lastPlayer); + } + if (total(s.segment) == thirtyone) { + // lastPlayer gets 2 points for a 31 + scores[s.lastPlayer] += 2; + updateScore(s.lastPlayer); + s.newSegment = true; + currentPlayer = (currentPlayer+1) % 2; + } else { + // if total(segment) == 15, lastPlayer gets 2 points for a 15 + if (total(s.segment) == fifteen){ + scores[s.lastPlayer] += 2; + updateScore(s.lastPlayer); + } + if (!s.go) { // if it is "go" then same player gets another turn + currentPlayer = (currentPlayer+1) % 2; + } + } + } + if (s.newSegment) { + segments.add(s.segment); + s.reset(segments); + } + } +} + +void showHandsCrib() { + // score player 0 (non dealer) + HandCards p0HandCards = new CribbageHandCards(); + modifySubject(p0HandCards); + p0HandCards.sendHandCards(players[0].hand, starter); + scores[0] += p0HandCards.scoreHandCards(); + updateScore(0); + // score player 1 (dealer) + HandCards p1HandCards = new CribbageHandCards(); + modifySubject(p1HandCards); + p1HandCards.sendHandCards(players[1].hand, starter); + scores[1] += p1HandCards.scoreHandCards(); + // score crib (for dealer) + HandCards cribHandCards = new CribbageHandCards(); + modifySubject(cribHandCards); + cribHandCards.sendHandCards(crib, starter); + scores[1] += cribHandCards.scoreHandCards(); + updateScore(1); +} + +void modifySubject(HandCards playersHandCards){ + Rule fifteens = new Fifteens(); + Rule runs = new Runs(); + Rule pairs = new Pairs(); + Rule flush = new Flush(); + Rule jack = new Jack(); + playersHandCards.addRule(fifteens); + playersHandCards.addRule(runs); + playersHandCards.addRule(pairs); + //playersHandCards.addRule(flush); + playersHandCards.addRule(jack); +} + +public Cribbage() + { + super(850, 700, 30); + cribbage = this; + setTitle("Cribbage (V" + version + ") Constructed for UofM SWEN30006 with JGameGrid (www.aplu.ch)"); + setStatusText("Initializing..."); + initScore(); + + Hand pack = deck.toHand(false); + RowLayout layout = new RowLayout(starterLocation, 0); + layout.setRotationAngle(0); + pack.setView(this, layout); + pack.setVerso(true); + pack.draw(); + addActor(new TextActor("Seed: " + SEED, Color.BLACK, bgColor, normalFont), seedLocation); + + /* Play the round */ + deal(pack, hands); + discardToCrib(); + starter(pack); + play(); + showHandsCrib(); + + addActor(new Actor("sprites/gameover.gif"), textLocation); + setStatusText("Game over."); + refresh(); + } + + public static void main(String[] args) + throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, + InstantiationException, IllegalAccessException { + /* Handle Properties */ + // System.out.println("Working Directory = " + System.getProperty("user.dir")); + Properties cribbageProperties = new Properties(); + // Default properties + cribbageProperties.setProperty("Animate", "true"); + cribbageProperties.setProperty("Player0", "cribbage.RandomPlayer"); + cribbageProperties.setProperty("Player1", "cribbage.HumanPlayer"); + + // Read properties + try (FileReader inStream = new FileReader("cribbage.properties")) { + cribbageProperties.load(inStream); + } + + // Control Graphics + ANIMATE = Boolean.parseBoolean(cribbageProperties.getProperty("Animate")); + + // Control Randomisation + /* Read the first argument and save it as a seed if it exists */ + if (args.length > 0 ) { // Use arg seed - overrides property + SEED = Integer.parseInt(args[0]); + } else { // No arg + String seedProp = cribbageProperties.getProperty("Seed"); //Seed property + if (seedProp != null) { // Use property seed + SEED = Integer.parseInt(seedProp); + } else { // and no property + SEED = new Random().nextInt(); // so randomise + } + } + random = new Random(SEED); + + // Control Player Types + Class<?> clazz; + clazz = Class.forName(cribbageProperties.getProperty("Player0")); + players[0] = (IPlayer) clazz.getConstructor().newInstance(); + clazz = Class.forName(cribbageProperties.getProperty("Player1")); + players[1] = (IPlayer) clazz.getConstructor().newInstance(); + // End properties + + new Cribbage(); + } + +} diff --git a/Cribbage/src/cribbage/HumanPlayer.java b/Cribbage/src/cribbage/HumanPlayer.java new file mode 100644 index 0000000000000000000000000000000000000000..1fe1411865e76ea4409ad9963e36222ce365982a --- /dev/null +++ b/Cribbage/src/cribbage/HumanPlayer.java @@ -0,0 +1,45 @@ +package cribbage; + +import ch.aplu.jcardgame.Deck; +import ch.aplu.jcardgame.Card; +import ch.aplu.jcardgame.CardAdapter; +import ch.aplu.jcardgame.CardListener; +import ch.aplu.jcardgame.Hand; + +public class HumanPlayer extends IPlayer { + Card selected; + + final CardListener cardListener = new CardAdapter() // Player plays card + { + public void leftDoubleClicked(Card card) { selected = card; hand.setTouchEnabled(false); } + }; + + @Override + public void startSegment(Deck deck, Hand hand) { + super.startSegment(deck, hand); + hand.addCardListener(cardListener); + } + + @Override + public Card discard() { + selected = null; + hand.setTouchEnabled(true); + Cribbage.setStatus("Player " + id + " double-click card to discard."); + while (null == selected) Cribbage.delay(100); + return selected; + } + + @Override + Card selectToLay() { + if (hand.isEmpty()) { + return null; + } else { + selected = null; + hand.setTouchEnabled(true); + Cribbage.setStatus("Player " + id + " double-click card to lay."); + while (null == selected) Cribbage.delay(100); + return selected; + } + } + +} \ No newline at end of file diff --git a/Cribbage/src/cribbage/IPlayer.java b/Cribbage/src/cribbage/IPlayer.java new file mode 100644 index 0000000000000000000000000000000000000000..05eb568068f0a4daf255d9bcbcce047bf15636c0 --- /dev/null +++ b/Cribbage/src/cribbage/IPlayer.java @@ -0,0 +1,33 @@ +package cribbage; + +import ch.aplu.jcardgame.*; + +import java.util.ArrayList; + +public abstract class IPlayer { + int id; + Deck deck; // Need this since can't get from hand to deck + Hand hand; + + void setId(int id) { + this.id = id; + } + void startSegment(Deck deck, Hand hand) {this.deck = deck; this.hand = hand;} + abstract Card discard(); + boolean emptyHand() {return hand.isEmpty();} + abstract Card selectToLay(); + Card lay(int limit) { + // System.out.println("lay(" + limit + ")"); + Hand unlayable = new Hand(deck); + for (Card c: ((ArrayList<Card>) hand.getCardList().clone())) // Modify list, so need to iterate over clone + if (Cribbage.cardValue(c) > limit) { + c.removeFromHand(true); + // System.out.println("hand = " + hand.toString()); + unlayable.insert(c, false); + } + // hand.draw(); Cribbage.delay(1000); + Card s = selectToLay(); + hand.insert(unlayable, true); + return s; + } +} diff --git a/Cribbage/src/cribbage/RandomPlayer.java b/Cribbage/src/cribbage/RandomPlayer.java new file mode 100644 index 0000000000000000000000000000000000000000..2d650062979e7110e5b2ee7d230bff69d803a04b --- /dev/null +++ b/Cribbage/src/cribbage/RandomPlayer.java @@ -0,0 +1,18 @@ +package cribbage; + +import ch.aplu.jcardgame.Card; +// import ch.aplu.jcardgame.Hand; + +public class RandomPlayer extends IPlayer { + + @Override + public Card discard() { + return Cribbage.randomCard(hand); + } + + @Override + Card selectToLay() { + return hand.isEmpty() ? null : Cribbage.randomCard(hand); + } + +} diff --git a/Cribbage/src/observer/Activity.java b/Cribbage/src/observer/Activity.java new file mode 100644 index 0000000000000000000000000000000000000000..6b476891c240657bdc20db82535ab98d253fb743 --- /dev/null +++ b/Cribbage/src/observer/Activity.java @@ -0,0 +1,5 @@ +package observer; + +public enum Activity { + DEALING, DISCARDING, SELECTING, PLAY, SHOW +} diff --git a/Cribbage/src/observer/CribbageHandCards.java b/Cribbage/src/observer/CribbageHandCards.java new file mode 100644 index 0000000000000000000000000000000000000000..c6eec3980c2640eba4ad479e61e54c93ce39ff12 --- /dev/null +++ b/Cribbage/src/observer/CribbageHandCards.java @@ -0,0 +1,38 @@ +package observer; + +import ch.aplu.jcardgame.Hand; +import java.util.ArrayList; + +public class CribbageHandCards implements HandCards{ + + private ArrayList<Rule> rules; + + public CribbageHandCards(){ + rules = new ArrayList<Rule>(); + } + + @Override + public void addRule(Rule rule){ + rules.add(rule); + } + + @Override + public void removeRule(Rule rule){ + rules.remove(rule); + } + + @Override + public void sendHandCards(Hand hand, Hand starter){ + hand.insert(starter, false); + rules.forEach((rule) -> rule.receiveHandCards(hand, starter)); + } + + @Override + public int scoreHandCards() { + int score = 0; + for(Rule r : rules){ + score += r.getScore(); + } + return score; + } +} diff --git a/Cribbage/src/observer/Fifteens.java b/Cribbage/src/observer/Fifteens.java new file mode 100644 index 0000000000000000000000000000000000000000..2a30ba6d42576f4950a1bfe40c7833264c44cb5c --- /dev/null +++ b/Cribbage/src/observer/Fifteens.java @@ -0,0 +1,53 @@ +package observer; + +import ch.aplu.jcardgame.Card; +import ch.aplu.jcardgame.Hand; + +import java.util.ArrayList; + +public class Fifteens implements Rule{ + + Hand hand = null; + int score = 0; + + + public Fifteens(){} + + @Override + public void receiveHandCards(Hand hand, Hand starter){ + this.hand = hand; + this.hand.insert(starter, false); + calculateScore(); + } + + @Override + public int getScore() { + return score; + } + + private void calculateScore(){ + ArrayList<Integer> cardValues = new ArrayList<>(); //An array list that contains all card values. + //Add values to the array list. + for (Card c: hand.getCardList()){ + cardValues.add(Math.min(c.getValue(), 10)); + } + //Choose N numbers from a list, the sum of them should be 15. + score = search(cardValues); + } + + private int search(ArrayList<Integer> cardValues){ + int len = cardValues.size(), bit = 1 << len, score = 0, goal = 15; + for(int i=1; i<bit; i++){ + int sum = 0; + for (int j=0; j < len; j++){ + if((i & 1 << j) != 0){ + sum += cardValues.get(j); + } + } + if (sum == goal){ + score += 2; + } + } + return score; + } +} diff --git a/Cribbage/src/observer/Flush.java b/Cribbage/src/observer/Flush.java new file mode 100644 index 0000000000000000000000000000000000000000..8307c7038fbdca5ad152dbbe3946642b78ddec83 --- /dev/null +++ b/Cribbage/src/observer/Flush.java @@ -0,0 +1,54 @@ +package observer; + +import ch.aplu.jcardgame.Card; +import ch.aplu.jcardgame.Hand; + +import cribbage.Cribbage; + +public class Flush implements Rule{ + + Hand hand; + Card starter; + int score = 0; + + public Flush(){} + + @Override + public void receiveHandCards(Hand hand, Hand starter){ + this.hand = hand; + this.starter = starter.get(0); + flushPoint(); + } + + @Override + public int getScore() { + return score; + } + + + private void flushPoint(){ + int nClubs = hand.getNumberOfCardsWithSuit(Cribbage.Suit.CLUBS); + if (nClubs == 4){ + score += (4 + isSameSuit(Cribbage.Suit.CLUBS, starter)); + } + int nDiamonds = hand.getNumberOfCardsWithSuit(Cribbage.Suit.DIAMONDS); + if (nDiamonds == 4){ + score += (4 + isSameSuit(Cribbage.Suit.DIAMONDS, starter)); + } + int nSpades = hand.getNumberOfCardsWithSuit(Cribbage.Suit.SPADES); + if (nSpades == 4){ + score += (4 + isSameSuit(Cribbage.Suit.SPADES, starter)); + } + int nHearts = hand.getNumberOfCardsWithSuit(Cribbage.Suit.HEARTS); + if (nHearts == 4){ + score += (4 + isSameSuit(Cribbage.Suit.HEARTS, starter)); + } + } + + private int isSameSuit(Cribbage.Suit suit, Card starter){ + if (starter.getSuit() == suit){ + return 1; + } + return 0; + } +} diff --git a/Cribbage/src/observer/HandCards.java b/Cribbage/src/observer/HandCards.java new file mode 100644 index 0000000000000000000000000000000000000000..0815b94d06a1fb2f7de532050c6a1950a1718782 --- /dev/null +++ b/Cribbage/src/observer/HandCards.java @@ -0,0 +1,14 @@ +package observer; + +import ch.aplu.jcardgame.Hand; + +public interface HandCards { + + void addRule(Rule rule); + + void removeRule(Rule rule); + + void sendHandCards(Hand hand, Hand starter); + + int scoreHandCards(); +} diff --git a/Cribbage/src/observer/Jack.java b/Cribbage/src/observer/Jack.java new file mode 100644 index 0000000000000000000000000000000000000000..d8123d323e38861e5483bb83e04e20d2e37d05e3 --- /dev/null +++ b/Cribbage/src/observer/Jack.java @@ -0,0 +1,32 @@ +package observer; + +import ch.aplu.jcardgame.Card; +import ch.aplu.jcardgame.Hand; + +import static cribbage.Cribbage.Rank.JACK; + +public class Jack implements Rule{ + + Hand hand; + Card starter; + int score = 0; + + public Jack(){} + + @Override + public void receiveHandCards(Hand hand, Hand starter){ + this.hand = hand; + this.starter = starter.get(0); + } + + @Override + public int getScore() { + return score; + } + + private void calculateScore(){ + if (hand.getCard(starter.getSuit(), JACK) != null){ + score ++; + } + } +} diff --git a/Cribbage/src/observer/Pairs.java b/Cribbage/src/observer/Pairs.java new file mode 100644 index 0000000000000000000000000000000000000000..daae509b624ea37b975875018009b06ab359b598 --- /dev/null +++ b/Cribbage/src/observer/Pairs.java @@ -0,0 +1,66 @@ +package observer; + +import ch.aplu.jcardgame.Card; +import ch.aplu.jcardgame.Hand; + +import java.util.ArrayList; +import java.util.Collections; + +public class Pairs implements Rule{ + + Hand hand = null; + int score = 0; + + public Pairs(){} + + @Override + public void receiveHandCards(Hand hand, Hand starter){ + this.hand = hand; + this.hand.insert(starter, false); + calculateScore(); + } + + @Override + public int getScore() { + return score; + } + + private void calculateScore(){ + ArrayList<Integer> cardValues = new ArrayList<>(); + for (Card c: hand.getCardList()){ + cardValues.add(c.getValue()); + } + Collections.sort(cardValues); + // 1,1,2,2,2,3,3,3,4,4,4,4,4,5,5 + int count = 1, preValue = cardValues.get(0); + for (int i=1; i<cardValues.size(); i++){ + if (cardValues.get(i) == preValue){ + count ++; + } else{ + score += pairScore(count); + count = 1; + preValue = cardValues.get(i); + } + } + } + + private int pairScore(int count){ + int score; + switch (count){ + case 1: + case 2: + score = 2; + break; + case 3: + score = 6; + break; + case 4: + score = 12; + break; + default: + return 0; + } + return score; + } + +} diff --git a/Cribbage/src/observer/Rule.java b/Cribbage/src/observer/Rule.java new file mode 100644 index 0000000000000000000000000000000000000000..4a700680775b8dc836065a56770cde11903e443d --- /dev/null +++ b/Cribbage/src/observer/Rule.java @@ -0,0 +1,10 @@ +package observer; + +import ch.aplu.jcardgame.Card; +import ch.aplu.jcardgame.Hand; + +public interface Rule { + + void receiveHandCards(Hand hand, Hand starter); + int getScore(); +} diff --git a/Cribbage/src/observer/Runs.java b/Cribbage/src/observer/Runs.java new file mode 100644 index 0000000000000000000000000000000000000000..faca545bfc2a14ec1c7f1b151a50f913a1fb45db --- /dev/null +++ b/Cribbage/src/observer/Runs.java @@ -0,0 +1,26 @@ +package observer; + +import ch.aplu.jcardgame.Hand; + +public class Runs implements Rule{ + + Hand hand = null; + int score = 0; + + public Runs(){} + + @Override + public void receiveHandCards(Hand hand, Hand starter){ + this.hand = hand; + this.hand.insert(starter, false); + calculateScore(); + } + + @Override + public int getScore() { + return score; + } + + private void calculateScore(){ + } +}