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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/lib/Cli.rb +5 -2
  4. data/lib/Game.rb +76 -34
  5. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2df03bbf0092d4f4340b931d7a76f5a350ea9efe
4
- data.tar.gz: 26df73639c4ea6d1546c7cc8c1eb054ee2258855
3
+ metadata.gz: 592a97e8422d8f7f00288f20bc9e35ec09a90275
4
+ data.tar.gz: 1c7777e0f5cfce1e5107d0ab2c1a90964a7066e1
5
5
  SHA512:
6
- metadata.gz: bc22fc1bd0c8cac71145ccc0fff4aa238cdcd521a94c7165356160d206ea552c04387a368ca50aa7c2afa7fc6fb4612e08bc4f8ea14dd307684f216f7b12ba71
7
- data.tar.gz: af207eadacdedd12bfab604a67027c838b2ec8492a70baec40a13cb24f7015aa4e489dd09b0611668bca72356cc10e1afe194010fd7c31250f7788bceb565e27
6
+ metadata.gz: 6768539fa479433625357f666660434477b4ad13e81bcaae452c76b3fa8cf52bbbff86babdea4938abd8f8dba41ca62e053bde8747007ba6fd8cf0896fd7ee42
7
+ data.tar.gz: 1c0c826bd27037c281d9ef39d1972e64b2e09639b1c40cf6262e2e40063a04b287406caffe413b6bb7459d438bcf396a4d2b27a6473251fc574f3b14a4f8af11
data/README.md CHANGED
@@ -27,3 +27,6 @@ Smarter AI
27
27
  Feel free to log issues or request features!
28
28
 
29
29
  Thank you for playing!
30
+
31
+
32
+ [![Gem Version](https://badge.fury.io/rb/blackjack-cli.svg)](https://badge.fury.io/rb/blackjack-cli)
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
- Game.new(@player_1, @player_2, @type).play
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
- @player_2 = Computer.new
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
@@ -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 % 2 == 0 ? @player_1 : @player_2
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
- current_player == @player_1 ? @player_2 : @player_1
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 == @player_2.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 @player_1.deck_value > @player_2.deck_value && !bust(@player_1)
98
- @player_1
99
- elsif @player_2.deck_value > @player_1.deck_value && !bust(@player_2)
100
- @player_2
101
- elsif bust(@player_1) && !bust(@player_2)
102
- @player_2
103
- elsif bust(@player_2) && !bust(@player_1)
104
- @player_1
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
- if @player_1.status == "stand" && @player_2.status == "stand"
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
- @turn_count += 1 if current_player.status == "stand"
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) unless @turn_count == 0 || @turn_count == 1
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(@player_2)
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
- @player_2 = Computer.new
252
- Game.new(@player_1, @player_2, "1 player").play
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
- Game.new(@player_1, @player_2, "2 player").play
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blackjack-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Enoch Griffith