diff --git a/dominion/.idea/codeStyles/Project.xml b/dominion/.idea/codeStyles/Project.xml
new file mode 100644
index 000000000..30aa626c2
--- /dev/null
+++ b/dominion/.idea/codeStyles/Project.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dominion/.idea/dominion.iml b/dominion/.idea/dominion.iml
new file mode 100644
index 000000000..f08604bb6
--- /dev/null
+++ b/dominion/.idea/dominion.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/dominion/.idea/misc.xml b/dominion/.idea/misc.xml
new file mode 100644
index 000000000..8822db8f1
--- /dev/null
+++ b/dominion/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dominion/.idea/modules.xml b/dominion/.idea/modules.xml
new file mode 100644
index 000000000..b6bbcd7c9
--- /dev/null
+++ b/dominion/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dominion/.idea/vcs.xml b/dominion/.idea/vcs.xml
new file mode 100644
index 000000000..6c0b86358
--- /dev/null
+++ b/dominion/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dominion/.idea/workspace.xml b/dominion/.idea/workspace.xml
new file mode 100644
index 000000000..ab8b414c4
--- /dev/null
+++ b/dominion/.idea/workspace.xml
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1570996598136
+
+
+ 1570996598136
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dominion/CMakeLists.txt b/dominion/CMakeLists.txt
new file mode 100644
index 000000000..f8b139f2e
--- /dev/null
+++ b/dominion/CMakeLists.txt
@@ -0,0 +1,19 @@
+cmake_minimum_required(VERSION 3.12)
+project(dominion C)
+
+set(CMAKE_C_STANDARD 11)
+
+include_directories(.)
+
+add_executable(dominion
+ dominion.c
+ dominion.h
+ dominion_helpers.h
+ interface.c
+ interface.h
+ playdom.c
+ player.c
+ rngs.c
+ rngs.h
+ rt.c
+ testdrawcard.c)
diff --git a/dominion/cmake-build-debug/CMakeCache.txt b/dominion/cmake-build-debug/CMakeCache.txt
new file mode 100644
index 000000000..70e22b36a
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeCache.txt
@@ -0,0 +1,325 @@
+# This is the CMakeCache file.
+# For build in directory: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug
+# It was generated by CMake: /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar
+
+//Choose the type of build, options are: None Debug Release RelWithDebInfo
+// MinSizeRel ...
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//Id string of the compiler for the CodeBlocks IDE. Automatically
+// detected when left empty
+CMAKE_CODEBLOCKS_COMPILER_ID:STRING=
+
+//The CodeBlocks executable
+CMAKE_CODEBLOCKS_EXECUTABLE:FILEPATH=CMAKE_CODEBLOCKS_EXECUTABLE-NOTFOUND
+
+//Additional command line arguments when CodeBlocks invokes make.
+// Enter e.g. -j to get parallel builds
+CMAKE_CODEBLOCKS_MAKE_ARGUMENTS:STRING=-j8
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//C compiler
+CMAKE_C_COMPILER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
+
+//Flags used by the C compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the C compiler during DEBUG builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the C compiler during MINSIZEREL builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the C compiler during RELEASE builds.
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the C compiler during RELWITHDEBINFO builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Flags used by the linker during all build types.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during DEBUG builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during MINSIZEREL builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during RELEASE builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during RELWITHDEBINFO builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
+
+//Path to a program.
+CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
+
+//Flags used by the linker during the creation of modules during
+// all build types.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of modules during
+// DEBUG builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of modules during
+// MINSIZEREL builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELEASE builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of modules during
+// RELWITHDEBINFO builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump
+
+//Build architectures for OSX
+CMAKE_OSX_ARCHITECTURES:STRING=
+
+//Minimum OS X version to target for deployment (at runtime); newer
+// APIs weak linked. Set to empty string for default value.
+CMAKE_OSX_DEPLOYMENT_TARGET:STRING=
+
+//The product will be built against the headers and libraries located
+// inside the indicated SDK.
+CMAKE_OSX_SYSROOT:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=dominion
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib
+
+//Flags used by the linker during the creation of shared libraries
+// during all build types.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during DEBUG builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during MINSIZEREL builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELEASE builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of shared libraries
+// during RELWITHDEBINFO builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries
+// during all build types.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during DEBUG builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during MINSIZEREL builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELEASE builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during the creation of static libraries
+// during RELWITHDEBINFO builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//Path to a program.
+ProcessorCount_cmd_sysctl:FILEPATH=/usr/sbin/sysctl
+
+//Value Computed by CMake
+dominion_BINARY_DIR:STATIC=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug
+
+//Value Computed by CMake
+dominion_SOURCE_DIR:STATIC=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=12
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=2
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/ctest
+//ADVANCED property for variable: CMAKE_C_COMPILER
+CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=CodeBlocks
+//C compiler system defined macros
+CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS:INTERNAL=__llvm__;1;__clang__;1;__clang_major__;10;__clang_minor__; ;__clang_patchlevel__; ;__clang_version__;"10.0.0 (clang-1000.11.45.5)";__GNUC_MINOR__;2;__GNUC_PATCHLEVEL__;1;__GNUC__;4;__GXX_ABI_VERSION;1002;__ATOMIC_RELAXED; ;__ATOMIC_CONSUME;1;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_SEQ_CST;5;__OPENCL_MEMORY_SCOPE_WORK_ITEM; ;__OPENCL_MEMORY_SCOPE_WORK_GROUP;1;__OPENCL_MEMORY_SCOPE_DEVICE;2;__OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES;3;__OPENCL_MEMORY_SCOPE_SUB_GROUP;4;__PRAGMA_REDEFINE_EXTNAME;1;__VERSION__;"4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)";__OBJC_BOOL_IS_BOOL; ;__CONSTANT_CFSTRINGS__;1;__block;__attribute__((__blocks__(byref)));__BLOCKS__;1;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__LITTLE_ENDIAN__;1;_LP64;1;__LP64__;1;__CHAR_BIT__;8;__SCHAR_MAX__;127;__SHRT_MAX__;32767;__INT_MAX__;2147483647;__LONG_MAX__;9223372036854775807L;__LONG_LONG_MAX__;9223372036854775807LL;__WCHAR_MAX__;2147483647;__WINT_MAX__;2147483647;__INTMAX_MAX__;9223372036854775807L;__SIZE_MAX__;18446744073709551615UL;__UINTMAX_MAX__;18446744073709551615UL;__PTRDIFF_MAX__;9223372036854775807L;__INTPTR_MAX__;9223372036854775807L;__UINTPTR_MAX__;18446744073709551615UL;__SIZEOF_DOUBLE__;8;__SIZEOF_FLOAT__;4;__SIZEOF_INT__;4;__SIZEOF_LONG__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_LONG_LONG__;8;__SIZEOF_POINTER__;8;__SIZEOF_SHORT__;2;__SIZEOF_PTRDIFF_T__;8;__SIZEOF_SIZE_T__;8;__SIZEOF_WCHAR_T__;4;__SIZEOF_WINT_T__;4;__SIZEOF_INT128__;16;__INTMAX_TYPE__;long int;__INTMAX_FMTd__;"ld";__INTMAX_FMTi__;"li";__INTMAX_C_SUFFIX__;L;__UINTMAX_TYPE__;long unsigned int;__UINTMAX_FMTo__;"lo";__UINTMAX_FMTu__;"lu";__UINTMAX_FMTx__;"lx";__UINTMAX_FMTX__;"lX";__UINTMAX_C_SUFFIX__;UL;__INTMAX_WIDTH__;64;__PTRDIFF_TYPE__;long int;__PTRDIFF_FMTd__;"ld";__PTRDIFF_FMTi__;"li";__PTRDIFF_WIDTH__;64;__INTPTR_TYPE__;long int;__INTPTR_FMTd__;"ld";__INTPTR_FMTi__;"li";__INTPTR_WIDTH__;64;__SIZE_TYPE__;long unsigned int;__SIZE_FMTo__;"lo";__SIZE_FMTu__;"lu";__SIZE_FMTx__;"lx";__SIZE_FMTX__;"lX";__SIZE_WIDTH__;64;__WCHAR_TYPE__;int;__WCHAR_WIDTH__;32;__WINT_TYPE__;int;__WINT_WIDTH__;32;__SIG_ATOMIC_WIDTH__;32;__SIG_ATOMIC_MAX__;2147483647;__CHAR16_TYPE__;unsigned short;__CHAR32_TYPE__;unsigned int;__UINTMAX_WIDTH__;64;__UINTPTR_TYPE__;long unsigned int;__UINTPTR_FMTo__;"lo";__UINTPTR_FMTu__;"lu";__UINTPTR_FMTx__;"lx";__UINTPTR_FMTX__;"lX";__UINTPTR_WIDTH__;64;__FLT16_DENORM_MIN__;5.9604644775390625e-8F16;__FLT16_HAS_DENORM__;1;__FLT16_DIG__;3;__FLT16_DECIMAL_DIG__;5;__FLT16_EPSILON__;9.765625e-4F16;__FLT16_HAS_INFINITY__;1;__FLT16_HAS_QUIET_NAN__;1;__FLT16_MANT_DIG__;11;__FLT16_MAX_10_EXP__;4;__FLT16_MAX_EXP__;15;__FLT16_MAX__;6.5504e+4F16;__FLT16_MIN_10_EXP__;(-13);__FLT16_MIN_EXP__;(-14);__FLT16_MIN__;6.103515625e-5F16;__FLT_DENORM_MIN__;1.40129846e-45F;__FLT_HAS_DENORM__;1;__FLT_DIG__;6;__FLT_DECIMAL_DIG__;9;__FLT_EPSILON__;1.19209290e-7F;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__FLT_MANT_DIG__;24;__FLT_MAX_10_EXP__;38;__FLT_MAX_EXP__;128;__FLT_MAX__;3.40282347e+38F;__FLT_MIN_10_EXP__;(-37);__FLT_MIN_EXP__;(-125);__FLT_MIN__;1.17549435e-38F;__DBL_DENORM_MIN__;4.9406564584124654e-324;__DBL_HAS_DENORM__;1;__DBL_DIG__;15;__DBL_DECIMAL_DIG__;17;__DBL_EPSILON__;2.2204460492503131e-16;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_MAX_10_EXP__;308;__DBL_MAX_EXP__;1024;__DBL_MAX__;1.7976931348623157e+308;__DBL_MIN_10_EXP__;(-307);__DBL_MIN_EXP__;(-1021);__DBL_MIN__;2.2250738585072014e-308;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_DIG__;18;__LDBL_DECIMAL_DIG__;21;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_MAX_10_EXP__;4932;__LDBL_MAX_EXP__;16384;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN_10_EXP__;(-4931);__LDBL_MIN_EXP__;(-16381);__LDBL_MIN__;3.36210314311209350626e-4932L;__POINTER_WIDTH__;64;__BIGGEST_ALIGNMENT__;16;__INT8_TYPE__;signed char;__INT8_FMTd__;"hhd";__INT8_FMTi__;"hhi";__INT8_C_SUFFIX__; ;__INT16_TYPE__;short;__INT16_FMTd__;"hd";__INT16_FMTi__;"hi";__INT16_C_SUFFIX__; ;__INT32_TYPE__;int;__INT32_FMTd__;"d";__INT32_FMTi__;"i";__INT32_C_SUFFIX__; ;__INT64_TYPE__;long long int;__INT64_FMTd__;"lld";__INT64_FMTi__;"lli";__INT64_C_SUFFIX__;LL;__UINT8_TYPE__;unsigned char;__UINT8_FMTo__;"hho";__UINT8_FMTu__;"hhu";__UINT8_FMTx__;"hhx";__UINT8_FMTX__;"hhX";__UINT8_C_SUFFIX__; ;__UINT8_MAX__;255;__INT8_MAX__;127;__UINT16_TYPE__;unsigned short;__UINT16_FMTo__;"ho";__UINT16_FMTu__;"hu";__UINT16_FMTx__;"hx";__UINT16_FMTX__;"hX";__UINT16_C_SUFFIX__; ;__UINT16_MAX__;65535;__INT16_MAX__;32767;__UINT32_TYPE__;unsigned int;__UINT32_FMTo__;"o";__UINT32_FMTu__;"u";__UINT32_FMTx__;"x";__UINT32_FMTX__;"X";__UINT32_C_SUFFIX__;U;__UINT32_MAX__;4294967295U;__INT32_MAX__;2147483647;__UINT64_TYPE__;long long unsigned int;__UINT64_FMTo__;"llo";__UINT64_FMTu__;"llu";__UINT64_FMTx__;"llx";__UINT64_FMTX__;"llX";__UINT64_C_SUFFIX__;ULL;__UINT64_MAX__;18446744073709551615ULL;__INT64_MAX__;9223372036854775807LL;__INT_LEAST8_TYPE__;signed char;__INT_LEAST8_MAX__;127;__INT_LEAST8_FMTd__;"hhd";__INT_LEAST8_FMTi__;"hhi";__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST8_MAX__;255;__UINT_LEAST8_FMTo__;"hho";__UINT_LEAST8_FMTu__;"hhu";__UINT_LEAST8_FMTx__;"hhx";__UINT_LEAST8_FMTX__;"hhX";__INT_LEAST16_TYPE__;short;__INT_LEAST16_MAX__;32767;__INT_LEAST16_FMTd__;"hd";__INT_LEAST16_FMTi__;"hi";__UINT_LEAST16_TYPE__;unsigned short;__UINT_LEAST16_MAX__;65535;__UINT_LEAST16_FMTo__;"ho";__UINT_LEAST16_FMTu__;"hu";__UINT_LEAST16_FMTx__;"hx";__UINT_LEAST16_FMTX__;"hX";__INT_LEAST32_TYPE__;int;__INT_LEAST32_MAX__;2147483647;__INT_LEAST32_FMTd__;"d";__INT_LEAST32_FMTi__;"i";__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST32_MAX__;4294967295U;__UINT_LEAST32_FMTo__;"o";__UINT_LEAST32_FMTu__;"u";__UINT_LEAST32_FMTx__;"x";__UINT_LEAST32_FMTX__;"X";__INT_LEAST64_TYPE__;long int;__INT_LEAST64_MAX__;9223372036854775807L;__INT_LEAST64_FMTd__;"ld";__INT_LEAST64_FMTi__;"li";__UINT_LEAST64_TYPE__;long unsigned int;__UINT_LEAST64_MAX__;18446744073709551615UL;__UINT_LEAST64_FMTo__;"lo";__UINT_LEAST64_FMTu__;"lu";__UINT_LEAST64_FMTx__;"lx";__UINT_LEAST64_FMTX__;"lX";__INT_FAST8_TYPE__;signed char;__INT_FAST8_MAX__;127;__INT_FAST8_FMTd__;"hhd";__INT_FAST8_FMTi__;"hhi";__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST8_MAX__;255;__UINT_FAST8_FMTo__;"hho";__UINT_FAST8_FMTu__;"hhu";__UINT_FAST8_FMTx__;"hhx";__UINT_FAST8_FMTX__;"hhX";__INT_FAST16_TYPE__;short;__INT_FAST16_MAX__;32767;__INT_FAST16_FMTd__;"hd";__INT_FAST16_FMTi__;"hi";__UINT_FAST16_TYPE__;unsigned short;__UINT_FAST16_MAX__;65535;__UINT_FAST16_FMTo__;"ho";__UINT_FAST16_FMTu__;"hu";__UINT_FAST16_FMTx__;"hx";__UINT_FAST16_FMTX__;"hX";__INT_FAST32_TYPE__;int;__INT_FAST32_MAX__;2147483647;__INT_FAST32_FMTd__;"d";__INT_FAST32_FMTi__;"i";__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST32_MAX__;4294967295U;__UINT_FAST32_FMTo__;"o";__UINT_FAST32_FMTu__;"u";__UINT_FAST32_FMTx__;"x";__UINT_FAST32_FMTX__;"X";__INT_FAST64_TYPE__;long int;__INT_FAST64_MAX__;9223372036854775807L;__INT_FAST64_FMTd__;"ld";__INT_FAST64_FMTi__;"li";__UINT_FAST64_TYPE__;long unsigned int;__UINT_FAST64_MAX__;18446744073709551615UL;__UINT_FAST64_FMTo__;"lo";__UINT_FAST64_FMTu__;"lu";__UINT_FAST64_FMTx__;"lx";__UINT_FAST64_FMTX__;"lX";__USER_LABEL_PREFIX__;_;__FINITE_MATH_ONLY__; ;__GNUC_STDC_INLINE__;1;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__CLANG_ATOMIC_BOOL_LOCK_FREE;2;__CLANG_ATOMIC_CHAR_LOCK_FREE;2;__CLANG_ATOMIC_CHAR16_T_LOCK_FREE;2;__CLANG_ATOMIC_CHAR32_T_LOCK_FREE;2;__CLANG_ATOMIC_WCHAR_T_LOCK_FREE;2;__CLANG_ATOMIC_SHORT_LOCK_FREE;2;__CLANG_ATOMIC_INT_LOCK_FREE;2;__CLANG_ATOMIC_LONG_LOCK_FREE;2;__CLANG_ATOMIC_LLONG_LOCK_FREE;2;__CLANG_ATOMIC_POINTER_LOCK_FREE;2;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__NO_INLINE__;1;__PIC__;2;__pic__;2;__FLT_EVAL_METHOD__; ;__FLT_RADIX__;2;__DECIMAL_DIG__;__LDBL_DECIMAL_DIG__;__SSP__;1;__nonnull;_Nonnull;__null_unspecified;_Null_unspecified;__nullable;_Nullable;__amd64__;1;__amd64;1;__x86_64;1;__x86_64__;1;__core2;1;__core2__;1;__tune_core2__;1;__REGISTER_PREFIX__; ;__NO_MATH_INLINES;1;__FXSR__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16;1;__SSE4_1__;1;__SSSE3__;1;__SSE3__;1;__SSE2__;1;__SSE2_MATH__;1;__SSE__;1;__SSE_MATH__;1;__MMX__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__APPLE_CC__;6000;__APPLE__;1;__STDC_NO_THREADS__;1;OBJC_NEW_PROPERTIES;1;__apple_build_version__;10001145;__weak;__attribute__((objc_gc(weak)));__strong; ;__unsafe_unretained; ;__DYNAMIC__;1;__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__;101400;__MACH__;1;__STDC__;1;__STDC_HOSTED__;1;__STDC_VERSION__;201112L;__STDC_UTF_16__;1;__STDC_UTF_32__;1
+//C compiler system include directories
+CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS:INTERNAL=/usr/local/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include;/System/Library/Frameworks;/Library/Frameworks
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Generator instance identifier.
+CMAKE_GENERATOR_INSTANCE:INTERNAL=
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion
+//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL
+CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/usr/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: ProcessorCount_cmd_sysctl
+ProcessorCount_cmd_sysctl-ADVANCED:INTERNAL=1
+
diff --git a/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeCCompiler.cmake b/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeCCompiler.cmake
new file mode 100644
index 000000000..1a65f8775
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeCCompiler.cmake
@@ -0,0 +1,73 @@
+set(CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "AppleClang")
+set(CMAKE_C_COMPILER_VERSION "10.0.0.10001145")
+set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "Darwin")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+
+
+set(CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar")
+set(CMAKE_C_COMPILER_AR "")
+set(CMAKE_RANLIB "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib")
+set(CMAKE_C_COMPILER_RANLIB "")
+set(CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCC )
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks")
diff --git a/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeDetermineCompilerABI_C.bin b/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 000000000..4d5729131
Binary files /dev/null and b/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeDetermineCompilerABI_C.bin differ
diff --git a/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeSystem.cmake b/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeSystem.cmake
new file mode 100644
index 000000000..086cb917b
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Darwin-18.7.0")
+set(CMAKE_HOST_SYSTEM_NAME "Darwin")
+set(CMAKE_HOST_SYSTEM_VERSION "18.7.0")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+
+
+set(CMAKE_SYSTEM "Darwin-18.7.0")
+set(CMAKE_SYSTEM_NAME "Darwin")
+set(CMAKE_SYSTEM_VERSION "18.7.0")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/dominion/cmake-build-debug/CMakeFiles/3.12.2/CompilerIdC/CMakeCCompilerId.c b/dominion/cmake-build-debug/CMakeFiles/3.12.2/CompilerIdC/CMakeCCompilerId.c
new file mode 100644
index 000000000..bfc6ebbfb
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/3.12.2/CompilerIdC/CMakeCCompilerId.c
@@ -0,0 +1,623 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+#if defined(__CLASSIC_C__)
+/* cv-qualifiers did not exist in K&R C */
+# define const
+# define volatile
+#endif
+
+
+/* Version number components: V=Version, R=Revision, P=Patch
+ Version date components: YYYY=Year, MM=Month, DD=Day */
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+ /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# if defined(__INTEL_COMPILER_UPDATE)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+# else
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+ /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+ /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+# define COMPILER_ID "Watcom"
+ /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "OpenWatcom"
+ /* __WATCOMC__ = VVRP + 1100 */
+# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__SUNPRO_C)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_C >= 0x5100
+ /* __SUNPRO_C = 0xVRRP */
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
+# else
+ /* __SUNPRO_CC = 0xVRP */
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
+# endif
+
+#elif defined(__HP_cc)
+# define COMPILER_ID "HP"
+ /* __HP_cc = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100)
+
+#elif defined(__DECC)
+# define COMPILER_ID "Compaq"
+ /* __DECC_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000)
+
+#elif defined(__IBMC__) && defined(__COMPILER_VER__)
+# define COMPILER_ID "zOS"
+# if defined(__ibmxl__)
+# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
+# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
+# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
+# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
+# else
+ /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
+# endif
+
+
+#elif defined(__ibmxl__) || (defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800)
+# define COMPILER_ID "XL"
+# if defined(__ibmxl__)
+# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
+# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
+# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
+# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
+# else
+ /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
+# endif
+
+
+#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
+# define COMPILER_ID "VisualAge"
+# if defined(__ibmxl__)
+# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
+# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
+# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
+# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
+# else
+ /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
+# endif
+
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+ /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
+
+#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
+# define COMPILER_ID "Fujitsu"
+
+#elif defined(__TINYC__)
+# define COMPILER_ID "TinyCC"
+
+#elif defined(__BCC__)
+# define COMPILER_ID "Bruce"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+# define COMPILER_ID "AppleClang"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# if defined(__GNUC_MINOR__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+ /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+# if _MSC_VER >= 1400
+ /* _MSC_FULL_VER = VVRRPPPPP */
+# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+# else
+ /* _MSC_FULL_VER = VVRRPPPP */
+# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+# endif
+# endif
+# if defined(_MSC_BUILD)
+# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+#if defined(__VISUALDSPVERSION__)
+ /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+# if defined(__VER__)
+# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
+# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
+# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
+# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
+# endif
+
+#elif defined(__ARMCC_VERSION)
+# define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+ /* __ARMCC_VERSION = VRRPPPP */
+ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
+ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
+ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
+#else
+ /* __ARMCC_VERSION = VRPPPP */
+ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
+ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
+ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
+#endif
+
+
+#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC)
+# define COMPILER_ID "SDCC"
+# if defined(__SDCC_VERSION_MAJOR)
+# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR)
+# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH)
+# else
+ /* SDCC = VRP */
+# define COMPILER_VERSION_MAJOR DEC(SDCC/100)
+# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(SDCC % 10)
+# endif
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+ /* _SGI_COMPILER_VERSION = VRP */
+# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10)
+# else
+ /* _COMPILER_VERSION = VRP */
+# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10)
+# endif
+
+
+/* These compilers are either not known or too old to define an
+ identification macro. Try to identify the platform and guess that
+ it is the native compiler. */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXE) || defined(__CRAYXC)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name. */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+# define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+# define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+# define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+# define PLATFORM_ID "Windows3x"
+
+# else /* unknown platform */
+# define PLATFORM_ID
+# endif
+
+#else /* unknown platform */
+# define PLATFORM_ID
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+ the architecture of the compiler being used. This is because
+ the compilers do not have flags that can change the architecture,
+ but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+# define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+# define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+# define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM64)
+# define ARCHITECTURE_ID "ARM64"
+
+# elif defined(_M_ARM)
+# if _M_ARM == 4
+# define ARCHITECTURE_ID "ARMV4I"
+# elif _M_ARM == 5
+# define ARCHITECTURE_ID "ARMV5I"
+# else
+# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+# endif
+
+# elif defined(_M_MIPS)
+# define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+# define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+# define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+# define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+# define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+# define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
+# if defined(__ICCARM__)
+# define ARCHITECTURE_ID "ARM"
+
+# elif defined(__ICCAVR__)
+# define ARCHITECTURE_ID "AVR"
+
+# else /* unknown architecture */
+# define ARCHITECTURE_ID ""
+# endif
+#else
+# define ARCHITECTURE_ID
+#endif
+
+/* Convert integer to decimal digit literals. */
+#define DEC(n) \
+ ('0' + (((n) / 10000000)%10)), \
+ ('0' + (((n) / 1000000)%10)), \
+ ('0' + (((n) / 100000)%10)), \
+ ('0' + (((n) / 10000)%10)), \
+ ('0' + (((n) / 1000)%10)), \
+ ('0' + (((n) / 100)%10)), \
+ ('0' + (((n) / 10)%10)), \
+ ('0' + ((n) % 10))
+
+/* Convert integer to hex digit literals. */
+#define HEX(n) \
+ ('0' + ((n)>>28 & 0xF)), \
+ ('0' + ((n)>>24 & 0xF)), \
+ ('0' + ((n)>>20 & 0xF)), \
+ ('0' + ((n)>>16 & 0xF)), \
+ ('0' + ((n)>>12 & 0xF)), \
+ ('0' + ((n)>>8 & 0xF)), \
+ ('0' + ((n)>>4 & 0xF)), \
+ ('0' + ((n) & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+ 'I', 'N', 'F', 'O', ':',
+ 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+ COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+ '.', COMPILER_VERSION_MINOR,
+# ifdef COMPILER_VERSION_PATCH
+ '.', COMPILER_VERSION_PATCH,
+# ifdef COMPILER_VERSION_TWEAK
+ '.', COMPILER_VERSION_TWEAK,
+# endif
+# endif
+# endif
+ ']','\0'};
+#endif
+
+/* Construct a string literal encoding the internal version number. */
+#ifdef COMPILER_VERSION_INTERNAL
+char const info_version_internal[] = {
+ 'I', 'N', 'F', 'O', ':',
+ 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
+ 'i','n','t','e','r','n','a','l','[',
+ COMPILER_VERSION_INTERNAL,']','\0'};
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+ 'I', 'N', 'F', 'O', ':',
+ 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+ SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+ '.', SIMULATE_VERSION_MINOR,
+# ifdef SIMULATE_VERSION_PATCH
+ '.', SIMULATE_VERSION_PATCH,
+# ifdef SIMULATE_VERSION_TWEAK
+ '.', SIMULATE_VERSION_TWEAK,
+# endif
+# endif
+# endif
+ ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+
+#if !defined(__STDC__)
+# if (defined(_MSC_VER) && !defined(__clang__)) \
+ || (defined(__ibmxl__) || defined(__IBMC__))
+# define C_DIALECT "90"
+# else
+# define C_DIALECT
+# endif
+#elif __STDC_VERSION__ >= 201000L
+# define C_DIALECT "11"
+#elif __STDC_VERSION__ >= 199901L
+# define C_DIALECT "99"
+#else
+# define C_DIALECT "90"
+#endif
+const char* info_language_dialect_default =
+ "INFO" ":" "dialect_default[" C_DIALECT "]";
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+# if defined(__CLASSIC_C__)
+int main(argc, argv) int argc; char *argv[];
+# else
+int main(int argc, char* argv[])
+# endif
+{
+ int require = 0;
+ require += info_compiler[argc];
+ require += info_platform[argc];
+ require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+ require += info_version[argc];
+#endif
+#ifdef COMPILER_VERSION_INTERNAL
+ require += info_version_internal[argc];
+#endif
+#ifdef SIMULATE_ID
+ require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+ require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXE) || defined(__CRAYXC)
+ require += info_cray[argc];
+#endif
+ require += info_language_dialect_default[argc];
+ (void)argv;
+ return require;
+}
+#endif
diff --git a/dominion/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake b/dominion/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100644
index 000000000..1132d1e8c
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -0,0 +1,16 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.12
+
+# Relative path conversion top directories.
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug")
+
+# Force unix paths in dependencies.
+set(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/dominion/cmake-build-debug/CMakeFiles/CMakeOutput.log b/dominion/cmake-build-debug/CMakeFiles/CMakeOutput.log
new file mode 100644
index 000000000..19f26ef6c
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/CMakeOutput.log
@@ -0,0 +1,150 @@
+The system is: Darwin - 18.7.0 - x86_64
+Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
+Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
+Build flags:
+Id flags:
+
+The output was:
+0
+
+
+Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"
+
+The C compiler identification is AppleClang, found in "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/3.12.2/CompilerIdC/a.out"
+
+Determining if the C compiler works passed with the following output:
+Change Dir: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_2d0cb/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_2d0cb.dir/build.make CMakeFiles/cmTC_2d0cb.dir/build
+Building C object CMakeFiles/cmTC_2d0cb.dir/testCCompiler.c.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -o CMakeFiles/cmTC_2d0cb.dir/testCCompiler.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/CMakeTmp/testCCompiler.c
+Linking C executable cmTC_2d0cb
+/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2d0cb.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_2d0cb.dir/testCCompiler.c.o -o cmTC_2d0cb
+
+
+Detecting C compiler ABI info compiled with the following output:
+Change Dir: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_e01da/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_e01da.dir/build.make CMakeFiles/cmTC_e01da.dir/build
+Building C object CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -o CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o -c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeCCompilerABI.c
+Linking C executable cmTC_e01da
+/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E cmake_link_script CMakeFiles/cmTC_e01da.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o -o cmTC_e01da
+Apple LLVM version 10.0.0 (clang-1000.11.45.5)
+Target: x86_64-apple-darwin18.7.0
+Thread model: posix
+InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
+ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.14.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -o cmTC_e01da -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0/lib/darwin/libclang_rt.osx.a
+@(#)PROGRAM:ld PROJECT:ld64-409.12
+BUILD 17:47:51 Sep 25 2018
+configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em arm64e arm64_32
+Library search paths:
+ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib
+Framework search paths:
+ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/
+
+
+Parsed C implicit link information from above output:
+ link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)]
+ ignore line: [Change Dir: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/CMakeTmp]
+ ignore line: []
+ ignore line: [Run Build Command:"/usr/bin/make" "cmTC_e01da/fast"]
+ ignore line: [/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_e01da.dir/build.make CMakeFiles/cmTC_e01da.dir/build]
+ ignore line: [Building C object CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o]
+ ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -o CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o -c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeCCompilerABI.c]
+ ignore line: [Linking C executable cmTC_e01da]
+ ignore line: [/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E cmake_link_script CMakeFiles/cmTC_e01da.dir/link.txt --verbose=1]
+ ignore line: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o -o cmTC_e01da ]
+ ignore line: [Apple LLVM version 10.0.0 (clang-1000.11.45.5)]
+ ignore line: [Target: x86_64-apple-darwin18.7.0]
+ ignore line: [Thread model: posix]
+ ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin]
+ link line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.14.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -o cmTC_e01da -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0/lib/darwin/libclang_rt.osx.a]
+ arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld] ==> ignore
+ arg [-demangle] ==> ignore
+ arg [-lto_library] ==> ignore, skip following value
+ arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib] ==> skip value of -lto_library
+ arg [-dynamic] ==> ignore
+ arg [-arch] ==> ignore
+ arg [x86_64] ==> ignore
+ arg [-macosx_version_min] ==> ignore
+ arg [10.14.0] ==> ignore
+ arg [-syslibroot] ==> ignore
+ arg [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk] ==> ignore
+ arg [-o] ==> ignore
+ arg [cmTC_e01da] ==> ignore
+ arg [-search_paths_first] ==> ignore
+ arg [-headerpad_max_install_names] ==> ignore
+ arg [-v] ==> ignore
+ arg [CMakeFiles/cmTC_e01da.dir/CMakeCCompilerABI.c.o] ==> ignore
+ arg [-lSystem] ==> lib [System]
+ arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0/lib/darwin/libclang_rt.osx.a]
+ Library search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib]
+ Framework search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/]
+ remove lib [System]
+ remove lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0/lib/darwin/libclang_rt.osx.a]
+ collapse library dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib]
+ collapse framework dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks]
+ implicit libs: []
+ implicit dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib]
+ implicit fwks: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks]
+
+
+
+
+Detecting C [-std=c11] compiler features compiled with the following output:
+Change Dir: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_ff510/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_ff510.dir/build.make CMakeFiles/cmTC_ff510.dir/build
+Building C object CMakeFiles/cmTC_ff510.dir/feature_tests.c.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -std=c11 -o CMakeFiles/cmTC_ff510.dir/feature_tests.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/feature_tests.c
+Linking C executable cmTC_ff510
+/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ff510.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_ff510.dir/feature_tests.c.o -o cmTC_ff510
+
+
+ Feature record: C_FEATURE:1c_function_prototypes
+ Feature record: C_FEATURE:1c_restrict
+ Feature record: C_FEATURE:1c_static_assert
+ Feature record: C_FEATURE:1c_variadic_macros
+
+
+Detecting C [-std=c99] compiler features compiled with the following output:
+Change Dir: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_44ae7/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_44ae7.dir/build.make CMakeFiles/cmTC_44ae7.dir/build
+Building C object CMakeFiles/cmTC_44ae7.dir/feature_tests.c.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -std=c99 -o CMakeFiles/cmTC_44ae7.dir/feature_tests.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/feature_tests.c
+Linking C executable cmTC_44ae7
+/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E cmake_link_script CMakeFiles/cmTC_44ae7.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_44ae7.dir/feature_tests.c.o -o cmTC_44ae7
+
+
+ Feature record: C_FEATURE:1c_function_prototypes
+ Feature record: C_FEATURE:1c_restrict
+ Feature record: C_FEATURE:0c_static_assert
+ Feature record: C_FEATURE:1c_variadic_macros
+
+
+Detecting C [-std=c90] compiler features compiled with the following output:
+Change Dir: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_1574c/fast"
+/Applications/Xcode.app/Contents/Developer/usr/bin/make -f CMakeFiles/cmTC_1574c.dir/build.make CMakeFiles/cmTC_1574c.dir/build
+Building C object CMakeFiles/cmTC_1574c.dir/feature_tests.c.o
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -std=c90 -o CMakeFiles/cmTC_1574c.dir/feature_tests.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/feature_tests.c
+Linking C executable cmTC_1574c
+/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1574c.dir/link.txt --verbose=1
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_1574c.dir/feature_tests.c.o -o cmTC_1574c
+
+
+ Feature record: C_FEATURE:1c_function_prototypes
+ Feature record: C_FEATURE:0c_restrict
+ Feature record: C_FEATURE:0c_static_assert
+ Feature record: C_FEATURE:0c_variadic_macros
diff --git a/dominion/cmake-build-debug/CMakeFiles/Makefile.cmake b/dominion/cmake-build-debug/CMakeFiles/Makefile.cmake
new file mode 100644
index 000000000..704b26eed
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Makefile.cmake
@@ -0,0 +1,102 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.12
+
+# The generator used is:
+set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
+
+# The top level Makefile was generated from the following files:
+set(CMAKE_MAKEFILE_DEPENDS
+ "CMakeCache.txt"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeCCompiler.cmake.in"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeCCompilerABI.c"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeCInformation.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeCommonLanguageInclude.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeCompilerIdDetection.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeDetermineCCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeDetermineCompileFeatures.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeDetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeDetermineCompilerABI.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeDetermineCompilerId.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeDetermineSystem.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeFindBinUtils.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeFindCodeBlocks.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeGenericSystem.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeInitializeConfigs.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeLanguageInformation.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeParseImplicitLinkInfo.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeSystem.cmake.in"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeSystemSpecificInformation.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeSystemSpecificInitialize.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeTestCCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeTestCompilerCommon.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/CMakeUnixFindMake.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/ADSP-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/AppleClang-C-FeatureTests.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/AppleClang-C.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Borland-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Bruce-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Clang-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Clang.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Cray-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/GHS-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/GNU-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/GNU.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/HP-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/IAR-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Intel-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/MIPSpro-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/MSVC-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/PGI-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/PathScale-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/SCO-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/TI-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/Watcom-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/XL-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Internal/FeatureTesting.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Platform/Apple-AppleClang-C.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Platform/Apple-Clang-C.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Platform/Apple-Clang.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Platform/Darwin-Initialize.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Platform/Darwin.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/Platform/UnixPaths.cmake"
+ "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.12/Modules/ProcessorCount.cmake"
+ "../CMakeLists.txt"
+ "CMakeFiles/3.12.2/CMakeCCompiler.cmake"
+ "CMakeFiles/3.12.2/CMakeSystem.cmake"
+ "CMakeFiles/feature_tests.c"
+ )
+
+# The corresponding makefile is:
+set(CMAKE_MAKEFILE_OUTPUTS
+ "Makefile"
+ "CMakeFiles/cmake.check_cache"
+ )
+
+# Byproducts of CMake generate step:
+set(CMAKE_MAKEFILE_PRODUCTS
+ "CMakeFiles/3.12.2/CMakeSystem.cmake"
+ "CMakeFiles/3.12.2/CMakeCCompiler.cmake"
+ "CMakeFiles/3.12.2/CMakeCCompiler.cmake"
+ "CMakeFiles/CMakeDirectoryInformation.cmake"
+ )
+
+# Dependency information for all targets:
+set(CMAKE_DEPEND_INFO_FILES
+ "CMakeFiles/dominion.dir/DependInfo.cmake"
+ )
diff --git a/dominion/cmake-build-debug/CMakeFiles/Makefile2 b/dominion/cmake-build-debug/CMakeFiles/Makefile2
new file mode 100644
index 000000000..688c09313
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Makefile2
@@ -0,0 +1,113 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.12
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# The main recursive all target
+all:
+
+.PHONY : all
+
+# The main recursive preinstall target
+preinstall:
+
+.PHONY : preinstall
+
+# The main recursive clean target
+clean:
+
+.PHONY : clean
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake
+
+# The command to remove a file.
+RM = /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug
+
+#=============================================================================
+# Target rules for target CMakeFiles/dominion.dir
+
+# All Build rule for target.
+CMakeFiles/dominion.dir/all:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/depend
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/build
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=1,2,3,4,5,6,7,8 "Built target dominion"
+.PHONY : CMakeFiles/dominion.dir/all
+
+# Include target in all.
+all: CMakeFiles/dominion.dir/all
+
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/dominion.dir/rule: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles 8
+ $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/dominion.dir/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles 0
+.PHONY : CMakeFiles/dominion.dir/rule
+
+# Convenience name for target.
+dominion: CMakeFiles/dominion.dir/rule
+
+.PHONY : dominion
+
+# clean rule for target.
+CMakeFiles/dominion.dir/clean:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/clean
+.PHONY : CMakeFiles/dominion.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/dominion.dir/clean
+
+.PHONY : clean
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/1 b/dominion/cmake-build-debug/CMakeFiles/Progress/1
new file mode 100644
index 000000000..7b4d68d70
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/1
@@ -0,0 +1 @@
+empty
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/2 b/dominion/cmake-build-debug/CMakeFiles/Progress/2
new file mode 100644
index 000000000..7b4d68d70
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/2
@@ -0,0 +1 @@
+empty
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/3 b/dominion/cmake-build-debug/CMakeFiles/Progress/3
new file mode 100644
index 000000000..7b4d68d70
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/3
@@ -0,0 +1 @@
+empty
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/4 b/dominion/cmake-build-debug/CMakeFiles/Progress/4
new file mode 100644
index 000000000..7b4d68d70
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/4
@@ -0,0 +1 @@
+empty
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/5 b/dominion/cmake-build-debug/CMakeFiles/Progress/5
new file mode 100644
index 000000000..7b4d68d70
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/5
@@ -0,0 +1 @@
+empty
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/6 b/dominion/cmake-build-debug/CMakeFiles/Progress/6
new file mode 100644
index 000000000..7b4d68d70
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/6
@@ -0,0 +1 @@
+empty
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/7 b/dominion/cmake-build-debug/CMakeFiles/Progress/7
new file mode 100644
index 000000000..7b4d68d70
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/7
@@ -0,0 +1 @@
+empty
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/8 b/dominion/cmake-build-debug/CMakeFiles/Progress/8
new file mode 100644
index 000000000..7b4d68d70
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/8
@@ -0,0 +1 @@
+empty
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/Progress/count.txt b/dominion/cmake-build-debug/CMakeFiles/Progress/count.txt
new file mode 100644
index 000000000..45a4fb75d
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/Progress/count.txt
@@ -0,0 +1 @@
+8
diff --git a/dominion/cmake-build-debug/CMakeFiles/TargetDirectories.txt b/dominion/cmake-build-debug/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 000000000..c719f350d
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/rebuild_cache.dir
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/edit_cache.dir
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir
diff --git a/dominion/cmake-build-debug/CMakeFiles/clion-environment.txt b/dominion/cmake-build-debug/CMakeFiles/clion-environment.txt
new file mode 100644
index 000000000..26e70bf87
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/clion-environment.txt
@@ -0,0 +1,3 @@
+Options:
+
+Options:
\ No newline at end of file
diff --git a/dominion/cmake-build-debug/CMakeFiles/clion-log.txt b/dominion/cmake-build-debug/CMakeFiles/clion-log.txt
new file mode 100644
index 000000000..cc13bc656
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/clion-log.txt
@@ -0,0 +1,11 @@
+/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion
+-- The C compiler identification is AppleClang 10.0.0.10001145
+-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
+-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
+-- Detecting C compiler ABI info
+-- Detecting C compiler ABI info - done
+-- Detecting C compile features
+-- Detecting C compile features - done
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug
diff --git a/dominion/cmake-build-debug/CMakeFiles/cmake.check_cache b/dominion/cmake-build-debug/CMakeFiles/cmake.check_cache
new file mode 100644
index 000000000..3dccd7317
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/C.includecache b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/C.includecache
new file mode 100644
index 000000000..e3b8abbee
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/C.includecache
@@ -0,0 +1,112 @@
+#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform:
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.c
+dominion.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+dominion_helpers.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion_helpers.h
+rngs.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+stdio.h
+-
+math.h
+-
+stdlib.h
+-
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion_helpers.h
+dominion.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.c
+stdio.h
+-
+math.h
+-
+assert.h
+-
+string.h
+-
+rngs.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+interface.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.h
+dominion.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.h
+dominion.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/playdom.c
+dominion.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+stdio.h
+-
+rngs.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+stdlib.h
+-
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/player.c
+stdio.h
+-
+stdlib.h
+-
+assert.h
+-
+stdio.h
+-
+stdlib.h
+-
+string.h
+-
+math.h
+-
+dominion.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+interface.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.h
+rngs.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.c
+stdio.h
+-
+time.h
+-
+rngs.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rt.c
+rngs.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+stdio.h
+-
+stdlib.h
+-
+
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/testdrawcard.c
+dominion.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+dominion_helpers.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion_helpers.h
+string.h
+-
+stdio.h
+-
+assert.h
+-
+rngs.h
+/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/DependInfo.cmake b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/DependInfo.cmake
new file mode 100644
index 000000000..a93b48244
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/DependInfo.cmake
@@ -0,0 +1,27 @@
+# The set of languages for which implicit dependencies are needed:
+set(CMAKE_DEPENDS_LANGUAGES
+ "C"
+ )
+# The set of files for implicit dependencies of each language:
+set(CMAKE_DEPENDS_CHECK_C
+ "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.c" "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir/dominion.c.o"
+ "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.c" "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir/interface.c.o"
+ "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/playdom.c" "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir/playdom.c.o"
+ "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/player.c" "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir/player.c.o"
+ "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.c" "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir/rngs.c.o"
+ "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rt.c" "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir/rt.c.o"
+ "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/testdrawcard.c" "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir/testdrawcard.c.o"
+ )
+set(CMAKE_C_COMPILER_ID "AppleClang")
+
+# The include file search paths:
+set(CMAKE_C_TARGET_INCLUDE_PATH
+ "../."
+ )
+
+# Targets to which this target links.
+set(CMAKE_TARGET_LINKED_INFO_FILES
+ )
+
+# Fortran module output directory.
+set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/build.make b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/build.make
new file mode 100644
index 000000000..15afbe30c
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/build.make
@@ -0,0 +1,188 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.12
+
+# Delete rule output on recipe failure.
+.DELETE_ON_ERROR:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake
+
+# The command to remove a file.
+RM = /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug
+
+# Include any dependencies generated for this target.
+include CMakeFiles/dominion.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/dominion.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/dominion.dir/flags.make
+
+CMakeFiles/dominion.dir/dominion.c.o: CMakeFiles/dominion.dir/flags.make
+CMakeFiles/dominion.dir/dominion.c.o: ../dominion.c
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/dominion.dir/dominion.c.o"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/dominion.dir/dominion.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.c
+
+CMakeFiles/dominion.dir/dominion.c.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/dominion.dir/dominion.c.i"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.c > CMakeFiles/dominion.dir/dominion.c.i
+
+CMakeFiles/dominion.dir/dominion.c.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/dominion.dir/dominion.c.s"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.c -o CMakeFiles/dominion.dir/dominion.c.s
+
+CMakeFiles/dominion.dir/interface.c.o: CMakeFiles/dominion.dir/flags.make
+CMakeFiles/dominion.dir/interface.c.o: ../interface.c
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/dominion.dir/interface.c.o"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/dominion.dir/interface.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.c
+
+CMakeFiles/dominion.dir/interface.c.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/dominion.dir/interface.c.i"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.c > CMakeFiles/dominion.dir/interface.c.i
+
+CMakeFiles/dominion.dir/interface.c.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/dominion.dir/interface.c.s"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.c -o CMakeFiles/dominion.dir/interface.c.s
+
+CMakeFiles/dominion.dir/playdom.c.o: CMakeFiles/dominion.dir/flags.make
+CMakeFiles/dominion.dir/playdom.c.o: ../playdom.c
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/dominion.dir/playdom.c.o"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/dominion.dir/playdom.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/playdom.c
+
+CMakeFiles/dominion.dir/playdom.c.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/dominion.dir/playdom.c.i"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/playdom.c > CMakeFiles/dominion.dir/playdom.c.i
+
+CMakeFiles/dominion.dir/playdom.c.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/dominion.dir/playdom.c.s"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/playdom.c -o CMakeFiles/dominion.dir/playdom.c.s
+
+CMakeFiles/dominion.dir/player.c.o: CMakeFiles/dominion.dir/flags.make
+CMakeFiles/dominion.dir/player.c.o: ../player.c
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object CMakeFiles/dominion.dir/player.c.o"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/dominion.dir/player.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/player.c
+
+CMakeFiles/dominion.dir/player.c.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/dominion.dir/player.c.i"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/player.c > CMakeFiles/dominion.dir/player.c.i
+
+CMakeFiles/dominion.dir/player.c.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/dominion.dir/player.c.s"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/player.c -o CMakeFiles/dominion.dir/player.c.s
+
+CMakeFiles/dominion.dir/rngs.c.o: CMakeFiles/dominion.dir/flags.make
+CMakeFiles/dominion.dir/rngs.c.o: ../rngs.c
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object CMakeFiles/dominion.dir/rngs.c.o"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/dominion.dir/rngs.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.c
+
+CMakeFiles/dominion.dir/rngs.c.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/dominion.dir/rngs.c.i"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.c > CMakeFiles/dominion.dir/rngs.c.i
+
+CMakeFiles/dominion.dir/rngs.c.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/dominion.dir/rngs.c.s"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.c -o CMakeFiles/dominion.dir/rngs.c.s
+
+CMakeFiles/dominion.dir/rt.c.o: CMakeFiles/dominion.dir/flags.make
+CMakeFiles/dominion.dir/rt.c.o: ../rt.c
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object CMakeFiles/dominion.dir/rt.c.o"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/dominion.dir/rt.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rt.c
+
+CMakeFiles/dominion.dir/rt.c.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/dominion.dir/rt.c.i"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rt.c > CMakeFiles/dominion.dir/rt.c.i
+
+CMakeFiles/dominion.dir/rt.c.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/dominion.dir/rt.c.s"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rt.c -o CMakeFiles/dominion.dir/rt.c.s
+
+CMakeFiles/dominion.dir/testdrawcard.c.o: CMakeFiles/dominion.dir/flags.make
+CMakeFiles/dominion.dir/testdrawcard.c.o: ../testdrawcard.c
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building C object CMakeFiles/dominion.dir/testdrawcard.c.o"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/dominion.dir/testdrawcard.c.o -c /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/testdrawcard.c
+
+CMakeFiles/dominion.dir/testdrawcard.c.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/dominion.dir/testdrawcard.c.i"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/testdrawcard.c > CMakeFiles/dominion.dir/testdrawcard.c.i
+
+CMakeFiles/dominion.dir/testdrawcard.c.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/dominion.dir/testdrawcard.c.s"
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/testdrawcard.c -o CMakeFiles/dominion.dir/testdrawcard.c.s
+
+# Object files for target dominion
+dominion_OBJECTS = \
+"CMakeFiles/dominion.dir/dominion.c.o" \
+"CMakeFiles/dominion.dir/interface.c.o" \
+"CMakeFiles/dominion.dir/playdom.c.o" \
+"CMakeFiles/dominion.dir/player.c.o" \
+"CMakeFiles/dominion.dir/rngs.c.o" \
+"CMakeFiles/dominion.dir/rt.c.o" \
+"CMakeFiles/dominion.dir/testdrawcard.c.o"
+
+# External object files for target dominion
+dominion_EXTERNAL_OBJECTS =
+
+dominion: CMakeFiles/dominion.dir/dominion.c.o
+dominion: CMakeFiles/dominion.dir/interface.c.o
+dominion: CMakeFiles/dominion.dir/playdom.c.o
+dominion: CMakeFiles/dominion.dir/player.c.o
+dominion: CMakeFiles/dominion.dir/rngs.c.o
+dominion: CMakeFiles/dominion.dir/rt.c.o
+dominion: CMakeFiles/dominion.dir/testdrawcard.c.o
+dominion: CMakeFiles/dominion.dir/build.make
+dominion: CMakeFiles/dominion.dir/link.txt
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Linking C executable dominion"
+ $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/dominion.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/dominion.dir/build: dominion
+
+.PHONY : CMakeFiles/dominion.dir/build
+
+CMakeFiles/dominion.dir/clean:
+ $(CMAKE_COMMAND) -P CMakeFiles/dominion.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/dominion.dir/clean
+
+CMakeFiles/dominion.dir/depend:
+ cd /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/dominion.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : CMakeFiles/dominion.dir/depend
+
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/cmake_clean.cmake b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/cmake_clean.cmake
new file mode 100644
index 000000000..f0542e726
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/cmake_clean.cmake
@@ -0,0 +1,16 @@
+file(REMOVE_RECURSE
+ "CMakeFiles/dominion.dir/dominion.c.o"
+ "CMakeFiles/dominion.dir/interface.c.o"
+ "CMakeFiles/dominion.dir/playdom.c.o"
+ "CMakeFiles/dominion.dir/player.c.o"
+ "CMakeFiles/dominion.dir/rngs.c.o"
+ "CMakeFiles/dominion.dir/rt.c.o"
+ "CMakeFiles/dominion.dir/testdrawcard.c.o"
+ "dominion.pdb"
+ "dominion"
+)
+
+# Per-language clean rules from dependency scanning.
+foreach(lang C)
+ include(CMakeFiles/dominion.dir/cmake_clean_${lang}.cmake OPTIONAL)
+endforeach()
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.internal b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.internal
new file mode 100644
index 000000000..cac8c77d0
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.internal
@@ -0,0 +1,33 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.12
+
+CMakeFiles/dominion.dir/dominion.c.o
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.c
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion_helpers.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+CMakeFiles/dominion.dir/interface.c.o
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.c
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+CMakeFiles/dominion.dir/playdom.c.o
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/playdom.c
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+CMakeFiles/dominion.dir/player.c.o
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/interface.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/player.c
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+CMakeFiles/dominion.dir/rngs.c.o
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.c
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+CMakeFiles/dominion.dir/rt.c.o
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rt.c
+CMakeFiles/dominion.dir/testdrawcard.c.o
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/dominion_helpers.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/rngs.h
+ /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/testdrawcard.c
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.make b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.make
new file mode 100644
index 000000000..aa600f032
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.make
@@ -0,0 +1,33 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.12
+
+CMakeFiles/dominion.dir/dominion.c.o: ../dominion.c
+CMakeFiles/dominion.dir/dominion.c.o: ../dominion.h
+CMakeFiles/dominion.dir/dominion.c.o: ../dominion_helpers.h
+CMakeFiles/dominion.dir/dominion.c.o: ../rngs.h
+
+CMakeFiles/dominion.dir/interface.c.o: ../dominion.h
+CMakeFiles/dominion.dir/interface.c.o: ../interface.c
+CMakeFiles/dominion.dir/interface.c.o: ../interface.h
+CMakeFiles/dominion.dir/interface.c.o: ../rngs.h
+
+CMakeFiles/dominion.dir/playdom.c.o: ../dominion.h
+CMakeFiles/dominion.dir/playdom.c.o: ../playdom.c
+CMakeFiles/dominion.dir/playdom.c.o: ../rngs.h
+
+CMakeFiles/dominion.dir/player.c.o: ../dominion.h
+CMakeFiles/dominion.dir/player.c.o: ../interface.h
+CMakeFiles/dominion.dir/player.c.o: ../player.c
+CMakeFiles/dominion.dir/player.c.o: ../rngs.h
+
+CMakeFiles/dominion.dir/rngs.c.o: ../rngs.c
+CMakeFiles/dominion.dir/rngs.c.o: ../rngs.h
+
+CMakeFiles/dominion.dir/rt.c.o: ../rngs.h
+CMakeFiles/dominion.dir/rt.c.o: ../rt.c
+
+CMakeFiles/dominion.dir/testdrawcard.c.o: ../dominion.h
+CMakeFiles/dominion.dir/testdrawcard.c.o: ../dominion_helpers.h
+CMakeFiles/dominion.dir/testdrawcard.c.o: ../rngs.h
+CMakeFiles/dominion.dir/testdrawcard.c.o: ../testdrawcard.c
+
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/flags.make b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/flags.make
new file mode 100644
index 000000000..8971b8b4b
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/flags.make
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.12
+
+# compile C with /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
+C_FLAGS = -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -std=gnu11
+
+C_DEFINES =
+
+C_INCLUDES = -I/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/.
+
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/link.txt b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/link.txt
new file mode 100644
index 000000000..5323c9f67
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/link.txt
@@ -0,0 +1 @@
+/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/dominion.dir/dominion.c.o CMakeFiles/dominion.dir/interface.c.o CMakeFiles/dominion.dir/playdom.c.o CMakeFiles/dominion.dir/player.c.o CMakeFiles/dominion.dir/rngs.c.o CMakeFiles/dominion.dir/rt.c.o CMakeFiles/dominion.dir/testdrawcard.c.o -o dominion
diff --git a/dominion/cmake-build-debug/CMakeFiles/dominion.dir/progress.make b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/progress.make
new file mode 100644
index 000000000..5b293683d
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/dominion.dir/progress.make
@@ -0,0 +1,9 @@
+CMAKE_PROGRESS_1 = 1
+CMAKE_PROGRESS_2 = 2
+CMAKE_PROGRESS_3 = 3
+CMAKE_PROGRESS_4 = 4
+CMAKE_PROGRESS_5 = 5
+CMAKE_PROGRESS_6 = 6
+CMAKE_PROGRESS_7 = 7
+CMAKE_PROGRESS_8 = 8
+
diff --git a/dominion/cmake-build-debug/CMakeFiles/feature_tests.bin b/dominion/cmake-build-debug/CMakeFiles/feature_tests.bin
new file mode 100755
index 000000000..afd729440
Binary files /dev/null and b/dominion/cmake-build-debug/CMakeFiles/feature_tests.bin differ
diff --git a/dominion/cmake-build-debug/CMakeFiles/feature_tests.c b/dominion/cmake-build-debug/CMakeFiles/feature_tests.c
new file mode 100644
index 000000000..afbc86dfc
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/feature_tests.c
@@ -0,0 +1,34 @@
+
+ const char features[] = {"\n"
+"C_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400
+"1"
+#else
+"0"
+#endif
+"c_function_prototypes\n"
+"C_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+"1"
+#else
+"0"
+#endif
+"c_restrict\n"
+"C_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+"1"
+#else
+"0"
+#endif
+"c_static_assert\n"
+"C_FEATURE:"
+#if ((__clang_major__ * 100) + __clang_minor__) >= 400 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+"1"
+#else
+"0"
+#endif
+"c_variadic_macros\n"
+
+};
+
+int main(int argc, char** argv) { (void)argv; return features[argc]; }
diff --git a/dominion/cmake-build-debug/CMakeFiles/progress.marks b/dominion/cmake-build-debug/CMakeFiles/progress.marks
new file mode 100644
index 000000000..45a4fb75d
--- /dev/null
+++ b/dominion/cmake-build-debug/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+8
diff --git a/dominion/cmake-build-debug/Makefile b/dominion/cmake-build-debug/Makefile
new file mode 100644
index 000000000..8d07b36f2
--- /dev/null
+++ b/dominion/cmake-build-debug/Makefile
@@ -0,0 +1,358 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.12
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake
+
+# The command to remove a file.
+RM = /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+ /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+ /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+
+.PHONY : edit_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles/progress.marks
+ $(MAKE) -f CMakeFiles/Makefile2 all
+ $(CMAKE_COMMAND) -E cmake_progress_start /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ $(MAKE) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named dominion
+
+# Build rule for target.
+dominion: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 dominion
+.PHONY : dominion
+
+# fast build rule for target.
+dominion/fast:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/build
+.PHONY : dominion/fast
+
+dominion.o: dominion.c.o
+
+.PHONY : dominion.o
+
+# target to build an object file
+dominion.c.o:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/dominion.c.o
+.PHONY : dominion.c.o
+
+dominion.i: dominion.c.i
+
+.PHONY : dominion.i
+
+# target to preprocess a source file
+dominion.c.i:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/dominion.c.i
+.PHONY : dominion.c.i
+
+dominion.s: dominion.c.s
+
+.PHONY : dominion.s
+
+# target to generate assembly for a file
+dominion.c.s:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/dominion.c.s
+.PHONY : dominion.c.s
+
+interface.o: interface.c.o
+
+.PHONY : interface.o
+
+# target to build an object file
+interface.c.o:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/interface.c.o
+.PHONY : interface.c.o
+
+interface.i: interface.c.i
+
+.PHONY : interface.i
+
+# target to preprocess a source file
+interface.c.i:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/interface.c.i
+.PHONY : interface.c.i
+
+interface.s: interface.c.s
+
+.PHONY : interface.s
+
+# target to generate assembly for a file
+interface.c.s:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/interface.c.s
+.PHONY : interface.c.s
+
+playdom.o: playdom.c.o
+
+.PHONY : playdom.o
+
+# target to build an object file
+playdom.c.o:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/playdom.c.o
+.PHONY : playdom.c.o
+
+playdom.i: playdom.c.i
+
+.PHONY : playdom.i
+
+# target to preprocess a source file
+playdom.c.i:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/playdom.c.i
+.PHONY : playdom.c.i
+
+playdom.s: playdom.c.s
+
+.PHONY : playdom.s
+
+# target to generate assembly for a file
+playdom.c.s:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/playdom.c.s
+.PHONY : playdom.c.s
+
+player.o: player.c.o
+
+.PHONY : player.o
+
+# target to build an object file
+player.c.o:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/player.c.o
+.PHONY : player.c.o
+
+player.i: player.c.i
+
+.PHONY : player.i
+
+# target to preprocess a source file
+player.c.i:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/player.c.i
+.PHONY : player.c.i
+
+player.s: player.c.s
+
+.PHONY : player.s
+
+# target to generate assembly for a file
+player.c.s:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/player.c.s
+.PHONY : player.c.s
+
+rngs.o: rngs.c.o
+
+.PHONY : rngs.o
+
+# target to build an object file
+rngs.c.o:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/rngs.c.o
+.PHONY : rngs.c.o
+
+rngs.i: rngs.c.i
+
+.PHONY : rngs.i
+
+# target to preprocess a source file
+rngs.c.i:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/rngs.c.i
+.PHONY : rngs.c.i
+
+rngs.s: rngs.c.s
+
+.PHONY : rngs.s
+
+# target to generate assembly for a file
+rngs.c.s:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/rngs.c.s
+.PHONY : rngs.c.s
+
+rt.o: rt.c.o
+
+.PHONY : rt.o
+
+# target to build an object file
+rt.c.o:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/rt.c.o
+.PHONY : rt.c.o
+
+rt.i: rt.c.i
+
+.PHONY : rt.i
+
+# target to preprocess a source file
+rt.c.i:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/rt.c.i
+.PHONY : rt.c.i
+
+rt.s: rt.c.s
+
+.PHONY : rt.s
+
+# target to generate assembly for a file
+rt.c.s:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/rt.c.s
+.PHONY : rt.c.s
+
+testdrawcard.o: testdrawcard.c.o
+
+.PHONY : testdrawcard.o
+
+# target to build an object file
+testdrawcard.c.o:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/testdrawcard.c.o
+.PHONY : testdrawcard.c.o
+
+testdrawcard.i: testdrawcard.c.i
+
+.PHONY : testdrawcard.i
+
+# target to preprocess a source file
+testdrawcard.c.i:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/testdrawcard.c.i
+.PHONY : testdrawcard.c.i
+
+testdrawcard.s: testdrawcard.c.s
+
+.PHONY : testdrawcard.s
+
+# target to generate assembly for a file
+testdrawcard.c.s:
+ $(MAKE) -f CMakeFiles/dominion.dir/build.make CMakeFiles/dominion.dir/testdrawcard.c.s
+.PHONY : testdrawcard.c.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... rebuild_cache"
+ @echo "... edit_cache"
+ @echo "... dominion"
+ @echo "... dominion.o"
+ @echo "... dominion.i"
+ @echo "... dominion.s"
+ @echo "... interface.o"
+ @echo "... interface.i"
+ @echo "... interface.s"
+ @echo "... playdom.o"
+ @echo "... playdom.i"
+ @echo "... playdom.s"
+ @echo "... player.o"
+ @echo "... player.i"
+ @echo "... player.s"
+ @echo "... rngs.o"
+ @echo "... rngs.i"
+ @echo "... rngs.s"
+ @echo "... rt.o"
+ @echo "... rt.i"
+ @echo "... rt.s"
+ @echo "... testdrawcard.o"
+ @echo "... testdrawcard.i"
+ @echo "... testdrawcard.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/dominion/cmake-build-debug/cmake_install.cmake b/dominion/cmake-build-debug/cmake_install.cmake
new file mode 100644
index 000000000..cc97f661d
--- /dev/null
+++ b/dominion/cmake-build-debug/cmake_install.cmake
@@ -0,0 +1,44 @@
+# Install script for directory: /Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Is this installation the result of a crosscompile?
+if(NOT DEFINED CMAKE_CROSSCOMPILING)
+ set(CMAKE_CROSSCOMPILING "FALSE")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/Users/stuartkyawmyint/Documents/OSU/CS362-F2019/dominion/cmake-build-debug/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/dominion/cmake-build-debug/dominion.cbp b/dominion/cmake-build-debug/dominion.cbp
new file mode 100644
index 000000000..1b9f08b68
--- /dev/null
+++ b/dominion/cmake-build-debug/dominion.cbp
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/kyawmyis/README.md b/projects/kyawmyis/README.md
new file mode 100644
index 000000000..23cace88b
--- /dev/null
+++ b/projects/kyawmyis/README.md
@@ -0,0 +1 @@
+#Stuart Kyawmyint, kyawmyis
diff --git a/projects/kyawmyis/dominion/.cproject b/projects/kyawmyis/dominion/.cproject
new file mode 100644
index 000000000..1ea990397
--- /dev/null
+++ b/projects/kyawmyis/dominion/.cproject
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/kyawmyis/dominion/.idea/codeStyles/Project.xml b/projects/kyawmyis/dominion/.idea/codeStyles/Project.xml
new file mode 100644
index 000000000..30aa626c2
--- /dev/null
+++ b/projects/kyawmyis/dominion/.idea/codeStyles/Project.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/kyawmyis/dominion/.idea/dominion.iml b/projects/kyawmyis/dominion/.idea/dominion.iml
new file mode 100644
index 000000000..f08604bb6
--- /dev/null
+++ b/projects/kyawmyis/dominion/.idea/dominion.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/projects/kyawmyis/dominion/.idea/misc.xml b/projects/kyawmyis/dominion/.idea/misc.xml
new file mode 100644
index 000000000..8822db8f1
--- /dev/null
+++ b/projects/kyawmyis/dominion/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/kyawmyis/dominion/.idea/modules.xml b/projects/kyawmyis/dominion/.idea/modules.xml
new file mode 100644
index 000000000..b6bbcd7c9
--- /dev/null
+++ b/projects/kyawmyis/dominion/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/kyawmyis/dominion/.idea/vcs.xml b/projects/kyawmyis/dominion/.idea/vcs.xml
new file mode 100644
index 000000000..c2365ab11
--- /dev/null
+++ b/projects/kyawmyis/dominion/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/kyawmyis/dominion/.idea/workspace.xml b/projects/kyawmyis/dominion/.idea/workspace.xml
new file mode 100644
index 000000000..746e0dd07
--- /dev/null
+++ b/projects/kyawmyis/dominion/.idea/workspace.xml
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ baron
+ minion
+ ambass
+ tribute
+ mine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1570996744459
+
+
+ 1570996744459
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/kyawmyis/dominion/.project b/projects/kyawmyis/dominion/.project
new file mode 100644
index 000000000..d94116622
--- /dev/null
+++ b/projects/kyawmyis/dominion/.project
@@ -0,0 +1,27 @@
+
+
+ dominion
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.core.ccnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/projects/kyawmyis/dominion/.settings/language.settings.xml b/projects/kyawmyis/dominion/.settings/language.settings.xml
new file mode 100644
index 000000000..e527cccd8
--- /dev/null
+++ b/projects/kyawmyis/dominion/.settings/language.settings.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/projects/kyawmyis/dominion/Makefile b/projects/kyawmyis/dominion/Makefile
new file mode 100644
index 000000000..1317a9559
--- /dev/null
+++ b/projects/kyawmyis/dominion/Makefile
@@ -0,0 +1,47 @@
+CFLAGS= -Wall -fpic -coverage -lm -std=c99
+
+rngs.o: rngs.h rngs.c
+ gcc -c rngs.c -g $(CFLAGS)
+
+dominion.o: dominion.h dominion.c rngs.o
+ gcc -c dominion.c -g $(CFLAGS)
+
+playdom: dominion.o playdom.c
+ gcc -o playdom playdom.c -g dominion.o rngs.o $(CFLAGS)
+#To run playdom you need to entere: ./playdom like ./playdom 10*/
+
+testDrawCard: testDrawCard.c dominion.o rngs.o
+ gcc -o testDrawCard -g testDrawCard.c dominion.o rngs.o $(CFLAGS)
+
+interface.o: interface.h interface.c
+ gcc -c interface.c -g $(CFLAGS)
+
+runtests: testDrawCard
+ ./testDrawCard &> unittestresult.out
+ gcov dominion.c >> unittestresult.out
+ cat dominion.c.gcov >> unittestresult.out
+
+
+player: player.c interface.o
+ gcc -o player player.c -g dominion.o rngs.o interface.o $(CFLAGS)
+
+randomtestcard1: randomtestcard1.c dominion.o rngs.o
+ gcc -o randomtestcard1 -g randomtestcard1.c dominion.o rngs.o $(CFLAGS)
+
+randomtestcard2: randomtestcard2.c dominion.o rngs.o
+ gcc -o randomtestcard2 -g randomtestcard2.c dominion.o rngs.o $(CFLAGS)
+
+randomtestcard3: randomtestcard3.c dominion.o rngs.o
+ gcc -o randomtestcard3 -g randomtestcard3.c dominion.o rngs.o $(CFLAGS)
+
+randomtestresults: randomtestcard1 randomtestcard2 randomtestcard3
+ ./randomtestcard1 >> randomtestresults.out
+ ./randomtestcard2 >> randomtestresults.out
+ ./randomtestcard3 >> randomtestresults.out
+ gcov -b -f dominion.c >> randomtestresults.out
+ cat dominion.c.gcov >> randomtestresults.out
+
+all: playdom player
+
+clean:
+ rm -f *.o playdom.exe playdom player player.exe *.gcov *.gcda *.gcno *.so *.out testDrawCard testDrawCard.exe randomtestcard1 randomtestcard1.exe randomtestcard2 randomtestcard2.exe randomtestcard3 randomtestcard3.exe randomtestresults.out
diff --git a/projects/kyawmyis/dominion/READM.md b/projects/kyawmyis/dominion/READM.md
new file mode 100644
index 000000000..c3599f6ad
--- /dev/null
+++ b/projects/kyawmyis/dominion/READM.md
@@ -0,0 +1,2 @@
+run make all #To compile the dominion code
+run ./playdom 30 # to run playdom code
diff --git a/projects/kyawmyis/dominion/dominion.c b/projects/kyawmyis/dominion/dominion.c
new file mode 100644
index 000000000..90b3e3957
--- /dev/null
+++ b/projects/kyawmyis/dominion/dominion.c
@@ -0,0 +1,1459 @@
+#include "dominion.h"
+#include "dominion_helpers.h"
+#include "rngs.h"
+#include
+#include
+#include
+
+int compare(const void* a, const void* b) {
+ if (*(int*)a > *(int*)b)
+ return 1;
+ if (*(int*)a < *(int*)b)
+ return -1;
+ return 0;
+}
+
+struct gameState* newGame() {
+ struct gameState* g = malloc(sizeof(struct gameState));
+ return g;
+}
+
+int* kingdomCards(int k1, int k2, int k3, int k4, int k5, int k6, int k7,
+ int k8, int k9, int k10) {
+ int* k = malloc(10 * sizeof(int));
+ k[0] = k1;
+ k[1] = k2;
+ k[2] = k3;
+ k[3] = k4;
+ k[4] = k5;
+ k[5] = k6;
+ k[6] = k7;
+ k[7] = k8;
+ k[8] = k9;
+ k[9] = k10;
+ return k;
+}
+
+int initializeGame(int numPlayers, int kingdomCards[10], int randomSeed,
+ struct gameState *state) {
+ int i;
+ int j;
+ int it;
+
+ //set up random number generator
+ SelectStream(1);
+ PutSeed((long)randomSeed);
+
+ //check number of players
+ if (numPlayers > MAX_PLAYERS || numPlayers < 2)
+ {
+ return -1;
+ }
+
+ //set number of players
+ state->numPlayers = numPlayers;
+
+ //check selected kingdom cards are different
+ for (i = 0; i < 10; i++)
+ {
+ for (j = 0; j < 10; j++)
+ {
+ if (j != i && kingdomCards[j] == kingdomCards[i])
+ {
+ return -1;
+ }
+ }
+ }
+
+
+ //initialize supply
+ ///////////////////////////////
+
+ //set number of Curse cards
+ if (numPlayers == 2)
+ {
+ state->supplyCount[curse] = 10;
+ }
+ else if (numPlayers == 3)
+ {
+ state->supplyCount[curse] = 20;
+ }
+ else
+ {
+ state->supplyCount[curse] = 30;
+ }
+
+ //set number of Victory cards
+ if (numPlayers == 2)
+ {
+ state->supplyCount[estate] = 8;
+ state->supplyCount[duchy] = 8;
+ state->supplyCount[province] = 8;
+ }
+ else
+ {
+ state->supplyCount[estate] = 12;
+ state->supplyCount[duchy] = 12;
+ state->supplyCount[province] = 12;
+ }
+
+ //set number of Treasure cards
+ state->supplyCount[copper] = 60 - (7 * numPlayers);
+ state->supplyCount[silver] = 40;
+ state->supplyCount[gold] = 30;
+
+ //set number of Kingdom cards
+ for (i = adventurer; i <= treasure_map; i++) //loop all cards
+ {
+ for (j = 0; j < 10; j++) //loop chosen cards
+ {
+ if (kingdomCards[j] == i)
+ {
+ //check if card is a 'Victory' Kingdom card
+ if (kingdomCards[j] == great_hall || kingdomCards[j] == gardens)
+ {
+ if (numPlayers == 2) {
+ state->supplyCount[i] = 8;
+ }
+ else {
+ state->supplyCount[i] = 12;
+ }
+ }
+ else
+ {
+ state->supplyCount[i] = 10;
+ }
+ break;
+ }
+ else //card is not in the set choosen for the game
+ {
+ state->supplyCount[i] = -1;
+ }
+ }
+
+ }
+
+ ////////////////////////
+ //supply intilization complete
+
+ //set player decks
+ for (i = 0; i < numPlayers; i++)
+ {
+ state->deckCount[i] = 0;
+ for (j = 0; j < 3; j++)
+ {
+ state->deck[i][j] = estate;
+ state->deckCount[i]++;
+ }
+ for (j = 3; j < 10; j++)
+ {
+ state->deck[i][j] = copper;
+ state->deckCount[i]++;
+ }
+ }
+
+ //shuffle player decks
+ for (i = 0; i < numPlayers; i++)
+ {
+ if ( shuffle(i, state) < 0 )
+ {
+ return -1;
+ }
+ }
+
+ //draw player hands
+ for (i = 0; i < numPlayers; i++)
+ {
+ //initialize hand size to zero
+ state->handCount[i] = 0;
+ state->discardCount[i] = 0;
+ //draw 5 cards
+ // for (j = 0; j < 5; j++)
+ // {
+ // drawCard(i, state);
+ // }
+ }
+
+ //set embargo tokens to 0 for all supply piles
+ for (i = 0; i <= treasure_map; i++)
+ {
+ state->embargoTokens[i] = 0;
+ }
+
+ //initialize first player's turn
+ state->outpostPlayed = 0;
+ state->phase = 0;
+ state->numActions = 1;
+ state->numBuys = 1;
+ state->playedCardCount = 0;
+ state->whoseTurn = 0;
+ state->handCount[state->whoseTurn] = 0;
+ //int it; move to top
+
+ //Moved draw cards to here, only drawing at the start of a turn
+ for (it = 0; it < 5; it++) {
+ drawCard(state->whoseTurn, state);
+ }
+
+ updateCoins(state->whoseTurn, state, 0);
+
+ return 0;
+}
+
+int shuffle(int player, struct gameState *state) {
+
+
+ int newDeck[MAX_DECK];
+ int newDeckPos = 0;
+ int card;
+ int i;
+
+ if (state->deckCount[player] < 1)
+ return -1;
+ qsort ((void*)(state->deck[player]), state->deckCount[player], sizeof(int), compare);
+ /* SORT CARDS IN DECK TO ENSURE DETERMINISM! */
+
+ while (state->deckCount[player] > 0) {
+ card = floor(Random() * state->deckCount[player]);
+ newDeck[newDeckPos] = state->deck[player][card];
+ newDeckPos++;
+ for (i = card; i < state->deckCount[player]-1; i++) {
+ state->deck[player][i] = state->deck[player][i+1];
+ }
+ state->deckCount[player]--;
+ }
+ for (i = 0; i < newDeckPos; i++) {
+ state->deck[player][i] = newDeck[i];
+ state->deckCount[player]++;
+ }
+
+ return 0;
+}
+
+int playCard(int handPos, int choice1, int choice2, int choice3, struct gameState *state)
+{
+ int card;
+ int coin_bonus = 0; //tracks coins gain from actions
+
+ //check if it is the right phase
+ if (state->phase != 0)
+ {
+ return -1;
+ }
+
+ //check if player has enough actions
+ if ( state->numActions < 1 )
+ {
+ return -1;
+ }
+
+ //get card played
+ card = handCard(handPos, state);
+
+ //check if selected card is an action
+ if ( card < adventurer || card > treasure_map )
+ {
+ return -1;
+ }
+
+ //play card
+ if ( cardEffect(card, choice1, choice2, choice3, state, handPos, &coin_bonus) < 0 )
+ {
+ return -1;
+ }
+
+ //reduce number of actions
+ state->numActions--;
+
+ //update coins (Treasure cards may be added with card draws)
+ updateCoins(state->whoseTurn, state, coin_bonus);
+
+ return 0;
+}
+
+int buyCard(int supplyPos, struct gameState *state) {
+ int who;
+ if (DEBUG) {
+ printf("Entering buyCard...\n");
+ }
+
+ // I don't know what to do about the phase thing.
+
+ who = state->whoseTurn;
+
+ if (state->numBuys < 1) {
+ if (DEBUG)
+ printf("You do not have any buys left\n");
+ return -1;
+ } else if (supplyCount(supplyPos, state) <1) {
+ if (DEBUG)
+ printf("There are not any of that type of card left\n");
+ return -1;
+ } else if (state->coins < getCost(supplyPos)) {
+ if (DEBUG)
+ printf("You do not have enough money to buy that. You have %d coins.\n", state->coins);
+ return -1;
+ } else {
+ state->phase=1;
+ //state->supplyCount[supplyPos]--;
+ gainCard(supplyPos, state, 0, who); //card goes in discard, this might be wrong.. (2 means goes into hand, 0 goes into discard)
+
+ state->coins = (state->coins) - (getCost(supplyPos));
+ state->numBuys--;
+ if (DEBUG)
+ printf("You bought card number %d for %d coins. You now have %d buys and %d coins.\n", supplyPos, getCost(supplyPos), state->numBuys, state->coins);
+ }
+
+ //state->discard[who][state->discardCount[who]] = supplyPos;
+ //state->discardCount[who]++;
+
+ return 0;
+}
+
+int numHandCards(struct gameState *state) {
+ return state->handCount[ whoseTurn(state) ];
+}
+
+int handCard(int handPos, struct gameState *state) {
+ int currentPlayer = whoseTurn(state);
+ return state->hand[currentPlayer][handPos];
+}
+
+int supplyCount(int card, struct gameState *state) {
+ return state->supplyCount[card];
+}
+
+int fullDeckCount(int player, int card, struct gameState *state) {
+ int i;
+ int count = 0;
+
+ for (i = 0; i < state->deckCount[player]; i++)
+ {
+ if (state->deck[player][i] == card) count++;
+ }
+
+ for (i = 0; i < state->handCount[player]; i++)
+ {
+ if (state->hand[player][i] == card) count++;
+ }
+
+ for (i = 0; i < state->discardCount[player]; i++)
+ {
+ if (state->discard[player][i] == card) count++;
+ }
+
+ return count;
+}
+
+int whoseTurn(struct gameState *state) {
+ return state->whoseTurn;
+}
+
+int endTurn(struct gameState *state) {
+ int k;
+ int i;
+ int currentPlayer = whoseTurn(state);
+
+ //Discard hand
+ for (i = 0; i < state->handCount[currentPlayer]; i++) {
+ state->discard[currentPlayer][state->discardCount[currentPlayer]++] = state->hand[currentPlayer][i];//Discard
+ state->hand[currentPlayer][i] = -1;//Set card to -1
+ }
+ state->handCount[currentPlayer] = 0;//Reset hand count
+
+ //Code for determining the player
+ if (currentPlayer < (state->numPlayers - 1)) {
+ state->whoseTurn = currentPlayer + 1;//Still safe to increment
+ }
+ else {
+ state->whoseTurn = 0;//Max player has been reached, loop back around to player 1
+ }
+
+ state->outpostPlayed = 0;
+ state->phase = 0;
+ state->numActions = 1;
+ state->coins = 0;
+ state->numBuys = 1;
+ state->playedCardCount = 0;
+ state->handCount[state->whoseTurn] = 0;
+
+ //int k; move to top
+ //Next player draws hand
+ for (k = 0; k < 5; k++) {
+ drawCard(state->whoseTurn, state);//Draw a card
+ }
+
+ //Update money
+ updateCoins(state->whoseTurn, state, 0);
+
+ return 0;
+}
+
+int isGameOver(struct gameState *state) {
+ int i;
+ int j;
+
+ //if stack of Province cards is empty, the game ends
+ if (state->supplyCount[province] == 0)
+ {
+ return 1;
+ }
+
+ //if three supply pile are at 0, the game ends
+ j = 0;
+ for (i = 0; i < 25; i++)
+ {
+ if (state->supplyCount[i] == 0)
+ {
+ j++;
+ }
+ }
+ if ( j >= 3)
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+int scoreFor (int player, struct gameState *state) {
+
+ int i;
+ int score = 0;
+ //score from hand
+ for (i = 0; i < state->handCount[player]; i++)
+ {
+ if (state->hand[player][i] == curse) {
+ score = score - 1;
+ };
+ if (state->hand[player][i] == estate) {
+ score = score + 1;
+ };
+ if (state->hand[player][i] == duchy) {
+ score = score + 3;
+ };
+ if (state->hand[player][i] == province) {
+ score = score + 6;
+ };
+ if (state->hand[player][i] == great_hall) {
+ score = score + 1;
+ };
+ if (state->hand[player][i] == gardens) {
+ score = score + ( fullDeckCount(player, 0, state) / 10 );
+ };
+ }
+
+ //score from discard
+ for (i = 0; i < state->discardCount[player]; i++)
+ {
+ if (state->discard[player][i] == curse) {
+ score = score - 1;
+ };
+ if (state->discard[player][i] == estate) {
+ score = score + 1;
+ };
+ if (state->discard[player][i] == duchy) {
+ score = score + 3;
+ };
+ if (state->discard[player][i] == province) {
+ score = score + 6;
+ };
+ if (state->discard[player][i] == great_hall) {
+ score = score + 1;
+ };
+ if (state->discard[player][i] == gardens) {
+ score = score + ( fullDeckCount(player, 0, state) / 10 );
+ };
+ }
+
+ //score from deck
+ for (i = 0; i < state->discardCount[player]; i++)
+ {
+ if (state->deck[player][i] == curse) {
+ score = score - 1;
+ };
+ if (state->deck[player][i] == estate) {
+ score = score + 1;
+ };
+ if (state->deck[player][i] == duchy) {
+ score = score + 3;
+ };
+ if (state->deck[player][i] == province) {
+ score = score + 6;
+ };
+ if (state->deck[player][i] == great_hall) {
+ score = score + 1;
+ };
+ if (state->deck[player][i] == gardens) {
+ score = score + ( fullDeckCount(player, 0, state) / 10 );
+ };
+ }
+
+ return score;
+}
+
+int getWinners(int players[MAX_PLAYERS], struct gameState *state) {
+ int i;
+ int j;
+ int highScore;
+ int currentPlayer;
+
+ //get score for each player
+ for (i = 0; i < MAX_PLAYERS; i++)
+ {
+ //set unused player scores to -9999
+ if (i >= state->numPlayers)
+ {
+ players[i] = -9999;
+ }
+ else
+ {
+ players[i] = scoreFor (i, state);
+ }
+ }
+
+ //find highest score
+ j = 0;
+ for (i = 0; i < MAX_PLAYERS; i++)
+ {
+ if (players[i] > players[j])
+ {
+ j = i;
+ }
+ }
+ highScore = players[j];
+
+ //add 1 to players who had less turns
+ currentPlayer = whoseTurn(state);
+ for (i = 0; i < MAX_PLAYERS; i++)
+ {
+ if ( players[i] == highScore && i > currentPlayer )
+ {
+ players[i]++;
+ }
+ }
+
+ //find new highest score
+ j = 0;
+ for (i = 0; i < MAX_PLAYERS; i++)
+ {
+ if ( players[i] > players[j] )
+ {
+ j = i;
+ }
+ }
+ highScore = players[j];
+
+ //set winners in array to 1 and rest to 0
+ for (i = 0; i < MAX_PLAYERS; i++)
+ {
+ if ( players[i] == highScore )
+ {
+ players[i] = 1;
+ }
+ else
+ {
+ players[i] = 0;
+ }
+ }
+
+ return 0;
+}
+
+int drawCard(int player, struct gameState *state)
+{ int count;
+ int deckCounter;
+ if (state->deckCount[player] <= 0) { //Deck is empty
+
+ //Step 1 Shuffle the discard pile back into a deck
+ int i;
+ //Move discard to deck
+ for (i = 0; i < state->discardCount[player]; i++) {
+ state->deck[player][i] = state->discard[player][i];
+ state->discard[player][i] = -1;
+ }
+
+ state->deckCount[player] = state->discardCount[player];
+ state->discardCount[player] = 0;//Reset discard
+
+ //Shufffle the deck
+ shuffle(player, state);//Shuffle the deck up and make it so that we can draw
+
+ if (DEBUG) { //Debug statements
+ printf("Deck count now: %d\n", state->deckCount[player]);
+ }
+
+ state->discardCount[player] = 0;
+
+ //Step 2 Draw Card
+ count = state->handCount[player];//Get current player's hand count
+
+ if (DEBUG) { //Debug statements
+ printf("Current hand count: %d\n", count);
+ }
+
+ deckCounter = state->deckCount[player];//Create a holder for the deck count
+
+ if (deckCounter == 0)
+ return -1;
+
+ state->hand[player][count] = state->deck[player][deckCounter - 1];//Add card to hand
+ state->deckCount[player]--;
+ state->handCount[player]++;//Increment hand count
+ }
+
+ else {
+ int count = state->handCount[player];//Get current hand count for player
+ int deckCounter;
+ if (DEBUG) { //Debug statements
+ printf("Current hand count: %d\n", count);
+ }
+
+ deckCounter = state->deckCount[player];//Create holder for the deck count
+ state->hand[player][count] = state->deck[player][deckCounter - 1];//Add card to the hand
+ state->deckCount[player]--;
+ state->handCount[player]++;//Increment hand count
+ }
+
+ return 0;
+}
+
+int getCost(int cardNumber)
+{
+ switch( cardNumber )
+ {
+ case curse:
+ return 0;
+ case estate:
+ return 2;
+ case duchy:
+ return 5;
+ case province:
+ return 8;
+ case copper:
+ return 0;
+ case silver:
+ return 3;
+ case gold:
+ return 6;
+ case adventurer:
+ return 6;
+ case council_room:
+ return 5;
+ case feast:
+ return 4;
+ case gardens:
+ return 4;
+ case mine:
+ return 5;
+ case remodel:
+ return 4;
+ case smithy:
+ return 4;
+ case village:
+ return 3;
+ case baron:
+ return 4;
+ case great_hall:
+ return 3;
+ case minion:
+ return 5;
+ case steward:
+ return 3;
+ case tribute:
+ return 5;
+ case ambassador:
+ return 3;
+ case cutpurse:
+ return 4;
+ case embargo:
+ return 2;
+ case outpost:
+ return 5;
+ case salvager:
+ return 4;
+ case sea_hag:
+ return 4;
+ case treasure_map:
+ return 4;
+ }
+
+ return -1;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+// The following code below is the refactored card effect for the Baron card //
+///////////////////////////////////////////////////////////////////////////////
+int baronEffect(struct gameState *state, int choice1, int currentPlayer){
+
+ state->numBuys++;//Increase buys by 1!
+ if (choice1 > 0) { //Boolean true or going to discard an estate
+ int p = 0;//Iterator for hand!
+ int card_not_discarded = 1;//Flag for discard set!
+ while(card_not_discarded) {
+ if (state->hand[currentPlayer][p] == estate) { //Found an estate card!
+ ////////////ERROR 1 - equal instead of addition///////////////
+ state->coins = 4;//Add 4 coins to the amount of coins
+ state->discard[currentPlayer][state->discardCount[currentPlayer]] = state->hand[currentPlayer][p];
+ state->discardCount[currentPlayer]++;
+ for (; p < state->handCount[currentPlayer]; p++) {
+ state->hand[currentPlayer][p] = state->hand[currentPlayer][p+1];
+ }
+ state->hand[currentPlayer][state->handCount[currentPlayer]] = -1;
+ state->handCount[currentPlayer]--;
+ card_not_discarded = 0;//Exit the loop
+ }
+ else if (p > state->handCount[currentPlayer]) {
+ if(DEBUG) {
+ printf("No estate cards in your hand, invalid choice\n");
+ printf("Must gain an estate if there are any\n");
+ }
+ if (supplyCount(estate, state) > 0) {
+ gainCard(estate, state, 0, currentPlayer);
+
+ state->supplyCount[estate]--;//Decrement estates
+ if (supplyCount(estate, state) == 0) {
+ isGameOver(state);
+ }
+ }
+ card_not_discarded = 0;//Exit the loop
+ }
+
+ else {
+ p++;//Next card
+ }
+ }
+ }
+
+ else {
+ //////ERROR 2 - check if supply of estate less than 0 instead /////////
+ if (supplyCount(estate, state) < 0) {
+ gainCard(estate, state, 0, currentPlayer);//Gain an estate
+
+ state->supplyCount[estate]--;//Decrement Estates
+ if (supplyCount(estate, state) == 0) {
+ isGameOver(state);
+ }
+ }
+ }
+ return 0;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+// The following code below is the refactored card effect for the Minion card //
+////////////////////////////////////////////////////////////////////////////////
+int minionEffect(struct gameState *state, int handPos, int currentPlayer, int choice1, int choice2) {
+
+ ////////ERROR 3 - action added by 2 instead of 1.
+ //+1 action
+ state->numActions+=2;
+
+ //discard card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+
+ if (choice1)
+ {
+ state->coins = state->coins + 2;
+ }
+ else if (choice2) //discard hand, redraw 4, other players with 5+ cards discard hand and draw 4
+ {
+ //discard hand
+ while(numHandCards(state) > 0)
+ {
+ discardCard(handPos, currentPlayer, state, 0);
+ }
+
+ ////////ERROR 4 - less-than equal to in the counter//////
+ //draw 4
+ for (int i = 0; i <= 4; i++)
+ {
+ drawCard(currentPlayer, state);
+ }
+
+ //other players discard hand and redraw if hand size > 4
+ for (int i = 0; i < state->numPlayers; i++)
+ {
+ if (i != currentPlayer)
+ {
+ if ( state->handCount[i] > 4 )
+ {
+ //discard hand
+ while( state->handCount[i] > 0 )
+ {
+ discardCard(handPos, i, state, 0);
+ }
+
+ //draw 4
+ for (int j = 0; j < 4; j++)
+ {
+ drawCard(i, state);
+ }
+ }
+ }
+ }
+
+ }
+ return 0;
+
+}
+
+////////////////////////////////////////////////////////////////////////////////////
+// The following code below is the refactored card effect for the Ambassador card //
+////////////////////////////////////////////////////////////////////////////////////
+
+int ambassadorEffect(struct gameState *state, int handPos, int currentPlayer, int choice1, int choice2){
+
+ int j = 0; //used to check if player has enough cards to discard
+
+ //////////ERROR 5 - choice2 must be less than 5 and greater than -1. Does not follow logic of 0,1,2 cards return /////////
+ if (choice2 > 4 || choice2 < 0)
+ {
+ return -1;
+ }
+
+ if (choice1 == handPos)
+ {
+ return -1;
+ }
+
+ for (int i = 0; i < state->handCount[currentPlayer]; i++)
+ {
+ if (i != handPos && i == state->hand[currentPlayer][choice1] && i != choice1)
+ {
+ j++;
+ }
+ }
+ if (j < choice2)
+ {
+ return -1;
+ }
+
+ if (DEBUG)
+ printf("Player %d reveals card number: %d\n", currentPlayer, state->hand[currentPlayer][choice1]);
+
+ //increase supply count for choosen card by amount being discarded
+ state->supplyCount[state->hand[currentPlayer][choice1]] += choice2;
+
+ //each other player gains a copy of revealed card
+ for (int i = 0; i < state->numPlayers; i++)
+ {
+ /////////ERROR 6 - Conditional statement equal to instead of not equal to///////
+ if (i == currentPlayer)
+ {
+ gainCard(state->hand[currentPlayer][choice1], state, 0, i);
+ }
+ }
+
+ //discard played card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+
+ //trash copies of cards returned to supply
+ for (j = 0; j < choice2; j++)
+ {
+ for (int i = 0; i < state->handCount[currentPlayer]; i++)
+ {
+ if (state->hand[currentPlayer][i] == state->hand[currentPlayer][choice1])
+ {
+ discardCard(i, currentPlayer, state, 1);
+ break;
+ }
+ }
+ }
+
+ return 0;
+
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+// The following code below is the refactored card effect for the Tribute card //
+/////////////////////////////////////////////////////////////////////////////////
+int tributeEffect(struct gameState *state, int currentPlayer, int nextPlayer) {
+
+ int tributeRevealedCards[2] = {-1, -1};
+
+ if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) {
+ if (state->deckCount[nextPlayer] > 0) {
+ tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1];
+ state->deckCount[nextPlayer]--;
+ }
+ else if (state->discardCount[nextPlayer] > 0) {
+ tributeRevealedCards[0] = state->discard[nextPlayer][state->discardCount[nextPlayer]-1];
+ state->discardCount[nextPlayer]--;
+ }
+ else {
+ //No Card to Reveal
+ if (DEBUG) {
+ printf("No cards to reveal\n");
+ }
+ }
+ }
+
+ else {
+ if (state->deckCount[nextPlayer] == 0) {
+ for (int i = 0; i < state->discardCount[nextPlayer]; i++) {
+ state->deck[nextPlayer][i] = state->discard[nextPlayer][i];//Move to deck
+ state->deckCount[nextPlayer]++;
+ state->discard[nextPlayer][i] = -1;
+ state->discardCount[nextPlayer]--;
+ }
+
+ shuffle(nextPlayer,state);//Shuffle the deck
+ }
+ tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1];
+ state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1;
+ state->deckCount[nextPlayer]--;
+ tributeRevealedCards[1] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1];
+ state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1;
+ state->deckCount[nextPlayer]--;
+ }
+
+ if (tributeRevealedCards[0] == tributeRevealedCards[1]) { //If we have a duplicate card, just drop one
+ state->playedCards[state->playedCardCount] = tributeRevealedCards[1];
+ state->playedCardCount++;
+ tributeRevealedCards[1] = -1;
+ }
+
+ for (int i = 0; i <= 2; i ++) {
+ if (tributeRevealedCards[i] == copper || tributeRevealedCards[i] == silver || tributeRevealedCards[i] == gold) { //Treasure cards
+ //////////ERROR 7 - coins in state subtract by 2 ////////////
+ state->coins -= 2;
+ }
+
+ //////////ERROR 8 - removed revealed card tributeRevealedCards[i]==estate////////////
+ else if (tributeRevealedCards[i] == duchy || tributeRevealedCards[i] == province || tributeRevealedCards[i] == gardens || tributeRevealedCards[i] == great_hall) { //Victory Card Found
+ drawCard(currentPlayer, state);
+ drawCard(currentPlayer, state);
+ }
+ else { //Action Card
+ state->numActions = state->numActions + 2;
+ }
+ }
+
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// The following code below is the refactored card effect for the Mine card ///
+///////////////////////////////////////////////////////////////////////////////
+
+int mineEffect(struct gameState *state, int handPos, int choice1, int choice2, int currentPlayer){
+
+ int j = state->hand[currentPlayer][choice1]; //store card we will trash
+
+ ////////ERROR 9 - changed the conditional statement to have silver instead of copper ////////////
+ if (state->hand[currentPlayer][choice1] < silver || state->hand[currentPlayer][choice1] > gold)
+ {
+ return -1;
+ }
+
+ if (choice2 > treasure_map || choice2 < curse)
+ {
+ return -1;
+ }
+
+ if ( (getCost(state->hand[currentPlayer][choice1]) + 3) > getCost(choice2) )
+ {
+ return -1;
+ }
+
+ /////////ERROR 10 - changed the toFlag in the gainCard() function to 0 instead of 2. Adds to discard pile instead of hand.
+ gainCard(choice2, state, 0, currentPlayer);
+
+ //discard card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+
+ //discard trashed card
+ for (int i = 0; i < state->handCount[currentPlayer]; i++)
+ {
+ if (state->hand[currentPlayer][i] == j)
+ {
+ discardCard(i, currentPlayer, state, 0);
+ break;
+ }
+ }
+
+ return 0;
+}
+
+
+int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState *state, int handPos, int *bonus)
+{
+ int i;
+ int j;
+ int k;
+ int x;
+ int index;
+ int currentPlayer = whoseTurn(state);
+ int nextPlayer = currentPlayer + 1;
+
+ int temphand[MAX_HAND];// moved above the if statement
+ int drawntreasure=0;
+ int cardDrawn;
+ int z = 0;// this is the counter for the temp hand
+ if (nextPlayer > (state->numPlayers - 1)) {
+ nextPlayer = 0;
+ }
+
+
+ //uses switch to select card and perform actions
+ switch( card )
+ {
+ case adventurer:
+ while(drawntreasure<2) {
+ if (state->deckCount[currentPlayer] <1) { //if the deck is empty we need to shuffle discard and add to deck
+ shuffle(currentPlayer, state);
+ }
+ drawCard(currentPlayer, state);
+ cardDrawn = state->hand[currentPlayer][state->handCount[currentPlayer]-1];//top card of hand is most recently drawn card.
+ if (cardDrawn == copper || cardDrawn == silver || cardDrawn == gold)
+ drawntreasure++;
+ else {
+ temphand[z]=cardDrawn;
+ state->handCount[currentPlayer]--; //this should just remove the top card (the most recently drawn one).
+ z++;
+ }
+ }
+ while(z-1>=0) {
+ state->discard[currentPlayer][state->discardCount[currentPlayer]++]=temphand[z-1]; // discard all cards in play that have been drawn
+ z=z-1;
+ }
+ return 0;
+
+ case council_room:
+ //+4 Cards
+ for (i = 0; i < 4; i++)
+ {
+ drawCard(currentPlayer, state);
+ }
+
+ //+1 Buy
+ state->numBuys++;
+
+ //Each other player draws a card
+ for (i = 0; i < state->numPlayers; i++)
+ {
+ if ( i != currentPlayer )
+ {
+ drawCard(i, state);
+ }
+ }
+
+ //put played card in played card pile
+ discardCard(handPos, currentPlayer, state, 0);
+
+ return 0;
+
+ case feast:
+ //gain card with cost up to 5
+ //Backup hand
+ for (i = 0; i <= state->handCount[currentPlayer]; i++) {
+ temphand[i] = state->hand[currentPlayer][i];//Backup card
+ state->hand[currentPlayer][i] = -1;//Set to nothing
+ }
+ //Backup hand
+
+ //Update Coins for Buy
+ updateCoins(currentPlayer, state, 5);
+ x = 1;//Condition to loop on
+ while( x == 1) {//Buy one card
+ if (supplyCount(choice1, state) <= 0) {
+ if (DEBUG)
+ printf("None of that card left, sorry!\n");
+
+ if (DEBUG) {
+ printf("Cards Left: %d\n", supplyCount(choice1, state));
+ }
+ }
+ else if (state->coins < getCost(choice1)) {
+ printf("That card is too expensive!\n");
+
+ if (DEBUG) {
+ printf("Coins: %d < %d\n", state->coins, getCost(choice1));
+ }
+ }
+ else {
+
+ if (DEBUG) {
+ printf("Deck Count: %d\n", state->handCount[currentPlayer] + state->deckCount[currentPlayer] + state->discardCount[currentPlayer]);
+ }
+
+ gainCard(choice1, state, 0, currentPlayer);//Gain the card
+ x = 0;//No more buying cards
+
+ if (DEBUG) {
+ printf("Deck Count: %d\n", state->handCount[currentPlayer] + state->deckCount[currentPlayer] + state->discardCount[currentPlayer]);
+ }
+
+ }
+ }
+
+ //Reset Hand
+ for (i = 0; i <= state->handCount[currentPlayer]; i++) {
+ state->hand[currentPlayer][i] = temphand[i];
+ temphand[i] = -1;
+ }
+ //Reset Hand
+
+ return 0;
+
+ case gardens:
+ return -1;
+
+ /////////////////////////////////////////////
+ // MODIFIED TO CALL FUNCTION mineEffect() //
+ // ///////////////////////////////////////////
+ case mine:
+
+ return mineEffect(state, handPos, choice1, choice2, currentPlayer);
+
+ case remodel:
+ j = state->hand[currentPlayer][choice1]; //store card we will trash
+
+ if ( (getCost(state->hand[currentPlayer][choice1]) + 2) > getCost(choice2) )
+ {
+ return -1;
+ }
+
+ gainCard(choice2, state, 0, currentPlayer);
+
+ //discard card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+
+ //discard trashed card
+ for (i = 0; i < state->handCount[currentPlayer]; i++)
+ {
+ if (state->hand[currentPlayer][i] == j)
+ {
+ discardCard(i, currentPlayer, state, 0);
+ break;
+ }
+ }
+
+
+ return 0;
+
+ case smithy:
+ //+3 Cards
+ for (i = 0; i < 3; i++)
+ {
+ drawCard(currentPlayer, state);
+ }
+
+ //discard card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+ return 0;
+
+ case village:
+ //+1 Card
+ drawCard(currentPlayer, state);
+
+ //+2 Actions
+ state->numActions = state->numActions + 2;
+
+ //discard played card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+ return 0;
+
+ /////////////////////////////////////////////
+ // MODIFIED TO CALL FUNCTION baronEffect() //
+ /////////////////////////////////////////////
+ case baron:
+
+ return baronEffect(state, choice1, currentPlayer);
+
+ case great_hall:
+ //+1 Card
+ drawCard(currentPlayer, state);
+
+ //+1 Actions
+ state->numActions++;
+
+ //discard card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+ return 0;
+
+ //////////////////////////////////////////////
+ // MODIFIED TO CALL FUNCTION minionEffect() //
+ //////////////////////////////////////////////
+ case minion:
+
+ return minionEffect(state, handPos, currentPlayer, choice1, choice2);
+
+ case steward:
+ if (choice1 == 1)
+ {
+ //+2 cards
+ drawCard(currentPlayer, state);
+ drawCard(currentPlayer, state);
+ }
+ else if (choice1 == 2)
+ {
+ //+2 coins
+ state->coins = state->coins + 2;
+ }
+ else
+ {
+ //trash 2 cards in hand
+ discardCard(choice2, currentPlayer, state, 1);
+ discardCard(choice3, currentPlayer, state, 1);
+ }
+
+ //discard card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+ return 0;
+
+ //////////////////////////////////////////////////
+ // MODIFIED TO CALL FUNCTION tributeEffect() //
+ //////////////////////////////////////////////////
+ case tribute:
+
+ return tributeEffect(state, currentPlayer, nextPlayer);
+
+ //////////////////////////////////////////////////
+ // MODIFIED TO CALL FUNCTION ambassadorEffect() //
+ //////////////////////////////////////////////////
+ case ambassador:
+
+ return ambassadorEffect(state, handPos, currentPlayer, choice1, choice2);
+
+ case cutpurse:
+
+ updateCoins(currentPlayer, state, 2);
+ for (i = 0; i < state->numPlayers; i++)
+ {
+ if (i != currentPlayer)
+ {
+ for (j = 0; j < state->handCount[i]; j++)
+ {
+ if (state->hand[i][j] == copper)
+ {
+ discardCard(j, i, state, 0);
+ break;
+ }
+ if (j == state->handCount[i])
+ {
+ for (k = 0; k < state->handCount[i]; k++)
+ {
+ if (DEBUG)
+ printf("Player %d reveals card number %d\n", i, state->hand[i][k]);
+ }
+ break;
+ }
+ }
+
+ }
+
+ }
+
+ //discard played card from hand
+ discardCard(handPos, currentPlayer, state, 0);
+
+ return 0;
+
+
+ case embargo:
+ //+2 Coins
+ state->coins = state->coins + 2;
+
+ //see if selected pile is in play
+ if ( state->supplyCount[choice1] == -1 )
+ {
+ return -1;
+ }
+
+ //add embargo token to selected supply pile
+ state->embargoTokens[choice1]++;
+
+ //trash card
+ discardCard(handPos, currentPlayer, state, 1);
+ return 0;
+
+ case outpost:
+ //set outpost flag
+ state->outpostPlayed++;
+
+ //discard card
+ discardCard(handPos, currentPlayer, state, 0);
+ return 0;
+
+ case salvager:
+ //+1 buy
+ state->numBuys++;
+
+ if (choice1)
+ {
+ //gain coins equal to trashed card
+ state->coins = state->coins + getCost( handCard(choice1, state) );
+ //trash card
+ discardCard(choice1, currentPlayer, state, 1);
+ }
+
+ //discard card
+ discardCard(handPos, currentPlayer, state, 0);
+ return 0;
+
+ case sea_hag:
+ for (i = 0; i < state->numPlayers; i++) {
+ if (i != currentPlayer) {
+ state->discard[i][state->discardCount[i]] = state->deck[i][state->deckCount[i]--];
+ state->deckCount[i]--;
+ state->discardCount[i]++;
+ state->deck[i][state->deckCount[i]--] = curse;//Top card now a curse
+ }
+ }
+ return 0;
+
+ case treasure_map:
+ //search hand for another treasure_map
+ index = -1;
+ for (i = 0; i < state->handCount[currentPlayer]; i++)
+ {
+ if (state->hand[currentPlayer][i] == treasure_map && i != handPos)
+ {
+ index = i;
+ break;
+ }
+ }
+ if (index > -1)
+ {
+ //trash both treasure cards
+ discardCard(handPos, currentPlayer, state, 1);
+ discardCard(index, currentPlayer, state, 1);
+
+ //gain 4 Gold cards
+ for (i = 0; i < 4; i++)
+ {
+ gainCard(gold, state, 1, currentPlayer);
+ }
+
+ //return success
+ return 1;
+ }
+
+ //no second treasure_map found in hand
+ return -1;
+ }
+
+ return -1;
+}
+
+int discardCard(int handPos, int currentPlayer, struct gameState *state, int trashFlag)
+{
+
+ //if card is not trashed, added to Played pile
+ if (trashFlag < 1)
+ {
+ //add card to played pile
+ state->playedCards[state->playedCardCount] = state->hand[currentPlayer][handPos];
+ state->playedCardCount++;
+ }
+
+ //set played card to -1
+ state->hand[currentPlayer][handPos] = -1;
+
+ //remove card from player's hand
+ if ( handPos == (state->handCount[currentPlayer] - 1) ) //last card in hand array is played
+ {
+ //reduce number of cards in hand
+ state->handCount[currentPlayer]--;
+ }
+ else if ( state->handCount[currentPlayer] == 1 ) //only one card in hand
+ {
+ //reduce number of cards in hand
+ state->handCount[currentPlayer]--;
+ }
+ else
+ {
+ //replace discarded card with last card in hand
+ state->hand[currentPlayer][handPos] = state->hand[currentPlayer][ (state->handCount[currentPlayer] - 1)];
+ //set last card to -1
+ state->hand[currentPlayer][state->handCount[currentPlayer] - 1] = -1;
+ //reduce number of cards in hand
+ state->handCount[currentPlayer]--;
+ }
+
+ return 0;
+}
+
+int gainCard(int supplyPos, struct gameState *state, int toFlag, int player)
+{
+ //Note: supplyPos is enum of choosen card
+
+ //check if supply pile is empty (0) or card is not used in game (-1)
+ if ( supplyCount(supplyPos, state) < 1 )
+ {
+ return -1;
+ }
+
+ //added card for [whoseTurn] current player:
+ // toFlag = 0 : add to discard
+ // toFlag = 1 : add to deck
+ // toFlag = 2 : add to hand
+
+ if (toFlag == 1)
+ {
+ state->deck[ player ][ state->deckCount[player] ] = supplyPos;
+ state->deckCount[player]++;
+ }
+ else if (toFlag == 2)
+ {
+ state->hand[ player ][ state->handCount[player] ] = supplyPos;
+ state->handCount[player]++;
+ }
+ else
+ {
+ state->discard[player][ state->discardCount[player] ] = supplyPos;
+ state->discardCount[player]++;
+ }
+
+ //decrease number in supply pile
+ state->supplyCount[supplyPos]--;
+
+ return 0;
+}
+
+int updateCoins(int player, struct gameState *state, int bonus)
+{
+ int i;
+
+ //reset coin count
+ state->coins = 0;
+
+ //add coins for each Treasure card in player's hand
+ for (i = 0; i < state->handCount[player]; i++)
+ {
+ if (state->hand[player][i] == copper)
+ {
+ state->coins += 1;
+ }
+ else if (state->hand[player][i] == silver)
+ {
+ state->coins += 2;
+ }
+ else if (state->hand[player][i] == gold)
+ {
+ state->coins += 3;
+ }
+ }
+
+ //add bonus
+ state->coins += bonus;
+
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+//end of dominion.c
+
diff --git a/projects/kyawmyis/dominion/dominion.h b/projects/kyawmyis/dominion/dominion.h
new file mode 100644
index 000000000..f9d9039b8
--- /dev/null
+++ b/projects/kyawmyis/dominion/dominion.h
@@ -0,0 +1,131 @@
+#ifndef _DOMINION_H
+#define _DOMINION_H
+
+// Code from various sources, baseline from Kristen Bartosz
+
+#define MAX_HAND 500
+#define MAX_DECK 500
+
+#define MAX_PLAYERS 4
+
+#define DEBUG 0
+
+/* http://dominion.diehrstraits.com has card texts */
+/* http://dominion.isotropic.org has other stuff */
+
+/* hand# means index of a card in current active player's hand */
+
+enum CARD
+{ curse = 0,
+ estate,
+ duchy,
+ province,
+
+ copper,
+ silver,
+ gold,
+
+ adventurer,
+ /* If no/only 1 treasure found, stop when full deck seen */
+ council_room,
+ feast, /* choice1 is supply # of card gained) */
+ gardens,
+ mine, /* choice1 is hand# of money to trash, choice2 is supply# of
+ money to put in hand */
+ remodel, /* choice1 is hand# of card to remodel, choice2 is supply# */
+ smithy,
+ village,
+
+ baron, /* choice1: boolean for discard of estate */
+ /* Discard is always of first (lowest index) estate */
+ great_hall,
+ minion, /* choice1: 1 = +2 coin, 2 = redraw */
+ steward, /* choice1: 1 = +2 card, 2 = +2 coin, 3 = trash 2 (choice2,3) */
+ tribute,
+
+ ambassador, /* choice1 = hand#, choice2 = number to return to supply */
+ cutpurse,
+ embargo, /* choice1 = supply# */
+ outpost,
+ salvager, /* choice1 = hand# to trash */
+ sea_hag,
+ treasure_map
+};
+
+struct gameState {
+ int numPlayers; //number of players
+ int supplyCount[treasure_map+1]; //this is the amount of a specific type of card given a specific number.
+ int embargoTokens[treasure_map+1];
+ int outpostPlayed;
+ int outpostTurn;
+ int whoseTurn;
+ int phase;
+ int numActions; /* Starts at 1 each turn */
+ int coins; /* Use as you see fit! */
+ int numBuys; /* Starts at 1 each turn */
+ int hand[MAX_PLAYERS][MAX_HAND];
+ int handCount[MAX_PLAYERS];
+ int deck[MAX_PLAYERS][MAX_DECK];
+ int deckCount[MAX_PLAYERS];
+ int discard[MAX_PLAYERS][MAX_DECK];
+ int discardCount[MAX_PLAYERS];
+ int playedCards[MAX_DECK];
+ int playedCardCount;
+};
+
+/* All functions return -1 on failure, and DO NOT CHANGE GAME STATE;
+ unless specified for other return, return 0 on success */
+
+struct gameState* newGame();
+
+int* kingdomCards(int k1, int k2, int k3, int k4, int k5, int k6, int k7,
+ int k8, int k9, int k10);
+
+int initializeGame(int numPlayers, int kingdomCards[10], int randomSeed,
+ struct gameState *state);
+/* Responsible for initializing all supplies, and shuffling deck and
+ drawing starting hands for all players. Check that 10 cards selected
+ are in fact (different) kingdom cards, and that numPlayers is valid.
+
+Cards not in game should initialize supply position to -1 */
+
+int shuffle(int player, struct gameState *state);
+/* Assumes all cards are now in deck array (or hand/played): discard is
+ empty */
+
+int playCard(int handPos, int choice1, int choice2, int choice3,
+ struct gameState *state);
+/* Play card with index handPos from current player's hand */
+
+int buyCard(int supplyPos, struct gameState *state);
+/* Buy card with supply index supplyPos */
+
+int numHandCards(struct gameState *state);
+/* How many cards current player has in hand */
+
+int handCard(int handNum, struct gameState *state);
+/* enum value of indexed card in player's hand */
+
+int supplyCount(int card, struct gameState *state);
+/* How many of given card are left in supply */
+
+int fullDeckCount(int player, int card, struct gameState *state);
+/* Here deck = hand + discard + deck */
+
+int whoseTurn(struct gameState *state);
+
+int endTurn(struct gameState *state);
+/* Must do phase C and advance to next player; do not advance whose turn
+ if game is over */
+
+int isGameOver(struct gameState *state);
+
+int scoreFor(int player, struct gameState *state);
+/* Negative here does not mean invalid; scores may be negative,
+ -9999 means invalid input */
+
+int getWinners(int players[MAX_PLAYERS], struct gameState *state);
+/* Set array position of each player who won (remember ties!) to
+ 1, others to 0 */
+
+#endif
diff --git a/projects/kyawmyis/dominion/dominion_helpers.h b/projects/kyawmyis/dominion/dominion_helpers.h
new file mode 100644
index 000000000..0887fda15
--- /dev/null
+++ b/projects/kyawmyis/dominion/dominion_helpers.h
@@ -0,0 +1,15 @@
+#ifndef _DOMINION_HELPERS_H
+#define _DOMINION_HELPERS_H
+
+#include "dominion.h"
+
+int drawCard(int player, struct gameState *state);
+int updateCoins(int player, struct gameState *state, int bonus);
+int discardCard(int handPos, int currentPlayer, struct gameState *state,
+ int trashFlag);
+int gainCard(int supplyPos, struct gameState *state, int toFlag, int player);
+int getCost(int cardNumber);
+int cardEffect(int card, int choice1, int choice2, int choice3,
+ struct gameState *state, int handPos, int *bonus);
+
+#endif
diff --git a/projects/kyawmyis/dominion/interface.c b/projects/kyawmyis/dominion/interface.c
new file mode 100644
index 000000000..58cc5ba58
--- /dev/null
+++ b/projects/kyawmyis/dominion/interface.c
@@ -0,0 +1,425 @@
+/* Interactive Dominion Interface
+
+Sam Heinith CS362
+1/26/2010
+*/
+
+#include
+#include
+#include
+#include
+#include "rngs.h"
+#include "interface.h"
+#include "dominion.h"
+
+
+void cardNumToName(int card, char *name) {
+ switch(card) {
+ case curse:
+ strcpy(name,"Curse");
+ break;
+ case estate:
+ strcpy(name,"Estate");
+ break;
+ case duchy:
+ strcpy(name,"Duchy");
+ break;
+ case province:
+ strcpy(name,"Province");
+ break;
+ case copper:
+ strcpy(name,"Copper");
+ break;
+ case silver:
+ strcpy(name,"Silver");
+ break;
+ case gold:
+ strcpy(name,"Gold");
+ break;
+ case adventurer:
+ strcpy(name,"Adventurer");
+ break;
+ case council_room:
+ strcpy(name,"Council Room");
+ break;
+ case feast:
+ strcpy(name,"Feast");
+ break;
+ case gardens:
+ strcpy(name,"Gardens");
+ break;
+ case mine:
+ strcpy(name,"Mine");
+ break;
+ case remodel:
+ strcpy(name,"Remodel");
+ break;
+ case smithy:
+ strcpy(name,"Smithy");
+ break;
+ case village:
+ strcpy(name,"Village");
+ break;
+ case baron:
+ strcpy(name,"Baron");
+ break;
+ case great_hall:
+ strcpy(name,"Great Hall");
+ break;
+ case minion:
+ strcpy(name,"Minion");
+ break;
+ case steward:
+ strcpy(name,"Steward");
+ break;
+ case tribute:
+ strcpy(name,"Tribute");
+ break;
+ case ambassador:
+ strcpy(name,"Ambassador");
+ break;
+ case cutpurse:
+ strcpy(name,"Cutpurse");
+ break;
+ case embargo:
+ strcpy(name,"Embargo");
+ break;
+ case outpost:
+ strcpy(name,"Outpost");
+ break;
+ case salvager:
+ strcpy(name,"Salvager");
+ break;
+ case sea_hag:
+ strcpy(name,"Sea Hag");
+ break;
+ case treasure_map:
+ strcpy(name,"Treasure Map");
+ break;
+
+ default:
+ strcpy(name,"?");
+ }
+
+}
+
+
+
+int getCardCost(int card) {
+ int cost;
+ switch(card) {
+ case curse:
+ cost = CURSE_COST;
+ break;
+ case estate:
+ cost = ESTATE_COST;
+ break;
+ case duchy:
+ cost = DUCHY_COST;
+ break;
+ case province:
+ cost = PROVINCE_COST;
+ break;
+ case copper:
+ cost = COPPER_COST;
+ break;
+ case silver:
+ cost = SILVER_COST;
+ break;
+ case gold:
+ cost = GOLD_COST;
+ break;
+ case adventurer:
+ cost = ADVENTURER_COST;
+ break;
+ case council_room:
+ cost = COUNCIL_ROOM_COST;
+ break;
+ case feast:
+ cost = FEAST_COST;
+ break;
+ case gardens:
+ cost = GARDEN_COST;
+ break;
+ case mine:
+ cost = MINE_COST;
+ break;
+ case remodel:
+ cost = REMODEL_COST;
+ break;
+ case smithy:
+ cost = SMITHY_COST;
+ break;
+ case village:
+ cost = VILLAGE_COST;
+ break;
+ case baron:
+ cost = BARON_COST;
+ break;
+ case great_hall:
+ cost = GREAT_HALL_COST;
+ break;
+ case minion:
+ cost = MINION_COST;
+ break;
+ case steward:
+ cost = STEWARD_COST;
+ break;
+ case tribute:
+ cost = TRIBUTE_COST;
+ break;
+ case ambassador:
+ cost = AMBASSADOR_COST;
+ break;
+ case cutpurse:
+ cost = CUTPURSE_COST;
+ break;
+ case embargo:
+ cost = EMBARGO_COST;
+ break;
+ case outpost:
+ cost = OUTPOST_COST;
+ break;
+ case salvager:
+ cost = SALVAGER_COST;
+ break;
+ case sea_hag:
+ cost = SEA_HAG_COST;
+ break;
+ case treasure_map:
+ cost = TREASURE_MAP_COST;
+ break;
+ default:
+ cost = ONETHOUSAND;
+ }
+ return cost;
+}
+
+
+
+
+
+
+void printHand(int player, struct gameState *game) {
+ int handCount = game->handCount[player];
+ int handIndex;
+ printf("Player %d's hand:\n", player);
+ if(handCount > 0) printf("# Card\n");
+ for(handIndex = 0; handIndex < handCount; handIndex++) {
+ int card = game->hand[player][handIndex];
+ char name[MAX_STRING_LENGTH];
+ cardNumToName(card, name);
+ printf("%-2d %-13s\n", handIndex, name);
+ }
+ printf("\n");
+}
+
+
+
+void printDeck(int player, struct gameState *game) {
+ int deckCount = game->deckCount[player];
+ int deckIndex;
+ printf("Player %d's deck: \n", player);
+ if(deckCount > 0) printf("# Card\n");
+ for(deckIndex = 0; deckIndex < deckCount; deckIndex++) {
+ int card = game->deck[player][deckIndex];
+ char name[MAX_STRING_LENGTH];
+ cardNumToName(card, name);
+ printf("%-2d %-13s\n", deckIndex, name);
+ }
+ printf("\n");
+}
+
+void printPlayed(int player, struct gameState *game) {
+ int playedCount = game->playedCardCount;
+ int playedIndex;
+ printf("Player %d's played cards: \n", player);
+ if(playedCount > 0) printf("# Card\n");
+ for(playedIndex = 0; playedIndex < playedCount; playedIndex++) {
+ int card = game->playedCards[playedIndex];
+ char name[MAX_STRING_LENGTH];
+ cardNumToName(card, name);
+ printf("%-2d %-13s \n", playedIndex, name);
+ }
+ printf("\n");
+}
+
+
+
+void printDiscard(int player, struct gameState *game) {
+ int discardCount = game->discardCount[player];
+ int discardIndex;
+ printf("Player %d's discard: \n", player);
+ if(discardCount > 0) printf("# Card\n");
+ for(discardIndex = 0; discardIndex < discardCount; discardIndex++) {
+ int card = game->discard[player][discardIndex];
+ char name[MAX_STRING_LENGTH];
+ cardNumToName(card, name);
+ printf("%-2d %-13s \n", discardIndex, name);
+ }
+ printf("\n");
+}
+
+
+
+
+void printSupply(struct gameState *game) {
+ int cardNum, cardCost, cardCount;
+ char name[MAX_STRING_LENGTH];
+ printf("# Card Cost Copies\n");
+ for(cardNum = 0; cardNum < NUM_TOTAL_K_CARDS; cardNum++) {
+ cardCount = game->supplyCount[cardNum];
+ if(cardCount == -1) continue;
+ cardNumToName(cardNum, name);
+ cardCost = getCardCost(cardNum);
+ printf("%-2d %-13s %-5d %-5d", cardNum, name, cardCost, cardCount);
+ printf("\n");
+ }
+ printf("\n");
+}
+
+
+void printState(struct gameState *game) {
+ int numActions = game->numActions;
+ int numCoins = game->coins;
+ int numBuys = game->numBuys;
+ int currentPlayer = game->whoseTurn;
+ int phase = game->phase;
+ char phaseName[MAX_STRING_LENGTH];
+ phaseNumToName(phase,phaseName);
+ printf("Player %d:\n%s phase\n%d actions\n%d coins\n%d buys\n\n", currentPlayer, phaseName, numActions, numCoins, numBuys);
+}
+
+void printScores(struct gameState *game) {
+ int playerNum, score[MAX_PLAYERS];
+ int numPlayers = game->numPlayers;
+ for(playerNum = 0; playerNum < numPlayers; playerNum++) {
+ score[playerNum] = scoreFor(playerNum,game);
+ printf("Player %d has a score of %d\n", playerNum, score[playerNum]);
+ }
+}
+
+
+void printHelp(void) {
+ printf("Commands are: \n\
+ add [Supply Card Number] - add any card to your hand (teh hacks)\n\
+ buy [Supply Card Number] - buy a card at supply position\n\
+ end - end your turn\n\
+ init [Number of Players] [Number of Bots] - initialize the game\n\
+ num - print number of cards in your hand\n\
+ play [Hand Index] [Choice] [Choice] [Choice] - play a card from your hand\n\
+ resign - end the game showing the current scores\n\
+ show - show your current hand\n\
+ stat - show your turn's status\n\
+ supp - show the supply\n\
+ whos - whos turn\n\
+ exit - exit the interface");
+ printf("\n\n");
+
+}
+
+
+void phaseNumToName(int phase, char *name) {
+ switch(phase) {
+ case ACTION_PHASE:
+ strcpy(name,"Action");
+ break;
+ case BUY_PHASE:
+ strcpy(name,"Buy");
+ break;
+ case CLEANUP_PHASE:
+ strcpy(name,"Cleanup");
+ break;
+ }
+}
+
+
+int addCardToHand(int player, int card, struct gameState *game) {
+ if(card >= adventurer && card < NUM_TOTAL_K_CARDS) {
+ int handTop = game->handCount[player];
+ game->hand[player][handTop] = card;
+ game->handCount[player]++;
+ return SUCCESS;
+ } else {
+ return FAILURE;
+ }
+
+}
+
+void selectKingdomCards(int randomSeed, int kingCards[NUM_K_CARDS]) {
+ int i, used, card, numSelected = 0;
+ SelectStream(1);
+ PutSeed((long)randomSeed);
+
+
+ while(numSelected < NUM_K_CARDS) {
+ used = FALSE;
+ card = floor(Random() * NUM_TOTAL_K_CARDS);
+ if(card < adventurer) continue;
+ for(i = 0; i < numSelected; i++) {
+ if(kingCards[i] == card) {
+ used = TRUE;
+ break;
+ }
+ }
+ if(used == TRUE) continue;
+ kingCards[numSelected] = card;
+ numSelected++;
+ }
+}
+
+
+int countHandCoins(int player, struct gameState *game) {
+ int card, index, coinage = 0;
+
+ for(index = 0; index < game->handCount[player]; index++) {
+ card = game->hand[player][index];
+ switch(card) {
+ case copper:
+ coinage += COPPER_VALUE;
+ break;
+ case silver:
+ coinage += SILVER_VALUE;
+ break;
+ case gold:
+ coinage += GOLD_VALUE;
+ break;
+ }
+ }
+ return coinage;
+}
+
+
+void executeBotTurn(int player, int *turnNum, struct gameState *game) {
+ int coins = countHandCoins(player, game);
+
+ printf("*****************Executing Bot Player %d Turn Number %d*****************\n", player, *turnNum);
+ printSupply(game);
+ //sleep(1); //Thinking...
+
+ if(coins >= PROVINCE_COST && supplyCount(province,game) > 0) {
+ buyCard(province,game);
+ printf("Player %d buys card Province\n\n", player);
+ }
+ else if(supplyCount(province,game) == 0 && coins >= DUCHY_COST ) {
+ buyCard(duchy,game);
+ printf("Player %d buys card Duchy\n\n", player);
+ }
+ else if(coins >= GOLD_COST && supplyCount(gold,game) > 0) {
+ buyCard(gold,game);
+ printf("Player %d buys card Gold\n\n", player);
+ }
+ else if(coins >= SILVER_COST && supplyCount(silver,game) > 0) {
+ buyCard(silver,game);
+ printf("Player %d buys card Silver\n\n", player);
+
+ }
+
+
+ if(player == (game->numPlayers -1)) (*turnNum)++;
+ endTurn(game);
+ if(! isGameOver(game)) {
+ int currentPlayer = whoseTurn(game);
+ printf("Player %d's turn number %d\n\n", currentPlayer, (*turnNum));
+ }
+}
diff --git a/projects/kyawmyis/dominion/interface.h b/projects/kyawmyis/dominion/interface.h
new file mode 100644
index 000000000..6f7bacac2
--- /dev/null
+++ b/projects/kyawmyis/dominion/interface.h
@@ -0,0 +1,128 @@
+/* Interactive Dominion Interface
+
+ Sam Heinith CS362
+ 1/26/2010
+*/
+
+
+
+#ifndef _INTERFACE_H
+#define _INTERFACE_H
+
+
+
+#include "dominion.h"
+
+//Last card enum (Treasure map) card number plus one for the 0th card.
+#define NUM_TOTAL_K_CARDS (treasure_map + 1)
+#define NUM_K_CARDS 10
+#define NUM_V_CARDS_2 8
+#define NUM_V_CARDS_3or4 12
+#define NUM_C_CARDS_2 10
+#define NUM_C_CARDS_3 20
+#define NUM_C_CARDS_4 30
+#define NUM_COPPER 60
+#define NUM_SILVER 40
+#define NUM_GOLD 30
+#define UNUSED -1
+#define START_COPPER 7
+#define START_ESTATE 3
+#define HANDSIZE 5
+
+#define COMPARE(string1, string2) strncmp(string1, string2, 4)
+#define MAX_STRING_LENGTH 32
+#define TRUE 1
+#define FALSE 0
+
+#define SUCCESS 0
+#define FAILURE -1
+
+#define MATCH 0
+#define WINNER 1
+#define NOT_WINNER 0
+
+//The Game Phases
+#define ACTION_PHASE 0
+#define BUY_PHASE 1
+#define CLEANUP_PHASE 2
+
+#define COPPER_VALUE 1
+#define SILVER_VALUE 2
+#define GOLD_VALUE 3
+
+//From Dominion List Spoiler
+#define COPPER_COST 0
+#define SILVER_COST 3
+#define GOLD_COST 6
+#define ESTATE_COST 2
+#define DUCHY_COST 5
+#define PROVINCE_COST 8
+#define CURSE_COST 0
+#define ADVENTURER_COST 6
+#define COUNCIL_ROOM_COST 5
+#define FEAST_COST 4
+#define GARDEN_COST 4
+#define MINE_COST 5
+#define MONEYLENDER_COST 4
+#define REMODEL_COST 4
+#define SMITHY_COST 4
+#define VILLAGE_COST 3
+#define WOODCUTTER_COST 3
+#define BARON_COST 4
+#define GREAT_HALL_COST 3
+#define MINION_COST 5
+#define SHANTY_TOWN_COST 3
+#define STEWARD_COST 3
+#define TRIBUTE_COST 5
+#define WISHING_WELL_COST 3
+#define AMBASSADOR_COST 3
+#define CUTPURSE_COST 4
+#define EMBARGO_COST 2
+#define OUTPOST_COST 5
+#define SALVAGER_COST 4
+#define SEA_HAG_COST 4
+#define TREASURE_MAP_COST 4
+#define ONETHOUSAND 1000
+
+
+int addCardToHand(int player, int card, struct gameState *game);
+
+int countHandCoins(int player, struct gameState *game);
+
+
+void executeBotTurn(int player, int *turnNum, struct gameState *game);
+
+void phaseNumToName(int phase, char *name);
+void cardNumToName(int card, char *name);
+
+int getCardCost(int card);
+
+void printHelp(void);
+
+void printHand(int player, struct gameState *game);
+
+void printDeck(int player, struct gameState *game);
+
+void printDiscard(int player, struct gameState *game);
+
+void printPlayed(int player, struct gameState *game);
+
+void printState(struct gameState *game);
+
+void printSupply(struct gameState *game);
+
+void printGameState(struct gameState *game);
+
+void printScores(struct gameState *game);
+
+void selectKingdomCards(int randomSeed, int kingdomCards[NUM_K_CARDS]);
+
+
+
+#endif
+
+
+
+
+
+
diff --git a/projects/kyawmyis/dominion/playdom.c b/projects/kyawmyis/dominion/playdom.c
new file mode 100644
index 000000000..336d9a661
--- /dev/null
+++ b/projects/kyawmyis/dominion/playdom.c
@@ -0,0 +1,135 @@
+#include "dominion.h"
+#include
+#include "rngs.h"
+#include
+
+int main (int argc, char** argv) {
+ struct gameState G;
+ int k[10] = {adventurer, gardens, embargo, village, minion, mine, cutpurse,
+ sea_hag, tribute, smithy
+ };
+
+ printf ("Starting game.\n");
+
+ initializeGame(2, k, atoi(argv[1]), &G);
+
+ int money = 0;
+ int smithyPos = -1;
+ int adventurerPos = -1;
+ int i=0;
+
+ int numSmithies = 0;
+ int numAdventurers = 0;
+
+ while (!isGameOver(&G)) {
+ money = 0;
+ smithyPos = -1;
+ adventurerPos = -1;
+ for (i = 0; i < numHandCards(&G); i++) {
+ if (handCard(i, &G) == copper)
+ money++;
+ else if (handCard(i, &G) == silver)
+ money += 2;
+ else if (handCard(i, &G) == gold)
+ money += 3;
+ else if (handCard(i, &G) == smithy)
+ smithyPos = i;
+ else if (handCard(i, &G) == adventurer)
+ adventurerPos = i;
+ }
+
+ if (whoseTurn(&G) == 0) {
+ if (smithyPos != -1) {
+ printf("0: smithy played from position %d\n", smithyPos);
+ playCard(smithyPos, -1, -1, -1, &G);
+ printf("smithy played.\n");
+ money = 0;
+ i=0;
+ while(i= 8) {
+ printf("0: bought province\n");
+ buyCard(province, &G);
+ }
+ else if (money >= 6) {
+ printf("0: bought gold\n");
+ buyCard(gold, &G);
+ }
+ else if ((money >= 4) && (numSmithies < 2)) {
+ printf("0: bought smithy\n");
+ buyCard(smithy, &G);
+ numSmithies++;
+ }
+ else if (money >= 3) {
+ printf("0: bought silver\n");
+ buyCard(silver, &G);
+ }
+
+ printf("0: end turn\n");
+ endTurn(&G);
+ }
+ else {
+ if (adventurerPos != -1) {
+ printf("1: adventurer played from position %d\n", adventurerPos);
+ playCard(adventurerPos, -1, -1, -1, &G);
+ money = 0;
+ i=0;
+ while(i= 8) {
+ printf("1: bought province\n");
+ buyCard(province, &G);
+ }
+ else if ((money >= 6) && (numAdventurers < 2)) {
+ printf("1: bought adventurer\n");
+ buyCard(adventurer, &G);
+ numAdventurers++;
+ } else if (money >= 6) {
+ printf("1: bought gold\n");
+ buyCard(gold, &G);
+ }
+ else if (money >= 3) {
+ printf("1: bought silver\n");
+ buyCard(silver, &G);
+ }
+ printf("1: endTurn\n");
+
+ endTurn(&G);
+ }
+ } // end of While
+
+ printf ("Finished game.\n");
+ printf ("Player 0: %d\nPlayer 1: %d\n", scoreFor(0, &G), scoreFor(1, &G));
+
+ return 0;
+}
diff --git a/projects/kyawmyis/dominion/player.c b/projects/kyawmyis/dominion/player.c
new file mode 100644
index 000000000..0a169d126
--- /dev/null
+++ b/projects/kyawmyis/dominion/player.c
@@ -0,0 +1,205 @@
+/* Interactive Dominion Interface
+ Version 7
+
+ Sam Heinith CS362
+ Questions/Comments:
+ heiniths@onid.orst.edu
+ 1/26/2010
+*/
+
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "dominion.h"
+#include "interface.h"
+#include "rngs.h"
+
+
+int main2(int argc, char *argv[]) {
+ //Default cards, as defined in playDom
+ int k[10] = {adventurer, gardens, embargo, village, minion, mine, cutpurse, sea_hag, tribute, smithy};
+ struct gameState g;
+ initializeGame(2,k,1,&g);
+ printf ("SUCCESSFUL INIT\n");
+ getchar();
+ return 0;
+}
+
+int main(int argc, char* argv[]) {
+ char *add = "add";
+ char *buyC = "buy";
+ char *endT = "end";
+ char *exit = "exit";
+ char *help = "help";
+ char *init = "init";
+ char *numH = "num";
+ char *play = "play";
+ char *resign = "resi";
+ char *show = "show";
+ char *stat = "stat";
+ char *supply = "supp";
+ char *whos = "whos";
+
+ char command[MAX_STRING_LENGTH];
+ char line[MAX_STRING_LENGTH];
+ char cardName[MAX_STRING_LENGTH];
+
+ //Array to hold bot presence
+ int isBot[MAX_PLAYERS] = { 0, 0, 0, 0};
+
+ int players[MAX_PLAYERS];
+ int playerNum;
+ int outcome;
+ int currentPlayer;
+ int gameOver = FALSE;
+ int gameStarted = FALSE;
+ int turnNum = 0;
+
+ int randomSeed = atoi(argv[1]);
+
+ //Default cards, as defined in playDom
+ int kCards[10] = {adventurer, gardens, embargo, village, minion, mine, cutpurse, sea_hag, tribute, smithy};
+
+ struct gameState g;
+ struct gameState * game = &g;
+
+ memset(game,0,sizeof(struct gameState));
+
+ if(argc != 2) {
+ printf("Usage: player [integer random number seed]\n");
+ return EXIT_SUCCESS;
+ }
+
+ if(randomSeed <= 0) {
+ printf("Usage: player [integer random number seed]\n");
+ return EXIT_SUCCESS;
+ }
+
+ initializeGame(2,kCards,randomSeed,game);
+
+ printf("Please enter a command or \"help\" for commands\n");
+
+
+ while(TRUE) {
+ int arg0 = UNUSED;
+ int arg1 = UNUSED;
+ int arg2 = UNUSED;
+ int arg3 = UNUSED;
+
+ outcome = FAILURE;
+ strcpy(line,"");
+ strcpy(command,"");
+ strcpy(cardName,"");
+
+ currentPlayer = whoseTurn(game);
+
+ //If you are getting a seg fault comment this if block out
+ gameOver = isGameOver(game);
+ if(gameStarted == TRUE && gameOver == TRUE) {
+ printScores(game);
+ getWinners(players, game);
+ printf("After %d turns, the winner(s) are:\n", turnNum);
+ for(playerNum = 0; playerNum < game->numPlayers; playerNum++) {
+ if(players[playerNum] == WINNER) printf("Player %d\n", playerNum);
+ }
+ for(playerNum = 0; playerNum < game->numPlayers; playerNum++) {
+ printHand(playerNum, game);
+ printPlayed(playerNum, game);
+ printDiscard(playerNum, game);
+ printDeck(playerNum, game);
+ }
+
+ break; //Exit out of the game/while loop
+ }
+
+
+ if(isBot[currentPlayer] == TRUE) {
+ executeBotTurn(currentPlayer, &turnNum, game);
+ continue;
+ }
+
+ printf("$ ");
+ fgets(line, MAX_STRING_LENGTH, stdin);
+ sscanf(line, "%s %d %d %d %d", command, &arg0, &arg1, &arg2, &arg3);
+
+
+ if(COMPARE(command, add) == 0) {
+ outcome = addCardToHand(currentPlayer, arg0, game);
+ cardNumToName(arg0, cardName);
+ printf("Player %d adds %s to their hand\n\n", currentPlayer, cardName);
+ } else if(COMPARE(command, buyC) == 0) {
+ outcome = buyCard(arg0, game);
+ cardNumToName(arg0, cardName);
+ if(outcome == SUCCESS) {
+ printf("Player %d buys card %d, %s\n\n", currentPlayer, arg0, cardName);
+ } else {
+ printf("Player %d cannot buy card %d, %s\n\n", currentPlayer, arg0, cardName);
+ }
+ } else if(COMPARE(command, endT) == 0) {
+ if(gameStarted == TRUE) {
+ if(currentPlayer == (game->numPlayers -1)) turnNum++;
+ endTurn(game);
+ currentPlayer = whoseTurn(game);
+ printf("Player %d's turn number %d\n\n", currentPlayer, turnNum);
+ }
+
+ } else if(COMPARE(command, exit) == 0) {
+ break;
+ } else if(COMPARE(command, help) == 0) {
+ printHelp();
+ } else if(COMPARE(command, init) == 0) {
+ int numHuman = arg0 - arg1;
+ for(playerNum = numHuman; playerNum < arg0; playerNum++) {
+ isBot[playerNum] = TRUE;
+ }
+ // selectKingdomCards(randomSeed, kCards); //Comment this out to use the default card set defined in playDom.
+ outcome = initializeGame(arg0, kCards, randomSeed, game);
+ printf("\n");
+ if(outcome == SUCCESS) {
+ gameStarted = TRUE;
+ currentPlayer = whoseTurn(game);
+ printf("Player %d's turn number %d\n\n", currentPlayer, turnNum);
+ }
+
+ } else if(COMPARE(command, numH) == 0) {
+ int numCards = numHandCards(game);
+ printf("There are %d cards in your hand.\n", numCards);
+ } else if(COMPARE(command, play) == 0) {
+ int card = handCard(arg0,game);
+ outcome = playCard(arg0, arg1, arg2, arg3, game);
+ cardNumToName(card, cardName);
+ if(outcome == SUCCESS) {
+ printf("Player %d plays %s\n\n", currentPlayer, cardName);
+ } else {
+ printf("Player %d cannot play card %d\n\n", currentPlayer, arg0);
+ }
+
+ } else if(COMPARE(command, resign) == 0) {
+ endTurn(game);
+ printScores(game);
+ break;
+ } else if(COMPARE(command, show) == 0) {
+ if(gameStarted == FALSE) continue;
+ printHand(currentPlayer, game);
+ printPlayed(currentPlayer, game);
+ //printDiscard(currentPlayer, game);
+ //printDeck(currentPlayer, game);
+ } else if(COMPARE(command, stat) == 0) {
+ if(gameStarted == FALSE) continue;
+ printState(game);
+ } else if(COMPARE(command, supply) == 0) {
+ printSupply(game);
+ } else if(COMPARE(command, whos) == 0) {
+ int playerNum = whoseTurn(game);
+ printf("Player %d's turn\n", playerNum);
+ }
+ }
+
+ return EXIT_SUCCESS;
+
+}
diff --git a/projects/kyawmyis/dominion/randomtestcard1.c b/projects/kyawmyis/dominion/randomtestcard1.c
new file mode 100644
index 000000000..ec1f28d76
--- /dev/null
+++ b/projects/kyawmyis/dominion/randomtestcard1.c
@@ -0,0 +1,222 @@
+#include "dominion.h"
+#include
+#include
+#include
+#include
+#include
+#include "rngs.h"
+
+
+
+int main () {
+
+ int numPlayer = 2; // set the number of players
+ int testBaronEffect; // return of testBaronEffect function
+ int currentPlayer = 0; // set who the current player is
+
+ int choice1; // tracker for which choice1 player chose **Randomized**
+
+ int maxHandSize = 5; // maximum number of cards in current player's hand
+
+ int r;
+ int numBuysBefore; // number of buys a player has before Baron card played. **Randomized**
+ int numCoinsBefore; // number of coins a player has before Baron card is played **Randomized**
+ int numEstateBefore; // counter of the number of Estate cards in hand before Baron card is played
+ int numEstateAfter; // counter of the number of Estate cards in hand after Baron card is played
+ int numSupplyBefore; // counter of the number of Estate cards in supply before Baron card **Randomized**
+
+ // Flags to check if test passes
+ int buysCheck = 1; // check if the number of buys is ok after Baron card is played. 1 = ok. 0 = not ok.
+ int coinsCheck = 1; // check if the number of coins is ok after the Baron card is played
+ int estateCheck = 1; // check if estate correctly gained in hand.
+ int supplyCheck = 1; // check if the supply was reduced by ok.
+ int discardCheck = 1; // check if the Estate was added to discard pile
+
+ // Helper variables
+ int randomCard; // random card to put in hand of player
+ int isSupplyEmpty; // check to see if Estate supply is empty initially
+
+
+ int k[10] = {adventurer, council_room, feast, gardens, mine,
+ remodel, smithy, village, baron, great_hall
+ };
+
+ struct gameState G; // set a gameState
+ srand(time(NULL)); //seed the random generator
+
+ printf ("*****************************************************\n");
+ printf ("RANDOM TEST 1: Random Testing baronEffect function.\n");
+ printf ("*****************************************************\n");
+
+ memset(&G, 1, sizeof(struct gameState));
+
+ for(int i = 0; i<1000000; i++){
+
+ r = initializeGame(numPlayer, k, (int)(rand()%1000+1), &G);
+ G.handCount[0] = maxHandSize;
+ numBuysBefore = (int)(rand()%10+1); // Randomize number of buys initially from 1-10
+ G.numBuys = numBuysBefore;
+ numCoinsBefore = (int)(rand()%10+1); // Randomize number of coins initially from 1-10
+ G.coins = numCoinsBefore;
+ numSupplyBefore = (int)(rand()%9); // Randomize number of Estate cards in supply initially from 0-8
+ G.supplyCount[estate] = numSupplyBefore;
+ isSupplyEmpty = 0;
+ if(numSupplyBefore == 0){
+ isSupplyEmpty = 1;
+ }
+
+ // Make the player have an empty discard
+ G.discard[0][0] = -1;
+
+ choice1 = (int)(rand()%2); // choice1 random. Either 0 or 1.
+
+ // Randomize what is in the hand of the player
+ // 0-10 are corresponding k array. 11 is the Estate card.
+ for(int j=0; j 0){
+ // Check that the number of coins is gained by 4.
+ if(numCoinsBefore != G.coins-4){
+ coinsCheck = 0;
+ }
+
+ // Check that an Estate card was removed to discard in player hand
+ numEstateAfter = 0;
+ for(int j=0; j
+#include
+#include
+#include
+#include
+#include "rngs.h"
+
+int main () {
+
+ int r;
+ int numPlayer = 2; // set the number of players
+ int testminionEffect; // return of testMinionEffect function
+ int currentPlayer = 0; // set who the current player is
+
+ int choice1; // tracker for which choice1 player chose **Randomized**
+ int choice2; // tracker for which choice2 player chose **Randomized**
+
+ int handSizeBefore; // number of cards in current player's hand **Randomized**
+ int opponentHandSizeBefore; // number of cards in opponent's hand **Randomized**
+ int numActionsBefore; // number of actions a player has before Baron card played. **Randomized**
+ int numCoinsBefore; // number of coins a player has before Baron card is played **Randomized**
+ int numMinionBefore; // number of Minion cards in hand before
+
+ // Counters for After function Call
+ int numMinionAfter;
+ int minionDiscard;
+
+ // Flags to check if test passes
+ int actionsCheck = 1; // check if the number of actionss is ok after Minion card is played. 1 = ok. 0 = not ok.
+ int coinsCheck = 1; // check if the number of coins is ok after the Baron card is played
+ int playerGainedFour = 1; // check if player gained 4 new cards.
+ int playerHandCheck = 1; // check if the player's hand was properly discarded
+ int playerDiscardCheck = 1; // check if the player's discard was properly added to
+ int opponentHandCheck = 1; // check if the opponent's hand was properly discarded
+ int opponentDiscardCheck = 1; // check if the opponent's discard was properly added to
+ int opponentGainedFour = 1; // check if opponent gained 4 new cards.
+
+
+ // Helper variables
+ int randomCard; // random card to put in hand of player
+ int minionIndex; // index of the Minion card
+
+ int k[10] = {adventurer, council_room, feast, gardens, mine,
+ remodel, smithy, village, minion, great_hall};
+
+ struct gameState G; // set a gameState
+ srand(time(NULL)); //seed the random generator
+
+ printf ("*****************************************************\n");
+ printf ("RANDOM TEST 2: Random Testing minionEffect function.\n");
+ printf ("*****************************************************\n");
+
+ memset(&G, 2, sizeof(struct gameState));
+
+ for(int i = 0; i<1000000; i++){
+
+ r = initializeGame(numPlayer, k, (int)(rand()%1000+1), &G);
+
+ // Randomize handCount of both players. From 1 to 10.
+ handSizeBefore = (int)(rand()%10+1);
+ G.handCount[0] = handSizeBefore;
+ opponentHandSizeBefore = (int)(rand()%10+1);
+ G.handCount[1] = handSizeBefore;
+
+ // Initialize deck of both players with 20 counts of Coppers.
+ G.deckCount[0] = 20;
+ G.deckCount[1] = 20;
+ for(int j = 0; j<20; j++){
+ G.deck[0][j] = copper;
+ G.deck[1][j] = copper;
+ }
+
+ // Set initial discardCount of both players to 0.
+ G.discardCount[0] = 0;
+ G.discardCount[1] = 0;
+
+ numActionsBefore = (int)(rand()%10+1); // Randomize number of actions initially from 1-10
+ G.numActions = numActionsBefore;
+ numCoinsBefore = (int)(rand()%10+1); // Randomize number of coins initially from 1-10
+ G.coins = numCoinsBefore;
+
+ // Randomize the choice1 and choice2
+ choice1 = (int)(rand()%2); // choice1 random. Either 0 or 1.
+ if(choice1 == 1){
+ choice2 = 0;
+ }
+ else{
+ choice2 = 1;
+ }
+
+ // Randomize what is in the hand of the player and opponent
+ // 0-10 are corresponding k array. 11 is a Silver card.
+ // Player1
+ for(int j=0; j 0){
+
+ testminionEffect = minionEffect(&G, minionIndex, currentPlayer, choice1, choice2);
+
+ // Check if the number of actions is increased by 1
+ if(numActionsBefore != G.numActions-1){
+ actionsCheck = 0;
+ }
+
+ // Check for if choice1 was chosen
+ if(choice1 == 1){
+
+ // Check if Minion card was discarded from hand
+ numMinionAfter = 0;
+ for(int j=0; j4){
+ // Check handCount of player 2
+ if(G.handCount[1] != 4){
+ opponentGainedFour = 0;
+ }
+
+ // Check hand of player 2 is from deck
+ for(int j=0; j
+#include
+#include
+#include
+#include
+#include "rngs.h"
+
+int main () {
+
+ int r;
+ int numPlayer = 2; // set the number of players
+ int testTributeEffect; // return of testMinionEffect function
+ int currentPlayer = 0; // set who the current player is
+
+ // Counters before the function call
+ int numActionsBefore; // **Randomized**
+ int numCoinsBefore; // **Randomized**
+ int numPlayerCardsBefore; // **Randomized**
+ int numOpponentDeckBefore; // **Randomized**
+ int numOpponentDiscardBefore; // **Randomized**
+
+ // Counters for after function Call
+ int revealedTemp[2] = {-1,-1};
+ int actionsIncrease;
+ int coinsIncrease;
+ int cardsIncrease;
+
+ // Flags to check if test passes
+ int actionsCheck = 1; // check number of actions after call. 0 = not ok. 1 = ok.
+ int coinsCheck = 1; // check number of coins after call
+ int cardsCheck = 1; // check number of cards after call
+
+ // Helper variables
+ int randomCard; // random card to put in hand of player
+
+ int k[10] = {adventurer, council_room, feast, gardens, mine,
+ remodel, smithy, village, tribute, great_hall};
+
+ struct gameState G; // set a gameState
+ srand(time(NULL)); //seed the random generator
+
+ printf ("*****************************************************\n");
+ printf ("RANDOM TEST 3: Random Testing tributeEffect function.\n");
+ printf ("*****************************************************\n");
+
+ memset(&G, 2, sizeof(struct gameState));
+
+ for(int i = 0; i<1000000; i++){
+
+ r = initializeGame(numPlayer, k, (int)(rand()%1000+1), &G);
+
+ // Set the current player's number of Actions and Coins before
+ numActionsBefore = (int)(rand()%10+1); // Random from 1 to 10
+ G.numActions = numActionsBefore;
+ numCoinsBefore = (int)(rand()%10+1); // Random from 1 to 10
+ G.coins = numCoinsBefore;
+
+ // Set the current player's hand with random number of cards -- use copper
+ numPlayerCardsBefore = (int)(rand()%10+1); // Random from 1 to 10
+ G.handCount[0] = numPlayerCardsBefore;
+ for(int j=0; j=2){
+ revealedTemp[0] = G.deck[1][numOpponentDeckBefore-1];
+ revealedTemp[1] = G.deck[1][numOpponentDeckBefore-2];
+ }
+
+ // If the revealed card was a duplicate
+ if(revealedTemp[0] == revealedTemp[1]){
+ revealedTemp[1] = -1;
+ }
+
+ // Call the card effect function
+ testTributeEffect = tributeEffect(&G, currentPlayer, currentPlayer+1);
+
+ // Add conditions based on rule of card
+ actionsIncrease = 0;
+ coinsIncrease = 0;
+ cardsIncrease = 0;
+ if(numOpponentDeckBefore>=2){
+ for(int j=0; j<2; j++){
+
+ if(revealedTemp[j] == copper || revealedTemp[j] == silver || revealedTemp[j] == gold){
+ coinsIncrease = coinsIncrease+2;
+ }
+ else if(revealedTemp[j] == estate || revealedTemp[j] == duchy || revealedTemp[j] == province || revealedTemp[j] == gardens || revealedTemp[j] == great_hall){
+ cardsIncrease = cardsIncrease+2;
+ }
+ else if(revealedTemp[j] == k[0] || revealedTemp[j] == k[1] || revealedTemp[j] == k[2] || revealedTemp[j] == k[3] || revealedTemp[j] == k[4] || revealedTemp[j] == k[5] || revealedTemp[j] == k[6] || revealedTemp[j] == k[7] || revealedTemp[j] == k[8] || revealedTemp[j] == k[9]){
+ actionsIncrease = actionsIncrease+2;
+ }
+ }
+
+ // Checks to see if increases are correct
+ if(numActionsBefore != G.numActions - actionsIncrease){
+ actionsCheck = 0;
+ }
+ if(numCoinsBefore != G.coins - coinsIncrease){
+ coinsCheck = 0;
+ }
+ if(numPlayerCardsBefore != G.handCount[0] - cardsIncrease){
+ cardsCheck = 0;
+ }
+ }
+ }
+ // End of the for loop
+ // Pass or Fail checks at the end of the tests.
+ if(actionsCheck == 1){
+ printf ("Subtest 1: Number of actions ok?: Pass\n");
+ }
+ else{
+ printf ("Subtest 1: Number of actions ok?: Fail\n");
+ }
+ if(coinsCheck == 1){
+ printf ("Subtest 2: Number of coins ok?: Pass\n");
+ }
+ else{
+ printf ("Subtest 2: Number of coins ok?: Fail\n");
+ }
+ if(cardsCheck == 1){
+ printf ("Subtest 3: Number of cards ok?: Pass\n");
+ }
+ else{
+ printf ("Subtest 3: Number of cards ok?: Fail\n");
+ }
+
+ printf ("****************************************************************\n");
+ printf ("RANDOM TEST 3 COMPLETE\n");
+ printf ("****************************************************************\n");
+
+ return 0;
+
+}
diff --git a/projects/kyawmyis/dominion/rngs.c b/projects/kyawmyis/dominion/rngs.c
new file mode 100644
index 000000000..a85bbc961
--- /dev/null
+++ b/projects/kyawmyis/dominion/rngs.c
@@ -0,0 +1,183 @@
+/* -------------------------------------------------------------------------
+ * This is an ANSI C library for multi-stream random number generation.
+ * The use of this library is recommended as a replacement for the ANSI C
+ * rand() and srand() functions, particularly in simulation applications
+ * where the statistical 'goodness' of the random number generator is
+ * important. The library supplies 256 streams of random numbers; use
+ * SelectStream(s) to switch between streams indexed s = 0,1,...,255.
+ *
+ * The streams must be initialized. The recommended way to do this is by
+ * using the function PlantSeeds(x) with the value of x used to initialize
+ * the default stream and all other streams initialized automatically with
+ * values dependent on the value of x. The following convention is used
+ * to initialize the default stream:
+ * if x > 0 then x is the state
+ * if x < 0 then the state is obtained from the system clock
+ * if x = 0 then the state is to be supplied interactively.
+ *
+ * The generator used in this library is a so-called 'Lehmer random number
+ * generator' which returns a pseudo-random number uniformly distributed
+ * 0.0 and 1.0. The period is (m - 1) where m = 2,147,483,647 and the
+ * smallest and largest possible values are (1 / m) and 1 - (1 / m)
+ * respectively. For more details see:
+ *
+ * "Random Number Generators: Good Ones Are Hard To Find"
+ * Steve Park and Keith Miller
+ * Communications of the ACM, October 1988
+ *
+ * Name : rngs.c (Random Number Generation - Multiple Streams)
+ * Authors : Steve Park & Dave Geyer
+ * Language : ANSI C
+ * Latest Revision : 09-22-98
+ * -------------------------------------------------------------------------
+ */
+
+#include
+#include
+#include "rngs.h"
+
+#define MODULUS 2147483647 /* DON'T CHANGE THIS VALUE */
+#define MULTIPLIER 48271 /* DON'T CHANGE THIS VALUE */
+#define CHECK 399268537 /* DON'T CHANGE THIS VALUE */
+#define STREAMS 256 /* # of streams, DON'T CHANGE THIS VALUE */
+#define A256 22925 /* jump multiplier, DON'T CHANGE THIS VALUE */
+#define DEFAULT 123456789 /* initial seed, use 0 < DEFAULT < MODULUS */
+
+static long seed[STREAMS] = {DEFAULT}; /* current state of each stream */
+static int stream = 0; /* stream index, 0 is the default */
+static int initialized = 0; /* test for stream initialization */
+
+
+double Random(void)
+/* ----------------------------------------------------------------
+ * Random returns a pseudo-random real number uniformly distributed
+ * between 0.0 and 1.0.
+ * ----------------------------------------------------------------
+ */
+{
+ const long Q = MODULUS / MULTIPLIER;
+ const long R = MODULUS % MULTIPLIER;
+ long t;
+
+ t = MULTIPLIER * (seed[stream] % Q) - R * (seed[stream] / Q);
+ if (t > 0)
+ seed[stream] = t;
+ else
+ seed[stream] = t + MODULUS;
+ return ((double) seed[stream] / MODULUS);
+}
+
+
+void PlantSeeds(long x)
+/* ---------------------------------------------------------------------
+ * Use this function to set the state of all the random number generator
+ * streams by "planting" a sequence of states (seeds), one per stream,
+ * with all states dictated by the state of the default stream.
+ * The sequence of planted states is separated one from the next by
+ * 8,367,782 calls to Random().
+ * ---------------------------------------------------------------------
+ */
+{
+ const long Q = MODULUS / A256;
+ const long R = MODULUS % A256;
+ int j;
+ int s;
+
+ initialized = 1;
+ s = stream; /* remember the current stream */
+ SelectStream(0); /* change to stream 0 */
+ PutSeed(x); /* set seed[0] */
+ stream = s; /* reset the current stream */
+ for (j = 1; j < STREAMS; j++) {
+ x = A256 * (seed[j - 1] % Q) - R * (seed[j - 1] / Q);
+ if (x > 0)
+ seed[j] = x;
+ else
+ seed[j] = x + MODULUS;
+ }
+}
+
+
+void PutSeed(long x)
+/* ---------------------------------------------------------------
+ * Use this function to set the state of the current random number
+ * generator stream according to the following conventions:
+ * if x > 0 then x is the state (unless too large)
+ * if x < 0 then the state is obtained from the system clock
+ * if x = 0 then the state is to be supplied interactively
+ * ---------------------------------------------------------------
+ */
+{
+ char ok = 0;
+
+ if (x > 0)
+ x = x % MODULUS; /* correct if x is too large */
+ if (x < 0)
+ x = ((unsigned long) time((time_t *) NULL)) % MODULUS;
+ if (x == 0)
+ while (!ok) {
+ printf("\nEnter a positive integer seed (9 digits or less) >> ");
+ scanf("%ld", &x);
+ ok = (0 < x) && (x < MODULUS);
+ if (!ok)
+ printf("\nInput out of range ... try again\n");
+ }
+ seed[stream] = x;
+}
+
+
+void GetSeed(long *x)
+/* ---------------------------------------------------------------
+ * Use this function to get the state of the current random number
+ * generator stream.
+ * ---------------------------------------------------------------
+ */
+{
+ *x = seed[stream];
+}
+
+
+void SelectStream(int index)
+/* ------------------------------------------------------------------
+ * Use this function to set the current random number generator
+ * stream -- that stream from which the next random number will come.
+ * ------------------------------------------------------------------
+ */
+{
+ stream = ((unsigned int) index) % STREAMS;
+ if ((initialized == 0) && (stream != 0)) /* protect against */
+ PlantSeeds(DEFAULT); /* un-initialized streams */
+}
+
+
+void TestRandom(void)
+/* ------------------------------------------------------------------
+ * Use this (optional) function to test for a correct implementation.
+ * ------------------------------------------------------------------
+ */
+{
+ long i;
+ long x;
+ double u;
+ char ok = 0;
+
+ SelectStream(0); /* select the default stream */
+ PutSeed(1); /* and set the state to 1 */
+ for(i = 0; i < 10000; i++) {
+ u = Random();
+ if (ok)
+ printf(" %f \n\n", u);
+
+ }
+ GetSeed(&x); /* get the new state value */
+ ok = (x == CHECK); /* and check for correctness */
+
+ SelectStream(1); /* select stream 1 */
+ PlantSeeds(1); /* set the state of all streams */
+ GetSeed(&x); /* get the state of stream 1 */
+ ok = ok && (x == A256); /* x should be the jump multiplier */
+ if (ok)
+ printf("\n The implementation of rngs.c is correct.\n\n");
+ else
+ printf("\n\a ERROR -- the implementation of rngs.c is not correct.\n\n");
+}
diff --git a/projects/kyawmyis/dominion/rngs.h b/projects/kyawmyis/dominion/rngs.h
new file mode 100644
index 000000000..c9f3f451a
--- /dev/null
+++ b/projects/kyawmyis/dominion/rngs.h
@@ -0,0 +1,19 @@
+/* -----------------------------------------------------------------------
+ * Name : rngs.h (header file for the library file rngs.c)
+ * Author : Steve Park & Dave Geyer
+ * Language : ANSI C
+ * Latest Revision : 09-22-98
+ * -----------------------------------------------------------------------
+ */
+
+#if !defined( _RNGS_ )
+#define _RNGS_
+
+double Random(void);
+void PlantSeeds(long x);
+void GetSeed(long *x);
+void PutSeed(long x);
+void SelectStream(int index);
+void TestRandom(void);
+
+#endif
diff --git a/projects/kyawmyis/dominion/rt.c b/projects/kyawmyis/dominion/rt.c
new file mode 100644
index 000000000..5805bb9b4
--- /dev/null
+++ b/projects/kyawmyis/dominion/rt.c
@@ -0,0 +1,27 @@
+#include "rngs.h"
+#include
+#include
+
+int main(int argc, char** argv) {
+ if (argc < 3) {
+ printf ("Not enough inputs: seed target\n");
+ }
+
+ SelectStream(1);
+ PutSeed((long)atoi(argv[1]));
+
+ int done = 0;
+ int c = 1000000000;
+
+ while (!done) {
+ c = floor(Random() * 1000000000);
+ // if (c % 100000 == 0) {
+ // printf ("c = %d\n", c);
+ // }
+ if (c == atoi(argv[2])) {
+ printf ("Found the bug!\n");
+ done = 1;
+ }
+ }
+}
+
diff --git a/projects/kyawmyis/dominion/testdrawcard.c b/projects/kyawmyis/dominion/testdrawcard.c
new file mode 100644
index 000000000..436527e34
--- /dev/null
+++ b/projects/kyawmyis/dominion/testdrawcard.c
@@ -0,0 +1,224 @@
+#include "dominion.h"
+#include
+#include
+#include
+#include "rngs.h"
+
+
+int main () {
+
+ int testBaronEffect;
+ int r;
+ int numBuysOriginal;
+ int numCoinsOriginal;
+
+ int k[10] = {adventurer, council_room, feast, gardens, mine,
+ remodel, smithy, village, baron, great_hall
+ };
+
+ struct gameState G;
+
+ printf ("*******************************************\n");
+ printf ("UNIT TEST 1: Testing baronEffect function.\n");
+ printf ("*******************************************\n");
+
+ /////////////////////////////////////////////////////////////////////////////////////
+ // Test to see if player chooses to not discard -- estate card available in supply//
+ ////////////////////////////////////////////////////////////////////////////////////
+ printf ("----------------------------------------------------------------------\n");
+ printf ("Subtest 1 - Test if player chooses to not discard ESTATE card (Supply OK):\n");
+ printf ("----------------------------------------------------------------------\n");
+ memset(&G, 1, sizeof(struct gameState));
+ r = initializeGame(2, k, 323, &G);
+ G.hand[0][0] = copper;
+ G.hand[0][1] = copper;
+ G.hand[0][2] = copper;
+ G.hand[0][3] = copper;
+ G.hand[0][4] = copper;
+ G.numBuys = 1;
+ G.handCount[0] = 5;
+ numBuysOriginal = G.numBuys;
+
+ testBaronEffect = baronEffect(&G, 0, 0);
+
+ // Check if the player has an ESTATE card in his hand
+ int checker = 0;
+ for(int i=0; i<=G.handCount[0]; i++){
+ if(G.hand[0][i] == estate){
+ checker = 1;
+ }
+ }
+ if(checker == 1){
+ printf ("Subtest 1 Result...Estate card gained?: Pass\n");
+ }
+ else{
+ printf ("Subtest 1 Result... Estate card gained?: Fail\n");
+ }
+ // Check if the player has the correct number of Buys in hand
+ if(numBuysOriginal == G.numBuys-1){
+ printf ("Subtest 1 Result...Buy+1 Gained?: Pass\n");
+ }
+ else{
+ printf ("Subtest 1 Result...Buy+1 Gained?: Fail\n");
+ }
+
+ /*
+ for(int i=0; i