jeu_de_cartes 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45592db6d4fb99c65b36321e83d5ade0831e533e
4
- data.tar.gz: eddfa90f3f26fac06b714d37d16c35da80380dff
3
+ metadata.gz: 1f996e82f773a9e24f471a8509f1f4d407d77575
4
+ data.tar.gz: 3465c553235ac2398c68432724630951f2b35f9b
5
5
  SHA512:
6
- metadata.gz: 6d134b746750f14e9a541b65cab3762153f0029edebff1deade6820caf8c2a7771edc84f9efc2df8564b3bd1b8be8118b3f1efceb66b43550326f0cbff4bd447
7
- data.tar.gz: 1c8ed1d23491b0b1dfc4108c451582553a5aedbd0559ef07bb50d210432b4699572af6248f522905cae5de92cb1b6d1f9cc9d4c264c83189b618989ed72e08fd
6
+ metadata.gz: 98292bd8f7aa46d73ab351b95fb0cc3580af4ed4f0ab2c63bfb7158bec75c893af1b66e293d1bd485372bf68f5d6db21883fd194075e0002b64ffbca3728bd72
7
+ data.tar.gz: 831d7fa8d3152183448ff0bd6b3bcb972bbe446eb6f9a319c22e9c707723c694e256051aa1d4fc3adae6acb5e8b1c06f0ba2258c5561dabf2a3288c42e5330f4
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
2
  require 'rake/testtask'
3
3
 
4
+ task default: :test
5
+
4
6
  Rake::TestTask.new do |t|
5
7
  t.libs << 'test'
6
8
  t.pattern = "test/*_test.rb"
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.3"
23
23
  spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "rubystats"
24
25
  end
data/lib/jeu_de_cartes.rb CHANGED
@@ -1,3 +1,4 @@
1
1
 
2
2
  require 'jeu_de_cartes/card'
3
3
  require 'jeu_de_cartes/deck'
4
+ require 'rubystats'
@@ -1,50 +1,52 @@
1
1
  # encoding: UTF-8
2
2
 
3
- class Card
4
- include Comparable
5
-
6
- attr_reader :rank, :suit
7
-
8
- SUIT_SYMBOL = { club: '♣',
9
- diamond: '',
10
- heart: '',
11
- spade: '' }
12
- SUITS = %w(club diamond heart spade)
13
- RANKS = [*2..10, "Jack", "Queen", "King", "Ace"]
14
-
15
- def initialize(suit, rank)
16
- @suit = suit
17
- @rank = rank
18
- end
3
+ module JeuDeCartes
4
+ class Card
5
+ include Comparable
6
+
7
+ attr_reader :rank, :suit
8
+
9
+ SUIT_SYMBOL = { club: '',
10
+ diamond: '',
11
+ heart: '',
12
+ spade: '♠' }
13
+ SUITS = %w(club diamond heart spade)
14
+ RANKS = [*2..10, "Jack", "Queen", "King", "Ace"]
15
+
16
+ def initialize(suit, rank)
17
+ @suit = suit
18
+ @rank = rank
19
+ end
19
20
 
20
- def value
21
- case @rank
22
- when 'Ace'
23
- 14
24
- when 'King'
25
- 13
26
- when 'Queen'
27
- 12
28
- when 'Jack'
29
- 11
30
- else
31
- @rank
21
+ def value
22
+ case @rank
23
+ when 'Ace'
24
+ 14
25
+ when 'King'
26
+ 13
27
+ when 'Queen'
28
+ 12
29
+ when 'Jack'
30
+ 11
31
+ else
32
+ @rank
33
+ end
32
34
  end
33
- end
34
35
 
35
- def <=> other
36
- value <=> other.value
37
- end
36
+ def <=> other
37
+ value <=> other.value
38
+ end
38
39
 
39
- def to_s
40
- "#{@rank} of #{@suit}"
41
- end
40
+ def to_s
41
+ "#{@rank} of #{@suit}"
42
+ end
42
43
 
43
- def to_notation
44
- "#{rank}#{@suit.downcase.split('').first}"
45
- end
44
+ def to_notation
45
+ "#{rank}#{@suit.downcase.split('').first}"
46
+ end
46
47
 
47
- def to_symbol
48
- "#{@rank}#{SUIT_SYMBOL[@suit.downcase.chop.to_sym]}"
48
+ def to_symbol
49
+ "#{@rank}#{SUIT_SYMBOL[@suit.downcase.chop.to_sym]}"
50
+ end
49
51
  end
