morchi 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 860064b877116a7531749e0d027673801130ad0c
4
+ data.tar.gz: f1d9e34bbf8647875bde087812eaba58e8fe35cb
5
+ SHA512:
6
+ metadata.gz: 0549816c3590ffbefd075e95c111ec35b4dcbe1a11d28f4f6d81d4e8c797f9a8139038783dbc9bbc8c584fc7af381c7aceaeca85512e2fcc2e1f54b829eb9d6c
7
+ data.tar.gz: aad157f9d3979d52145670f92e023a7a1d52571674a4ecbd601fd442b9ad8d9109498114d784a1c51f43beac7c835ffe5f2fe79951a8f67b1a5a6aaa1b20f8e8
data/lib/morchi.rb ADDED
@@ -0,0 +1,11 @@
1
+ # coding: utf-8
2
+
3
+ # Module morchi.
4
+ module Morchi
5
+ ROOT_PATH = File.expand_path(File.dirname(__FILE__)) + '/morchi/'
6
+
7
+ # Include files.
8
+ %w(disk board version).each do |file|
9
+ require ROOT_PATH + file
10
+ end
11
+ end
@@ -0,0 +1,55 @@
1
+ # coding: utf-8
2
+
3
+ module Morchi
4
+
5
+ # The board class.
6
+ class Board
7
+
8
+ # Property
9
+ attr_reader :size
10
+
11
+ # Initialize.
12
+ def initialize(num)
13
+ @size = num
14
+ @range = 0..(@size - 1)
15
+ clear
16
+ end
17
+
18
+ # Get disk
19
+ def [](row, col)
20
+ return false unless include?(row, col)
21
+ @board[index(row, col)]
22
+ end
23
+
24
+ # Set disk
25
+ def []=(row, col, value)
26
+ fail OutOfRangeError.new unless include?(row, col)
27
+ @board[index(row, col)] = value
28
+ end
29
+
30
+ # Clear.
31
+ def clear
32
+ @board = Array.new(@size ** 2, Morchi::Disk.empty)
33
+ end
34
+
35
+ # Query, is full?
36
+ def full?
37
+ (@size ** 2).times do |index|
38
+ return false if @board[index].empty?
39
+ end
40
+ true
41
+ end
42
+
43
+ private
44
+
45
+ # Is include?
46
+ def include?(row, col)
47
+ @range.include?(row) && @range.include?(col)
48
+ end
49
+
50
+ # Get index.
51
+ def index(row, col)
52
+ (row * @size) + col
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+
3
+ module Morchi
4
+
5
+ # The Disk class
6
+ class Disk
7
+ include(Comparable)
8
+
9
+ # Raw value.
10
+ DISC_RAW = { empty: 0, black: 1, white: 2 }
11
+
12
+ # Property.
13
+ attr_reader :raw
14
+
15
+ # Initialize.
16
+ def initialize(raw)
17
+ @raw = DISC_RAW[raw]
18
+ end
19
+
20
+ # (Comparable) Require implemented.
21
+ def <=>(other)
22
+ raw <=> other.raw
23
+ end
24
+
25
+ #
26
+ def to_s
27
+ DISC_RAW.invert[@raw].to_s
28
+ end
29
+
30
+ %i(empty black white).each do |color|
31
+ instance_variable_set("@#{color}", Disk.new(color))
32
+ class_eval <<-EOL
33
+ def #{color}?
34
+ self == self.class.#{color}
35
+ end
36
+
37
+ def self.#{color}
38
+ instance_variable_get("@#{color}")
39
+ end
40
+ EOL
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+
3
+ module Morchi
4
+
5
+ # Current major release.
6
+ # @return [Interger]
7
+ MAJOR = 0
8
+
9
+ # Current minor release.
10
+ # @return [Integer]
11
+ MINOR = 0
12
+
13
+ # Current patch level.
14
+ # @return [Integer]
15
+ PATCH = 1
16
+
17
+ # Full release version.
18
+ # @return [String]
19
+ VERSION = [MAJOR, MINOR, PATCH].join('.').freeze
20
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: morchi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - bonels
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ description: Simple Gomoku library for not escape without being able to understand.
56
+ email:
57
+ - dev.bonels@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/morchi.rb
63
+ - lib/morchi/board.rb
64
+ - lib/morchi/disk.rb
65
+ - lib/morchi/version.rb
66
+ homepage: https://github.com/morchi/morchi.rb
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 2.0.0
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.5.1
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Simple Gomoku library for not escape without being able to understand.
90
+ test_files: []