chess_engine 0.0.2 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/chess_engine +4 -0
- metadata +5 -288
- data/Gemfile +0 -5
- data/Gemfile.lock +0 -21
- data/README.md +0 -26
- data/chess_engine-0.0.1.gem +0 -0
- data/chess_engine.gemspec +0 -14
- data/lib/chess_engine/board.rb +0 -95
- data/lib/chess_engine/cli.rb +0 -105
- data/lib/chess_engine/game.rb +0 -148
- data/lib/chess_engine/input.rb +0 -19
- data/lib/chess_engine/move.rb +0 -35
- data/lib/chess_engine/piece.rb +0 -97
- data/lib/chess_engine/validator.rb +0 -87
- data/vendor/bundle/bin/coderay +0 -27
- data/vendor/bundle/bin/pry +0 -27
- data/vendor/bundle/cache/coderay-1.1.2.gem +0 -0
- data/vendor/bundle/cache/colorize-0.8.1.gem +0 -0
- data/vendor/bundle/cache/method_source-0.9.2.gem +0 -0
- data/vendor/bundle/cache/pry-0.12.2.gem +0 -0
- data/vendor/bundle/cache/rb-readline-0.5.5.gem +0 -0
- data/vendor/bundle/gems/coderay-1.1.2/MIT-LICENSE +0 -22
- data/vendor/bundle/gems/coderay-1.1.2/README_INDEX.rdoc +0 -123
- data/vendor/bundle/gems/coderay-1.1.2/bin/coderay +0 -215
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/duo.rb +0 -81
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/_map.rb +0 -17
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/comment_filter.rb +0 -25
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/count.rb +0 -39
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/debug.rb +0 -49
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/debug_lint.rb +0 -63
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/div.rb +0 -23
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/encoder.rb +0 -190
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/filter.rb +0 -58
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/css.rb +0 -65
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/numbering.rb +0 -108
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html/output.rb +0 -166
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/html.rb +0 -333
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/json.rb +0 -83
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/lines_of_code.rb +0 -45
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/lint.rb +0 -59
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/null.rb +0 -18
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/page.rb +0 -24
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/span.rb +0 -23
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/statistic.rb +0 -95
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/terminal.rb +0 -195
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/text.rb +0 -46
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/token_kind_filter.rb +0 -111
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/xml.rb +0 -72
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders/yaml.rb +0 -50
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/encoders.rb +0 -18
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/for_redcloth.rb +0 -95
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/file_type.rb +0 -151
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/plugin.rb +0 -55
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/plugin_host.rb +0 -221
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/helpers/word_list.rb +0 -72
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/_map.rb +0 -24
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/c.rb +0 -189
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/clojure.rb +0 -217
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/cpp.rb +0 -217
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/css.rb +0 -196
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/debug.rb +0 -75
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/delphi.rb +0 -144
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/diff.rb +0 -221
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/erb.rb +0 -81
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/go.rb +0 -208
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/groovy.rb +0 -268
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/haml.rb +0 -168
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/html.rb +0 -275
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java/builtin_types.rb +0 -421
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java.rb +0 -174
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/java_script.rb +0 -237
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/json.rb +0 -98
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/lua.rb +0 -280
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/php.rb +0 -527
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/python.rb +0 -287
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/raydebug.rb +0 -75
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby/patterns.rb +0 -178
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby/string_state.rb +0 -79
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/ruby.rb +0 -477
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/sass.rb +0 -232
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/scanner.rb +0 -337
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/sql.rb +0 -169
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/taskpaper.rb +0 -36
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/text.rb +0 -26
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/xml.rb +0 -17
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners/yaml.rb +0 -140
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/scanners.rb +0 -27
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/_map.rb +0 -7
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/alpha.rb +0 -153
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles/style.rb +0 -18
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/styles.rb +0 -15
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/token_kinds.rb +0 -85
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/tokens.rb +0 -161
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/tokens_proxy.rb +0 -55
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay/version.rb +0 -3
- data/vendor/bundle/gems/coderay-1.1.2/lib/coderay.rb +0 -284
- data/vendor/bundle/gems/colorize-0.8.1/CHANGELOG +0 -65
- data/vendor/bundle/gems/colorize-0.8.1/LICENSE +0 -339
- data/vendor/bundle/gems/colorize-0.8.1/README.md +0 -105
- data/vendor/bundle/gems/colorize-0.8.1/Rakefile +0 -13
- data/vendor/bundle/gems/colorize-0.8.1/colorize.gemspec +0 -36
- data/vendor/bundle/gems/colorize-0.8.1/lib/colorize/class_methods.rb +0 -120
- data/vendor/bundle/gems/colorize-0.8.1/lib/colorize/instance_methods.rb +0 -132
- data/vendor/bundle/gems/colorize-0.8.1/lib/colorize.rb +0 -12
- data/vendor/bundle/gems/colorize-0.8.1/lib/colorized_string.rb +0 -19
- data/vendor/bundle/gems/colorize-0.8.1/test/test_colorize.rb +0 -164
- data/vendor/bundle/gems/method_source-0.9.2/Gemfile +0 -2
- data/vendor/bundle/gems/method_source-0.9.2/LICENSE +0 -25
- data/vendor/bundle/gems/method_source-0.9.2/README.markdown +0 -91
- data/vendor/bundle/gems/method_source-0.9.2/Rakefile +0 -81
- data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/code_helpers.rb +0 -154
- data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/source_location.rb +0 -138
- data/vendor/bundle/gems/method_source-0.9.2/lib/method_source/version.rb +0 -3
- data/vendor/bundle/gems/method_source-0.9.2/lib/method_source.rb +0 -141
- data/vendor/bundle/gems/method_source-0.9.2/method_source.gemspec +0 -35
- data/vendor/bundle/gems/method_source-0.9.2/spec/method_source/code_helpers_spec.rb +0 -43
- data/vendor/bundle/gems/method_source-0.9.2/spec/method_source_spec.rb +0 -143
- data/vendor/bundle/gems/method_source-0.9.2/spec/spec_helper.rb +0 -101
- data/vendor/bundle/gems/pry-0.12.2/CHANGELOG.md +0 -953
- data/vendor/bundle/gems/pry-0.12.2/LICENSE +0 -25
- data/vendor/bundle/gems/pry-0.12.2/README.md +0 -390
- data/vendor/bundle/gems/pry-0.12.2/bin/pry +0 -8
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/basic_object.rb +0 -6
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/cli.rb +0 -218
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/code_file.rb +0 -110
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/code_range.rb +0 -71
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code/loc.rb +0 -98
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code.rb +0 -353
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/code_object.rb +0 -195
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/color_printer.rb +0 -65
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/command.rb +0 -723
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/command_set.rb +0 -415
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/amend_line.rb +0 -98
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/bang.rb +0 -20
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/bang_pry.rb +0 -17
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/abstract_formatter.rb +0 -27
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/exception_formatter.rb +0 -79
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/file_formatter.rb +0 -71
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat/input_expression_formatter.rb +0 -43
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cat.rb +0 -63
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/cd.rb +0 -41
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/change_inspector.rb +0 -27
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/change_prompt.rb +0 -46
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/clear_screen.rb +0 -14
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/code_collector.rb +0 -167
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/disable_pry.rb +0 -27
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/disabled_commands.rb +0 -2
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/easter_eggs.rb +0 -112
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit/exception_patcher.rb +0 -25
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit/file_and_line_locator.rb +0 -36
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/edit.rb +0 -200
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit.rb +0 -43
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit_all.rb +0 -29
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/exit_program.rb +0 -23
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/find_method.rb +0 -191
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/fix_indent.rb +0 -19
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_cd.rb +0 -26
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_install.rb +0 -32
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_list.rb +0 -33
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_open.rb +0 -29
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_readme.rb +0 -25
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_search.rb +0 -40
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gem_stats.rb +0 -83
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/gist.rb +0 -102
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/help.rb +0 -164
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/hist.rb +0 -181
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/import_set.rb +0 -23
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/install_command.rb +0 -54
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/jump_to.rb +0 -29
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/list_inspectors.rb +0 -35
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/constants.rb +0 -58
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/formatter.rb +0 -51
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/globals.rb +0 -46
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/grep.rb +0 -19
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/instance_vars.rb +0 -38
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/interrogatable.rb +0 -18
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/jruby_hacks.rb +0 -49
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/local_names.rb +0 -33
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/local_vars.rb +0 -37
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/ls_entity.rb +0 -69
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/methods.rb +0 -54
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/methods_helper.rb +0 -46
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls/self_methods.rb +0 -33
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ls.rb +0 -113
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/nesting.rb +0 -25
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/play.rb +0 -102
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/pry_backtrace.rb +0 -25
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/pry_version.rb +0 -17
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/raise_up.rb +0 -33
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/reload_code.rb +0 -62
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/reset.rb +0 -18
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/ri.rb +0 -65
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/save_file.rb +0 -61
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/shell_command.rb +0 -75
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/shell_mode.rb +0 -25
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_doc.rb +0 -81
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_info.rb +0 -216
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_input.rb +0 -17
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/show_source.rb +0 -53
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/stat.rb +0 -40
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/switch_to.rb +0 -23
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/toggle_color.rb +0 -24
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/watch_expression/expression.rb +0 -38
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/watch_expression.rb +0 -107
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/whereami.rb +0 -197
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands/wtf.rb +0 -70
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/commands.rb +0 -6
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/behavior.rb +0 -255
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/convenience.rb +0 -28
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/default.rb +0 -159
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config/memoization.rb +0 -48
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/config.rb +0 -35
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/core_extensions.rb +0 -142
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/editor.rb +0 -128
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/exceptions.rb +0 -76
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/forwardable.rb +0 -23
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/base_helpers.rb +0 -200
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/command_helpers.rb +0 -157
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/documentation_helpers.rb +0 -76
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/options_helpers.rb +0 -27
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/platform.rb +0 -58
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/table.rb +0 -114
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers/text.rb +0 -115
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/helpers.rb +0 -6
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/history.rb +0 -161
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/hooks.rb +0 -171
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/indent.rb +0 -408
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/input_completer.rb +0 -265
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/input_lock.rb +0 -130
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/inspector.rb +0 -27
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/last_exception.rb +0 -61
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/disowned.rb +0 -55
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/patcher.rb +0 -122
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/method/weird_method_locator.rb +0 -198
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/method.rb +0 -552
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/object_path.rb +0 -83
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/output.rb +0 -50
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/pager.rb +0 -250
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/platform.rb +0 -91
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/plugins.rb +0 -122
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/prompt.rb +0 -145
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/pry_class.rb +0 -425
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/pry_instance.rb +0 -699
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/repl.rb +0 -261
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/repl_file_loader.rb +0 -73
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/ring.rb +0 -84
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/rubygem.rb +0 -84
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/LICENSE +0 -20
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/commands.rb +0 -195
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop/option.rb +0 -206
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/slop.rb +0 -661
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/terminal.rb +0 -91
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/evalable.rb +0 -15
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/mockable.rb +0 -14
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/pry_tester.rb +0 -73
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/utility.rb +0 -26
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable/variables.rb +0 -46
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/testable.rb +0 -70
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/version.rb +0 -3
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/wrapped_module/candidate.rb +0 -131
- data/vendor/bundle/gems/pry-0.12.2/lib/pry/wrapped_module.rb +0 -378
- data/vendor/bundle/gems/pry-0.12.2/lib/pry.rb +0 -132
- data/vendor/bundle/gems/rb-readline-0.5.5/CHANGES +0 -94
- data/vendor/bundle/gems/rb-readline-0.5.5/LICENSE +0 -25
- data/vendor/bundle/gems/rb-readline-0.5.5/README.md +0 -81
- data/vendor/bundle/gems/rb-readline-0.5.5/Rakefile +0 -25
- data/vendor/bundle/gems/rb-readline-0.5.5/bench/_rl_adjust_point.rb +0 -26
- data/vendor/bundle/gems/rb-readline-0.5.5/examples/example_readline.rb +0 -8
- data/vendor/bundle/gems/rb-readline-0.5.5/examples/example_readline_with_completion.rb +0 -18
- data/vendor/bundle/gems/rb-readline-0.5.5/examples/tinyirb.rb +0 -11
- data/vendor/bundle/gems/rb-readline-0.5.5/lib/rb-readline.rb +0 -18
- data/vendor/bundle/gems/rb-readline-0.5.5/lib/rbreadline/version.rb +0 -3
- data/vendor/bundle/gems/rb-readline-0.5.5/lib/rbreadline.rb +0 -8920
- data/vendor/bundle/gems/rb-readline-0.5.5/lib/readline.rb +0 -539
- data/vendor/bundle/gems/rb-readline-0.5.5/rb-readline.gemspec +0 -51
- data/vendor/bundle/gems/rb-readline-0.5.5/setup.rb +0 -1585
- data/vendor/bundle/gems/rb-readline-0.5.5/test/support/filesystem_completion_helper.rb +0 -53
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_completion.rb +0 -100
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_filename_completion_proc.rb +0 -88
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_history.rb +0 -29
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_rbreadline.rb +0 -23
- data/vendor/bundle/gems/rb-readline-0.5.5/test/test_readline.rb +0 -221
- data/vendor/bundle/specifications/coderay-1.1.2.gemspec +0 -26
- data/vendor/bundle/specifications/colorize-0.8.1.gemspec +0 -38
- data/vendor/bundle/specifications/method_source-0.9.2.gemspec +0 -35
- data/vendor/bundle/specifications/pry-0.12.2.gemspec +0 -38
- data/vendor/bundle/specifications/rb-readline-0.5.5.gemspec +0 -39
data/lib/chess_engine/cli.rb
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
require_relative "game"
|
2
|
-
require_relative "input"
|
3
|
-
require "yaml"
|
4
|
-
|
5
|
-
|
6
|
-
module ChessEngine
|
7
|
-
class NoGamesError < StandardError; end
|
8
|
-
|
9
|
-
class CLI
|
10
|
-
include Input
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
begin
|
14
|
-
mode = get_input("\nChoose the game mode:\n1. New game\n2. Continue\nEnter your choice (1 or 2): ", /^[12]$/)
|
15
|
-
@game = mode == "1" ? Game.new : choose_game
|
16
|
-
rescue NoGamesError => e
|
17
|
-
puts "#{e.message}. Try again"
|
18
|
-
retry
|
19
|
-
end
|
20
|
-
play
|
21
|
-
save if save?
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def play
|
27
|
-
until @game.over?
|
28
|
-
puts "\n#{@game.filename}\n#{@game.draw}"
|
29
|
-
declare_check if @game.check?
|
30
|
-
begin
|
31
|
-
promotion if @game.needs_promotion?
|
32
|
-
print "#{@game.current_color.to_s.capitalize}'s move (e. g. \"e2e4\" or \"exit\" or \"000\"/\"00\" (for castling)): "
|
33
|
-
move = gets.chomp.gsub(/\s+/, " ")
|
34
|
-
case move
|
35
|
-
when /^[oOоО0]{2}$/ #matches cyrillic letters
|
36
|
-
@game.castling(:short)
|
37
|
-
when /^[oOоО0]{3}$/
|
38
|
-
@game.castling(:long)
|
39
|
-
when /^[a-h][1-8][a-h][1-8]$/i
|
40
|
-
@game.move(move)
|
41
|
-
when /^exit$/i
|
42
|
-
return
|
43
|
-
else
|
44
|
-
raise InvalidMove, "Incorrect input"
|
45
|
-
end
|
46
|
-
rescue InvalidMove => e
|
47
|
-
puts "#{e.message}. Try again"
|
48
|
-
retry
|
49
|
-
end
|
50
|
-
end
|
51
|
-
game_over
|
52
|
-
end
|
53
|
-
|
54
|
-
def promotion
|
55
|
-
pieces = ["Queen", "Rook", "Knight", "Elephant"]
|
56
|
-
choice = get_input(
|
57
|
-
"Pawn promotion. Choose the new piece:\n1. Queen\n2. Rook\n3. Knight\n4. Elephant",
|
58
|
-
/^[1-4]$/, "Input must be a single digit"
|
59
|
-
)
|
60
|
-
@game.promotion(pieces[choice - 1])
|
61
|
-
end
|
62
|
-
|
63
|
-
def declare_check
|
64
|
-
puts "#{@game.current_color.to_s.capitalize} player is given a check"
|
65
|
-
end
|
66
|
-
|
67
|
-
def declare_checkmate
|
68
|
-
puts "#{@game.current_color.to_s.capitalize} player got mated!"
|
69
|
-
end
|
70
|
-
|
71
|
-
def game_over
|
72
|
-
puts @game.draw
|
73
|
-
if @game.check?
|
74
|
-
declare_checkmate
|
75
|
-
else
|
76
|
-
puts "Stalemate!"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def choose_game
|
81
|
-
saved_names = Dir["./saved_games/*.yaml"].map { |filename| filename[/\.\/saved_games\/(.+)\.yaml/, 1] }
|
82
|
-
raise NoGamesError, "You have no saved games" if saved_names.empty?
|
83
|
-
puts "\nSaved games (#{saved_names.size}):"
|
84
|
-
saved_names.each { |name| puts name }
|
85
|
-
filename = get_input("Enter the name of the game that you want to continue: ",
|
86
|
-
nil, "Such game doesn't exist, try again") { |input| saved_names.include?(input) }
|
87
|
-
return YAML::load(File.read("./saved_games/#{filename}.yaml"))
|
88
|
-
end
|
89
|
-
|
90
|
-
def save?
|
91
|
-
return false if @game.filename && File.exists?("./saved_games/#{@game.filename}.yaml") &&
|
92
|
-
YAML::dump(@game) == File.read("./saved_games/#{@game.filename}.yaml")
|
93
|
-
choice = get_input("Do you want to save the game? (y/n): ", /^[yn]$/i)
|
94
|
-
choice == "y" ? true : false
|
95
|
-
end
|
96
|
-
|
97
|
-
def save
|
98
|
-
@game.filename ||= get_input("Enter the game name: ", /[^\/\>\<\|\:\&]+/)
|
99
|
-
game = YAML::dump(@game)
|
100
|
-
File.open("./saved_games/#{@game.filename}.yaml", "w") { |file| file.write(game) }
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
ChessEngine::CLI.new
|
data/lib/chess_engine/game.rb
DELETED
@@ -1,148 +0,0 @@
|
|
1
|
-
require_relative "board"
|
2
|
-
require_relative "validator"
|
3
|
-
require_relative "move"
|
4
|
-
|
5
|
-
module ChessEngine
|
6
|
-
class InvalidMove < StandardError; end
|
7
|
-
|
8
|
-
class Game
|
9
|
-
attr_accessor :filename
|
10
|
-
attr_reader :current_color
|
11
|
-
include MoveValidator
|
12
|
-
|
13
|
-
def initialize
|
14
|
-
@board = Board.new
|
15
|
-
@board.set_default
|
16
|
-
@current_color = :white
|
17
|
-
@last_piece = nil
|
18
|
-
@filename = nil
|
19
|
-
@promotion_coord = false
|
20
|
-
end
|
21
|
-
|
22
|
-
def move(string)
|
23
|
-
from, to = Game.string_to_move(string)
|
24
|
-
piece = @board.at(from)
|
25
|
-
raise InvalidMove, "Game is over" if over?
|
26
|
-
raise InvalidMove, "#{@current_color} player should execute pawn promotion first" if needs_promotion?
|
27
|
-
raise InvalidMove, "Empty square is chosen" if piece.nil?
|
28
|
-
raise InvalidMove, "This is not your piece" unless piece.color == @current_color
|
29
|
-
raise InvalidMove, "Invalid move" unless valid_moves(from).include?(to)
|
30
|
-
move = Move.new(@board, from, to)
|
31
|
-
move.commit
|
32
|
-
if king_attacked?
|
33
|
-
move.rollback
|
34
|
-
raise InvalidMove, "Fatal move"
|
35
|
-
end
|
36
|
-
|
37
|
-
@last_piece = piece
|
38
|
-
piece.moves_count += 1
|
39
|
-
@promotion_coord = to and return if piece.pawn? && [7, 0].include?(to[1])
|
40
|
-
next_player
|
41
|
-
end
|
42
|
-
|
43
|
-
def [](str)
|
44
|
-
letters = ("a".."h").to_a
|
45
|
-
return nil unless /[a-h][1-8]/.match?(str)
|
46
|
-
@board.at([letters.find_index(str[0]), str[1].to_i - 1])
|
47
|
-
end
|
48
|
-
|
49
|
-
def draw
|
50
|
-
@board.to_s
|
51
|
-
end
|
52
|
-
|
53
|
-
def promotion(class_name)
|
54
|
-
unless ["rook", "knight", "elephant", "queen"].include?(class_name.downcase)
|
55
|
-
raise InvalidMove, "Invalid promotion"
|
56
|
-
end
|
57
|
-
@board.set_at(@promotion_coord, Module.const_get("ChessEngine::#{class_name.capitalize}").new(@current_color))
|
58
|
-
@promotion_coord = nil
|
59
|
-
next_player
|
60
|
-
end
|
61
|
-
|
62
|
-
def castling(length)
|
63
|
-
row = @current_color == :white ? 0 : 7
|
64
|
-
king = @board.at([4, row])
|
65
|
-
if length == :short
|
66
|
-
rook = @board.at([7, row])
|
67
|
-
line = [5, 6]
|
68
|
-
moves = [Move.new(@board, [4, row], [6, row]),
|
69
|
-
Move.new(@board, [7, row], [5, row])]
|
70
|
-
else
|
71
|
-
rook = @board.at([0, row])
|
72
|
-
line = [1, 2, 3]
|
73
|
-
moves = [Move.new(@board, [4, row], [2, row]),
|
74
|
-
Move.new(@board, [0, row], [3, row])]
|
75
|
-
end
|
76
|
-
raise InvalidMove, "Invalid castling" unless
|
77
|
-
king && rook && king.moves_count == 0 && rook.moves_count == 0 &&
|
78
|
-
line.all? { |x| @board.at([x, row]).nil? }
|
79
|
-
|
80
|
-
moves.each { |move| move.commit }
|
81
|
-
if king_attacked?
|
82
|
-
moves.each { |move| move.rollback }
|
83
|
-
raise InvalidMove, "Fatal move"
|
84
|
-
end
|
85
|
-
@last_piece = nil
|
86
|
-
next_player
|
87
|
-
end
|
88
|
-
|
89
|
-
def over?
|
90
|
-
@board.piece_coordinates(@current_color).all? do |coord|
|
91
|
-
safe_moves(coord).empty?
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def needs_promotion?
|
96
|
-
!!@promotion_coord
|
97
|
-
end
|
98
|
-
|
99
|
-
def check?
|
100
|
-
king_attacked?
|
101
|
-
end
|
102
|
-
|
103
|
-
private
|
104
|
-
|
105
|
-
def king_attacked?
|
106
|
-
king_coords = @board.king_coords(@current_color)
|
107
|
-
[[1, 1], [-1, 1], [-1, -1], [1, -1]].each do |move|
|
108
|
-
next_coords = relative_coords(king_coords, move)
|
109
|
-
piece = @board.at(next_coords)
|
110
|
-
return true if piece && piece.color != @current_color && (piece.pawn? || piece.king?)
|
111
|
-
edge_coords = repeated_move(king_coords, move).last
|
112
|
-
piece = edge_coords.nil? ? nil : @board.at(edge_coords)
|
113
|
-
return true if piece && piece.beats_diagonally?
|
114
|
-
end
|
115
|
-
[[1, 0], [-1, 0], [0, 1], [0, -1]].each do |move|
|
116
|
-
next_coords = relative_coords(king_coords, move)
|
117
|
-
piece = @board.at(next_coords)
|
118
|
-
return true if piece && piece.king?
|
119
|
-
edge_coords = repeated_move(king_coords, move).last
|
120
|
-
piece = edge_coords.nil? ? nil : @board.at(edge_coords)
|
121
|
-
return true if !piece.nil? && piece.beats_straight?
|
122
|
-
end
|
123
|
-
[[1, 2], [2, 1], [1, -2], [-2, 1],
|
124
|
-
[-1, 2], [2, -1], [-1, -2], [-2, -1]].each do |move|
|
125
|
-
coords = relative_coords(king_coords, move)
|
126
|
-
piece = valid_move?(coords) ? @board.at(coords) : nil
|
127
|
-
return true if !piece.nil? && piece.knight?
|
128
|
-
end
|
129
|
-
false
|
130
|
-
end
|
131
|
-
|
132
|
-
def Game.string_to_move(string)
|
133
|
-
string = string.gsub(/\s+/, "").downcase
|
134
|
-
raise InvalidMove, "Input must look like \"e2 e4\" or \"a6b5\"" unless /^[a-h][1-8][a-h][1-8]$/.match?(string)
|
135
|
-
letters = ("a".."h").to_a
|
136
|
-
[[letters.find_index(string[0]), string[1].to_i - 1],
|
137
|
-
[letters.find_index(string[2]), string[3].to_i - 1]]
|
138
|
-
end
|
139
|
-
|
140
|
-
def opposite_color
|
141
|
-
@current_color == :white ? :black : :white
|
142
|
-
end
|
143
|
-
|
144
|
-
def next_player
|
145
|
-
@current_color = opposite_color
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
data/lib/chess_engine/input.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Input
|
2
|
-
class Incorrect < StandardError; end
|
3
|
-
|
4
|
-
def get_input(input_message, regex = nil, err_message = "Incorrect input, try again")
|
5
|
-
begin
|
6
|
-
print input_message
|
7
|
-
input = gets.chomp
|
8
|
-
if block_given?
|
9
|
-
raise Input::Incorrect unless yield(input)
|
10
|
-
else
|
11
|
-
raise Input::Incorrect unless regex.match?(input)
|
12
|
-
end
|
13
|
-
rescue
|
14
|
-
puts err_message
|
15
|
-
retry
|
16
|
-
end
|
17
|
-
input
|
18
|
-
end
|
19
|
-
end
|
data/lib/chess_engine/move.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
module ChessEngine
|
2
|
-
class Move
|
3
|
-
def initialize(board, from, to)
|
4
|
-
@board = board
|
5
|
-
@from = from
|
6
|
-
@to = to
|
7
|
-
@original_squares = []
|
8
|
-
@original_squares << {coord: from, piece: board.at(from)}
|
9
|
-
@original_squares << {coord: to, piece: board.at(to)}
|
10
|
-
if en_passant?
|
11
|
-
@en_passant_coord = [to[0], from[1]]
|
12
|
-
@original_squares << {coord: @en_passant_coord, piece: board.at(@en_passant_coord)}
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def commit
|
17
|
-
if en_passant?
|
18
|
-
@board.set_at(@en_passant_coord, nil)
|
19
|
-
end
|
20
|
-
@board.move_piece(@from, @to)
|
21
|
-
end
|
22
|
-
|
23
|
-
def rollback
|
24
|
-
@original_squares.each do |square|
|
25
|
-
@board.set_at(square[:coord], square[:piece])
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def en_passant?
|
32
|
-
@board.at(@from).pawn? && @from[0] != @to[0] && @board.at(@to).nil?
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
data/lib/chess_engine/piece.rb
DELETED
@@ -1,97 +0,0 @@
|
|
1
|
-
module ChessEngine
|
2
|
-
class Piece
|
3
|
-
attr_reader :symbol, :color
|
4
|
-
attr_accessor :moves_count
|
5
|
-
|
6
|
-
def initialize(color)
|
7
|
-
@color = color
|
8
|
-
@moves_count = 0
|
9
|
-
end
|
10
|
-
|
11
|
-
def inspect
|
12
|
-
"#{self.class}:#{@color}"
|
13
|
-
end
|
14
|
-
|
15
|
-
def beats_diagonally?
|
16
|
-
elephant? || queen?
|
17
|
-
end
|
18
|
-
|
19
|
-
def beats_straight?
|
20
|
-
rook? || queen?
|
21
|
-
end
|
22
|
-
|
23
|
-
["knight", "king", "pawn", "rook", "queen", "elephant"].each do |piece|
|
24
|
-
define_method(:"#{piece}?") do
|
25
|
-
self.class.to_s == "ChessEngine::#{piece.capitalize}"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class Elephant < Piece
|
31
|
-
def initialize(color)
|
32
|
-
super
|
33
|
-
@symbol = (@color == :black) ? "\u25B2" : "\u25B3"
|
34
|
-
end
|
35
|
-
|
36
|
-
def moves
|
37
|
-
[[1, 1], [1, -1], [-1, 1], [-1, -1]]
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
class King < Piece
|
42
|
-
def initialize(color)
|
43
|
-
super
|
44
|
-
@symbol = (@color == :black) ? "\u265A" : "\u2654"
|
45
|
-
end
|
46
|
-
|
47
|
-
def moves
|
48
|
-
[[0, 1], [0, -1], [1, 0], [-1, 0],
|
49
|
-
[1, 1], [1, -1], [-1, 1], [-1, -1]]
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
class Knight < Piece
|
54
|
-
def initialize(color)
|
55
|
-
super
|
56
|
-
@symbol = (@color == :black) ? "\u265E" : "\u2658"
|
57
|
-
end
|
58
|
-
|
59
|
-
def moves
|
60
|
-
[[1, 2], [2, 1], [1, -2], [-2, 1],
|
61
|
-
[-1, 2], [2, -1], [-1, -2], [-2, -1]]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
class Pawn < Piece
|
66
|
-
attr_reader :direction
|
67
|
-
|
68
|
-
def initialize(color)
|
69
|
-
super
|
70
|
-
@symbol = (@color == :black) ? "\u265F" : "\u2659"
|
71
|
-
@direction = (@color == :white) ? 1 : -1
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
class Queen < Piece
|
76
|
-
def initialize(color)
|
77
|
-
super
|
78
|
-
@symbol = (@color == :black) ? "\u265B" : "\u2655"
|
79
|
-
end
|
80
|
-
|
81
|
-
def moves
|
82
|
-
[[0, 1], [0, -1], [1, 0], [-1, 0],
|
83
|
-
[1, 1], [1, -1], [-1, 1], [-1, -1]]
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
class Rook < Piece
|
88
|
-
def initialize(color)
|
89
|
-
super
|
90
|
-
@symbol = (@color == :black) ? "\u265C" : "\u2656"
|
91
|
-
end
|
92
|
-
|
93
|
-
def moves
|
94
|
-
[[1, 0], [0, 1], [-1, 0], [0, -1]]
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
@@ -1,87 +0,0 @@
|
|
1
|
-
module ChessEngine
|
2
|
-
module MoveValidator
|
3
|
-
def safe_moves(from)
|
4
|
-
valid_moves(from).reject { |move| fatal_move?(from, move) }
|
5
|
-
end
|
6
|
-
|
7
|
-
def valid_moves(from)
|
8
|
-
piece = @board.at(from)
|
9
|
-
if piece.king? || piece.knight?
|
10
|
-
piece.moves.map do |move|
|
11
|
-
to = relative_coords(from, move)
|
12
|
-
to if valid_move?(to)
|
13
|
-
end.compact
|
14
|
-
elsif piece.pawn?
|
15
|
-
pawn_valid_moves(from)
|
16
|
-
else
|
17
|
-
valid_moves_recursive(from)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def valid_moves_recursive(from)
|
22
|
-
piece = @board.at(from)
|
23
|
-
piece.moves.inject([]) do |valid_moves, move|
|
24
|
-
valid_moves.push(*repeated_move(from, move))
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def repeated_move(from, move, valid_moves = [])
|
29
|
-
coordinates = relative_coords(from, move)
|
30
|
-
return valid_moves unless valid_move?(coordinates)
|
31
|
-
return valid_moves << coordinates unless @board.at(coordinates).nil?
|
32
|
-
repeated_move(coordinates, move, valid_moves << coordinates)
|
33
|
-
end
|
34
|
-
|
35
|
-
def relative_coords(from, move)
|
36
|
-
[from[0] + move[0], from[1] + move[1]]
|
37
|
-
end
|
38
|
-
|
39
|
-
def valid_move?(coordinates)
|
40
|
-
if @board.exists_at?(coordinates)
|
41
|
-
piece = @board.at(coordinates)
|
42
|
-
return (piece.nil? || piece.color != @current_color)
|
43
|
-
end
|
44
|
-
return false
|
45
|
-
end
|
46
|
-
|
47
|
-
def fatal_move?(from, to)
|
48
|
-
is_fatal = false
|
49
|
-
move = Move.new(@board, from, to)
|
50
|
-
move.commit
|
51
|
-
is_fatal = true if king_attacked?
|
52
|
-
move.rollback
|
53
|
-
is_fatal
|
54
|
-
end
|
55
|
-
|
56
|
-
def pawn_valid_moves(from)
|
57
|
-
pawn = @board.at(from)
|
58
|
-
direction = pawn.direction
|
59
|
-
moves = []
|
60
|
-
next_coords = relative_coords(from, [0, direction])
|
61
|
-
jump_coords = relative_coords(from, [0, direction * 2])
|
62
|
-
take_coords = [relative_coords(from, [1, direction]),
|
63
|
-
relative_coords(from, [-1, direction])]
|
64
|
-
if @board.exists_at?(next_coords) && @board.at(next_coords).nil?
|
65
|
-
moves << next_coords
|
66
|
-
moves << jump_coords unless pawn.moves_count > 0 || @board.at(jump_coords)
|
67
|
-
end
|
68
|
-
take_coords.each do |coords|
|
69
|
-
moves << coords if @board.at(coords) && @board.at(coords).color != pawn.color
|
70
|
-
end
|
71
|
-
en_passant_coords(from) ? moves << en_passant_coords(from) : moves
|
72
|
-
end
|
73
|
-
|
74
|
-
def en_passant_coords(from)
|
75
|
-
pawn = @board.at(from)
|
76
|
-
[1, -1].each do |x|
|
77
|
-
next_coords = [from[0] + x, from[1]]
|
78
|
-
next_piece = @board.at(next_coords)
|
79
|
-
if next_piece.class == Pawn && next_piece == @last_piece &&
|
80
|
-
next_piece.moves_count == 1 && from[1].between?(3, 4)
|
81
|
-
return [from[0] + x, from[1] + pawn.direction]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
nil
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|