50
52
  end
@@ -1,38 +1,45 @@
1
- class Deck
2
- attr_accessor :cards
1
+ module JeuDeCartes
2
+ class Deck
3
+ attr_accessor :cards
3
4
 
4
- def initialize
5
- @cards = generate_cards
6
- end
7
-
8
- def shuffle!
9
- cards.shuffle!
5
+ def initialize
6
+ @cards = generate_cards
7
+ end
10
8
 
11
- self
12
- end
9
+ def shuffle!
10
+ cards.shuffle!
13
11
 
14
- def cut!
15
- cards.rotate!(card_count / 2)
12
+ self
13
+ end
16
14
 
17
- self
18
- end
15
+ def cut!
16
+ cards.rotate!(random_location_in_deck(card_count))
19
17
 
20
- def deal!
21
- cards.shift
22
- end
18
+ self
19
+ end
23
20
 
24
- def card_count
25
- cards.length
26
- end
21
+ def deal!
22
+ cards.shift
23
+ end
27
24
 
28
- private
29
- def generate_cards
30
- cards = []
25
+ def card_count
26
+ cards.length
27
+ end
31
28
 
32
- Card::SUITS.product(Card::RANKS).each do |tuple|
33
- cards << Card.new(tuple[0], tuple[1])
29
+ private
30
+ def random_location_in_deck(card_count)
31
+ dist = Rubystats::NormalDistribution.new(card_count, 5)
32
+ dist.rng.to_i
34
33
  end
35
34
 
36
- cards
35
+ def generate_cards
36
+ cards = []
37
+
38
+ Card::SUITS.product(Card::RANKS).each do |tuple|
39
+ cards << Card.new(tuple[0], tuple[1])
40
+ end
41
+
42
+ cards
43
+ end
37
44
  end
38
45
  end
@@ -0,0 +1,7 @@
1
+ module JeuDeCartes
2
+ class HandEvaluator
3
+
4
+
5
+
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module JeuDeCartes
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/test/card_test.rb CHANGED
@@ -4,8 +4,8 @@ require 'test_helper'
4
4
 
5
5
  class CardTest < MiniTest::Unit::TestCase
6
6
  def setup
7
- @ace_of_spades = Card.new("Spades", "Ace")
8
- @two_of_hearts = Card.new("Hearts", 2)
7
+ @ace_of_spades = JeuDeCartes::Card.new("Spades", "Ace")
8
+ @two_of_hearts = JeuDeCartes::Card.new("Hearts", 2)
9
9
  end
10
10
 
11
11
  def test_can_calculate_value
data/test/deck_test.rb CHANGED
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
 
3
3
  class DeckTest < MiniTest::Unit::TestCase
4
4
  def setup
5
- @deck = Deck.new
5
+ @deck = JeuDeCartes::Deck.new
6
6
  end
7
7
 
8
8
  def test_builds_a_deck
@@ -14,13 +14,13 @@ class DeckTest < MiniTest::Unit::TestCase
14
14
  end
15
15
 
16
16
  def test_cut_splits_a_deck_in_half
17
- assert_same @deck.cards.first, @deck.cut!.cards[@deck.card_count/2]
17
+ refute_same @deck.cards.first, @deck.cut!.cards.first
18
18
  end
19
19
 
20
20
  def test_deal_returns_one_card
21
21
  card = @deck.deal!
22
22
 
23
- assert_instance_of Card, card
23
+ assert_instance_of JeuDeCartes::Card, card
24
24
  end
25
25
 
26
26
  def test_deal_removes_one_card
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jeu_de_cartes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kerri Miller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-30 00:00:00.000000000 Z
11
+ date: 2014-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubystats
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: A standard deck of cards
42
56
  email:
43
57
  - kerrizor@kerrizor.com
@@ -55,6 +69,7 @@ files:
55
69
  - lib/jeu_de_cartes.rb
56
70
  - lib/jeu_de_cartes/card.rb
57
71
  - lib/jeu_de_cartes/deck.rb
72
+ - lib/jeu_de_cartes/hand_evaluator.rb
58
73
  - lib/jeu_de_cartes/version.rb
59
74
  - test/card_test.rb
60
75
  - test/deck_test.rb