p10 0.0.0.pre.alpha0 → 0.0.0.pre.alpha1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c21e42aeb72eea1d227d35a4c4bade94847cbfe3
4
- data.tar.gz: f11db1bbfa4a0aa4048feb566ab6af76039e5e15
3
+ metadata.gz: d3cd5f83a7e748e7a3ec78879cbb332976e0769d
4
+ data.tar.gz: a2f8f35aba907b4f5f4d77efad8204ee0d903c8a
5
5
  SHA512:
6
- metadata.gz: 9a64513122129786cd92bddcecbbbe25250bb000b680f13072e151ed11b6454714f96d49c476c2af643e726a956e414c46c9a693db3e6ef56e6b0f875e5e5683
7
- data.tar.gz: b5ee18f0429734c728b587281bbe47f49b6c1b5022a9f22659ca76e101f7af50fa70be809d84c59e4fc02bcc5153c330dbf39f94c78e59ff65c85731f9c90587
6
+ metadata.gz: 62b7eaa330be7a84dccfcd0e553fdde7b7b06614048c1e369997b5210d12f8b7f7c4e9be6a3d82bf1c85908a7bbd37c8cead756d582eece51cd2287f4c2efe19
7
+ data.tar.gz: 70ca6adaf8c7115d15a73981016561de2e57b52570697965b3cb708da18b3ad669e65a521d3ddf9e107876818167b46aa006cb7e3fc6da2b9c7970769b09f7d1
data/bin/p10 ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
data/lib/p10/card.rb ADDED
@@ -0,0 +1,15 @@
1
+ module Phase10
2
+ class Card
3
+ def wild?
4
+ self.class.name.to_sym == :"Phase10::WildCard"
5
+ end
6
+
7
+ def skip?
8
+ self.class.name.to_sym == :"Phase10::SkipCard"
9
+ end
10
+
11
+ def number?
12
+ self.class.name.to_sym == :"Phase10::NumberCard"
13
+ end
14
+ end
15
+ end
data/lib/p10/deck.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'p10/number_card'
2
+ require 'p10/skip_card'
3
+ require 'p10/wild_card'
4
+
5
+ module Phase10
6
+ class Deck < Array
7
+ def initialize
8
+ super ([:red, :blue, :green, :yellow].product((1..12).to_a * 2).map do |color, number|
9
+ NumberCard.new(color, number)
10
+ end.to_a +
11
+
12
+ 8.times.map do
13
+ WildCard.new
14
+ end.to_a +
15
+
16
+ 4.times.map do
17
+ SkipCard.new
18
+ end.to_a).flatten
19
+ end
20
+
21
+ def add(card)
22
+ raise ArgumentError, 'Given argument is not a Card' unless
23
+ card.is_a?(Card)
24
+
25
+ insert((rand * self.count).floor, card)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,61 @@
1
+ require 'p10/card'
2
+
3
+ module Phase10
4
+ class NumberCard < Card
5
+ attr_reader :color, :number
6
+
7
+ def initialize(color, number)
8
+ @color = color if validate_color color
9
+ @number = number if validate_number number
10
+ end
11
+
12
+ def validate_color(color)
13
+ raise ArgumentError, 'Color is invalid' unless
14
+ colors.include? color
15
+
16
+ true
17
+ end
18
+
19
+ def validate_number(number)
20
+ raise ArgumentError, 'Number is invalid' unless
21
+ numbers.include? number
22
+
23
+ true
24
+ end
25
+
26
+ def point_value
27
+ case @number
28
+ when (1..9)
29
+ 5
30
+ when (10..12)
31
+ 10
32
+ end
33
+ end
34
+
35
+ def red?
36
+ @color == :red
37
+ end
38
+
39
+ def blue?
40
+ @color == :blue
41
+ end
42
+
43
+ def green?
44
+ @color == :green
45
+ end
46
+
47
+ def yellow?
48
+ @color == :yellow
49
+ end
50
+
51
+ protected
52
+
53
+ def colors
54
+ [:red, :blue, :green, :yellow]
55
+ end
56
+
57
+ def numbers
58
+ (1..12).to_a
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,9 @@
1
+ require 'p10/card'
2
+
3
+ module Phase10
4
+ class SkipCard < Card
5
+ def point_value
6
+ 15
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ module Phase10
2
+ class Version
3
+ attr_reader :major, :minor, :patch, :pre
4
+
5
+ def initialize(major, minor = 0, patch = 0, pre = nil)
6
+ @major = major
7
+ @minor = minor
8
+ @patch = patch
9
+ @pre = pre
10
+ end
11
+
12
+ def format(format)
13
+ format % [ @major, @minor, @patch, prerelease_string ]
14
+ end
15
+
16
+ def to_s
17
+ format(version_format)
18
+ end
19
+
20
+ protected
21
+
22
+ def version_format
23
+ '%s.%s.%s%s'
24
+ end
25
+
26
+ def prerelease_string
27
+ @pre ? "-#{@pre}" : ''
28
+ end
29
+ end
30
+
31
+ VERSION = Version.new(0, 0, 0, 'alpha1')
32
+ end
@@ -0,0 +1,9 @@
1
+ require 'p10/card'
2
+
3
+ module Phase10
4
+ class WildCard < Card
5
+ def point_value
6
+ 25
7
+ end
8
+ end
9
+ end
data/lib/p10.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'p10/card'
2
+ require 'p10/deck'
3
+ require 'p10/number_card'
4
+ require 'p10/skip_card'
5
+ require 'p10/version'
6
+ require 'p10/wild_card'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: p10
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.pre.alpha0
4
+ version: 0.0.0.pre.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kristofer Rye
@@ -125,10 +125,19 @@ dependencies:
125
125
  description: A simulation/representation of the card game Phase 10, designed for use
126
126
  in large applications or microscopic testing environments.
127
127
  email: kristofer.rye@gmail.com
128
- executables: []
128
+ executables:
129
+ - p10
129
130
  extensions: []
130
131
  extra_rdoc_files: []
131
- files: []
132
+ files:
133
+ - bin/p10
134
+ - lib/p10.rb
135
+ - lib/p10/card.rb
136
+ - lib/p10/deck.rb
137
+ - lib/p10/number_card.rb
138
+ - lib/p10/skip_card.rb
139
+ - lib/p10/version.rb
140
+ - lib/p10/wild_card.rb
132
141
  homepage: https://github.com/rye/p10
133
142
  licenses:
134
143
  - MIT
@@ -149,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
158
  version: 1.3.1
150
159
  requirements: []
151
160
  rubyforge_project:
152
- rubygems_version: 2.4.5.1
161
+ rubygems_version: 2.5.0
153
162
  signing_key:
154
163
  specification_version: 4
155
164
  summary: A simulation/representation of the card game Phase 10.