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 +7 -0
- data/lib/morchi.rb +11 -0
- data/lib/morchi/board.rb +55 -0
- data/lib/morchi/disk.rb +43 -0
- data/lib/morchi/version.rb +20 -0
- metadata +90 -0
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
data/lib/morchi/board.rb
ADDED
@@ -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
|
data/lib/morchi/disk.rb
ADDED
@@ -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: []
|