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 +4 -4
- data/Rakefile +2 -0
- data/jeu_de_cartes.gemspec +1 -0
- data/lib/jeu_de_cartes.rb +1 -0
- data/lib/jeu_de_cartes/card.rb +42 -40
- data/lib/jeu_de_cartes/deck.rb +33 -26
- data/lib/jeu_de_cartes/hand_evaluator.rb +7 -0
- data/lib/jeu_de_cartes/version.rb +1 -1
- data/test/card_test.rb +2 -2
- data/test/deck_test.rb +3 -3
- metadata +17 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1f996e82f773a9e24f471a8509f1f4d407d77575
|
|
4
|
+
data.tar.gz: 3465c553235ac2398c68432724630951f2b35f9b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 98292bd8f7aa46d73ab351b95fb0cc3580af4ed4f0ab2c63bfb7158bec75c893af1b66e293d1bd485372bf68f5d6db21883fd194075e0002b64ffbca3728bd72
|
|
7
|
+
data.tar.gz: 831d7fa8d3152183448ff0bd6b3bcb972bbe446eb6f9a319c22e9c707723c694e256051aa1d4fc3adae6acb5e8b1c06f0ba2258c5561dabf2a3288c42e5330f4
|
data/Rakefile
CHANGED
data/jeu_de_cartes.gemspec
CHANGED
data/lib/jeu_de_cartes.rb
CHANGED
data/lib/jeu_de_cartes/card.rb
CHANGED
|
@@ -1,50 +1,52 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
def <=> other
|
|
37
|
+
value <=> other.value
|
|
38
|
+
end
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
def to_s
|
|
41
|
+
"#{@rank} of #{@suit}"
|
|
42
|
+
end
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
def to_notation
|
|
45
|
+
"#{rank}#{@suit.downcase.split('').first}"
|
|
46
|
+
end
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
def to_symbol
|
|
49
|
+
"#{@rank}#{SUIT_SYMBOL[@suit.downcase.chop.to_sym]}"
|
|
50
|
+
end
|
|
49
51
|
end
|
|
50
52
|
end
|
data/lib/jeu_de_cartes/deck.rb
CHANGED
|
@@ -1,38 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
module JeuDeCartes
|
|
2
|
+
class Deck
|
|
3
|
+
attr_accessor :cards
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def shuffle!
|
|
9
|
-
cards.shuffle!
|
|
5
|
+
def initialize
|
|
6
|
+
@cards = generate_cards
|
|
7
|
+
end
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
def shuffle!
|
|
10
|
+
cards.shuffle!
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
self
|
|
13
|
+
end
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
def cut!
|
|
16
|
+
cards.rotate!(random_location_in_deck(card_count))
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
end
|
|
18
|
+
self
|
|
19
|
+
end
|
|
23
20
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
def deal!
|
|
22
|
+
cards.shift
|
|
23
|
+
end
|
|
27
24
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
def card_count
|
|
26
|
+
cards.length
|
|
27
|
+
end
|
|
31
28
|
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
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
|
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
|
-
|
|
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.
|
|
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:
|
|
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
|