blackjack-cli 0.0.5 → 0.0.6
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/README.md +3 -0
- data/lib/Cli.rb +5 -2
- data/lib/Game.rb +76 -34
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 592a97e8422d8f7f00288f20bc9e35ec09a90275
|
|
4
|
+
data.tar.gz: 1c7777e0f5cfce1e5107d0ab2c1a90964a7066e1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6768539fa479433625357f666660434477b4ad13e81bcaae452c76b3fa8cf52bbbff86babdea4938abd8f8dba41ca62e053bde8747007ba6fd8cf0896fd7ee42
|
|
7
|
+
data.tar.gz: 1c0c826bd27037c281d9ef39d1972e64b2e09639b1c40cf6262e2e40063a04b287406caffe413b6bb7459d438bcf396a4d2b27a6473251fc574f3b14a4f8af11
|
data/README.md
CHANGED
data/lib/Cli.rb
CHANGED
|
@@ -15,9 +15,11 @@ class Cli
|
|
|
15
15
|
when "start"
|
|
16
16
|
puts "Loading Game..."
|
|
17
17
|
sleep(2)
|
|
18
|
+
game = Game.new(@player_1, @player_2, @dealer, @type) if @player_2
|
|
19
|
+
game = Game.new(@player_1, @dealer, @type) if !@player_2
|
|
18
20
|
puts "Game loaded"
|
|
19
21
|
sleep(1)
|
|
20
|
-
|
|
22
|
+
game.play
|
|
21
23
|
when "exit"
|
|
22
24
|
return
|
|
23
25
|
else
|
|
@@ -47,13 +49,14 @@ class Cli
|
|
|
47
49
|
case input
|
|
48
50
|
when "1"
|
|
49
51
|
ask_for_player1_name
|
|
50
|
-
@
|
|
52
|
+
@dealer = Computer.new
|
|
51
53
|
initialize_game
|
|
52
54
|
when "2"
|
|
53
55
|
ask_for_player1_name
|
|
54
56
|
puts ""
|
|
55
57
|
ask_for_player2_name
|
|
56
58
|
puts ""
|
|
59
|
+
@dealer = Computer.new
|
|
57
60
|
initialize_game
|
|
58
61
|
when "exit"
|
|
59
62
|
return
|
data/lib/Game.rb
CHANGED
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
class Game
|
|
2
|
-
attr_accessor :deck, :player_1, :player_2, :turn_count
|
|
2
|
+
attr_accessor :deck, :player_1, :player_2, :dealer, :turn_count, :type
|
|
3
3
|
|
|
4
|
-
def initialize(player_1, player_2, type)
|
|
4
|
+
def initialize(player_1, player_2=nil, dealer, type)
|
|
5
5
|
@deck = Deck.new.cards
|
|
6
6
|
@player_1 = player_1
|
|
7
|
-
@player_2 = player_2
|
|
7
|
+
@player_2 = player_2 if player_2
|
|
8
|
+
@dealer = dealer
|
|
8
9
|
@type = type
|
|
9
10
|
@turn_count = 0
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def current_player
|
|
13
|
-
@turn_count
|
|
14
|
+
if @turn_count == 0
|
|
15
|
+
@player_1
|
|
16
|
+
elsif @turn_count == 1 && @player_2
|
|
17
|
+
@player_2
|
|
18
|
+
else
|
|
19
|
+
@dealer
|
|
20
|
+
end
|
|
14
21
|
end
|
|
15
22
|
|
|
16
|
-
def opposite_player
|
|
17
|
-
|
|
18
|
-
end
|
|
23
|
+
# def opposite_player
|
|
24
|
+
# current_player == @player_1 ? @player_2 : @player_1
|
|
25
|
+
# end
|
|
19
26
|
|
|
20
27
|
def card_value(card, player=current_player)
|
|
21
28
|
case card.name
|
|
@@ -76,7 +83,6 @@ class Game
|
|
|
76
83
|
player.deck.push(@deck[0])
|
|
77
84
|
get_player_card_values(player)
|
|
78
85
|
@deck.shift
|
|
79
|
-
@turn_count += 1
|
|
80
86
|
end
|
|
81
87
|
|
|
82
88
|
def get_player_card_values(player)
|
|
@@ -86,22 +92,49 @@ class Game
|
|
|
86
92
|
end
|
|
87
93
|
|
|
88
94
|
def draw?
|
|
89
|
-
@player_1.deck_value == @
|
|
95
|
+
@player_1.deck_value == @dealer.deck_value if !@player_2
|
|
96
|
+
@player_1.deck_value == @player_2.deck_value && @player_1.deck_value == @dealer.deck_value
|
|
90
97
|
end
|
|
91
98
|
|
|
92
99
|
def bust(player)
|
|
93
100
|
player.deck_value > 21
|
|
94
101
|
end
|
|
95
102
|
|
|
103
|
+
def two_player_won(player, player_2, player_3)
|
|
104
|
+
if player.deck_value > player_2.deck_value && bust(player_3) && !bust(player) && !bust(player_2)
|
|
105
|
+
player
|
|
106
|
+
elsif player.deck_value > player_3.deck_value && bust(player_2) && !bust(player) && !bust(player_3)
|
|
107
|
+
player
|
|
108
|
+
elsif player.deck_value > player_2.deck_value && player.deck_value > player_3.deck_value && !bust(player) && !bust(player_2) && !bust(player_3)
|
|
109
|
+
player
|
|
110
|
+
elsif !bust(player) && bust(player_2) && bust(player_3)
|
|
111
|
+
player
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def one_player_won(player_1, player_2)
|
|
116
|
+
if player_1.deck_value > player_2.deck_value && !bust(player_1) && !bust(player_2)
|
|
117
|
+
player_1
|
|
118
|
+
elsif !bust(player_1) && bust(player_2)
|
|
119
|
+
player_1
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
96
123
|
def won?
|
|
97
|
-
if @
|
|
98
|
-
@player_1
|
|
99
|
-
|
|
100
|
-
@player_2
|
|
101
|
-
|
|
102
|
-
@player_2
|
|
103
|
-
|
|
104
|
-
|
|
124
|
+
if @type == "2 player"
|
|
125
|
+
if winner = two_player_won(@player_1, @player_2, @dealer)
|
|
126
|
+
winner
|
|
127
|
+
elsif winner = two_player_won(@player_2, @player_1, @dealer)
|
|
128
|
+
winner
|
|
129
|
+
elsif winner = two_player_won(@dealer, @player_1, @player_2)
|
|
130
|
+
winner
|
|
131
|
+
end
|
|
132
|
+
else
|
|
133
|
+
if winner = one_player_won(@player_1, @dealer)
|
|
134
|
+
winner
|
|
135
|
+
elsif winner = one_player_won(@dealer, @player_1)
|
|
136
|
+
winner
|
|
137
|
+
end
|
|
105
138
|
end
|
|
106
139
|
end
|
|
107
140
|
|
|
@@ -114,17 +147,15 @@ class Game
|
|
|
114
147
|
def lost
|
|
115
148
|
if bust(@player_1)
|
|
116
149
|
puts "Player 1 busted!"
|
|
117
|
-
elsif bust(@player_2)
|
|
150
|
+
elsif @player2 && bust(@player_2)
|
|
118
151
|
puts "Player 2 busted!"
|
|
152
|
+
elsif bust(@dealer)
|
|
153
|
+
puts "Dealer busted!"
|
|
119
154
|
end
|
|
120
155
|
end
|
|
121
156
|
|
|
122
157
|
def game_over
|
|
123
|
-
|
|
124
|
-
true
|
|
125
|
-
elsif bust(@player_1) || bust(@player_2)
|
|
126
|
-
true
|
|
127
|
-
end
|
|
158
|
+
@turn_count == 3 ? true : false
|
|
128
159
|
end
|
|
129
160
|
|
|
130
161
|
def show_hands
|
|
@@ -132,8 +163,13 @@ class Game
|
|
|
132
163
|
puts "Total card value: #{@player_1.deck_value}#{bust(@player_1) ? ' - Busted!' : nil}"
|
|
133
164
|
sleep(1)
|
|
134
165
|
puts ""
|
|
135
|
-
view_cards(@player_2)
|
|
136
|
-
puts "Total card value: #{@player_2.deck_value}#{bust(@player_2) ? ' - Busted!' : nil}"
|
|
166
|
+
view_cards(@player_2) if @player_2
|
|
167
|
+
puts "Total card value: #{@player_2.deck_value}#{bust(@player_2) ? ' - Busted!' : nil}" if @player_2
|
|
168
|
+
puts ""
|
|
169
|
+
view_cards(@dealer)
|
|
170
|
+
puts "Total card value: #{@dealer.deck_value}#{bust(@dealer) ? ' - Busted!' : nil}"
|
|
171
|
+
sleep(1)
|
|
172
|
+
puts ""
|
|
137
173
|
end
|
|
138
174
|
|
|
139
175
|
def stand(player)
|
|
@@ -152,11 +188,11 @@ class Game
|
|
|
152
188
|
end
|
|
153
189
|
|
|
154
190
|
def turn
|
|
155
|
-
|
|
191
|
+
lost ? turn_count += 1 : nil
|
|
156
192
|
view_cards(current_player) if current_player.is_a?(Human)
|
|
157
|
-
get_player_card_values(current_player)
|
|
193
|
+
get_player_card_values(current_player)
|
|
158
194
|
puts "A total value of #{current_player.deck_value}" if current_player.is_a?(Human)
|
|
159
|
-
puts ""
|
|
195
|
+
puts "" if current_player.is_a?(Human)
|
|
160
196
|
options
|
|
161
197
|
end
|
|
162
198
|
|
|
@@ -165,9 +201,13 @@ class Game
|
|
|
165
201
|
sleep(1)
|
|
166
202
|
get_player_card_values(@player_1)
|
|
167
203
|
sleep(1)
|
|
168
|
-
puts "Updating #{@player_2.name}'s hand..."
|
|
204
|
+
puts "Updating #{@player_2.name}'s hand..." if @player_2
|
|
205
|
+
sleep(1) if @player_2
|
|
206
|
+
get_player_card_values(@player_2) if @player_2
|
|
207
|
+
sleep(1) if @player_2
|
|
208
|
+
puts "Updating Dealer's hand..."
|
|
169
209
|
sleep(1)
|
|
170
|
-
get_player_card_values(@
|
|
210
|
+
get_player_card_values(@dealer)
|
|
171
211
|
sleep(1)
|
|
172
212
|
end
|
|
173
213
|
|
|
@@ -210,7 +250,8 @@ class Game
|
|
|
210
250
|
sleep(1)
|
|
211
251
|
puts "Dealing Cards..."
|
|
212
252
|
deal_cards(@player_1)
|
|
213
|
-
deal_cards(@player_2)
|
|
253
|
+
deal_cards(@player_2) if @player_2
|
|
254
|
+
deal_cards(@dealer)
|
|
214
255
|
sleep(1)
|
|
215
256
|
update_player_values
|
|
216
257
|
puts ""
|
|
@@ -248,12 +289,13 @@ class Game
|
|
|
248
289
|
puts ""
|
|
249
290
|
if @type == "1 player"
|
|
250
291
|
@player_1 = Human.new(@player_1.name)
|
|
251
|
-
@
|
|
252
|
-
Game.new(@player_1, @
|
|
292
|
+
@dealer = Computer.new
|
|
293
|
+
Game.new(@player_1, @dealer, "1 player").play
|
|
253
294
|
else
|
|
254
295
|
@player_1 = Human.new(@player_1.name)
|
|
255
296
|
@player_2 = Human.new(@player_2.name)
|
|
256
|
-
|
|
297
|
+
@dealer = Computer.new
|
|
298
|
+
Game.new(@player_1, @player_2, @dealer, "2 player").play
|
|
257
299
|
end
|
|
258
300
|
when "n"
|
|
259
301
|
return
|