From 01405aaf1405737ec71c3835c795ee50cb1ea41b Mon Sep 17 00:00:00 2001 From: Chad Lucas Date: Wed, 10 May 2017 02:10:38 -0500 Subject: [PATCH 1/8] add name --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3f18110..7baf236 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,5 @@ Hit me baby one more time? [A Blackjack game using the Ruby Sinatra web application framework which uses object oriented programming, cookies, sessions, and JSON from the Viking Code School](http://www.vikingcodeschool.com) + +Chad Lucas \ No newline at end of file From 3f789ee5afddcc775c5d5689885289f0cf7d963d Mon Sep 17 00:00:00 2001 From: Chad Lucas Date: Wed, 10 May 2017 03:55:35 -0500 Subject: [PATCH 2/8] add blackjack helper --- Gemfile | 9 +++++++++ Gemfile.lock | 34 ++++++++++++++++++++++++++++++++++ app.rb | 11 +++++++++++ helpers/blackjack_helper.rb | 2 ++ views/blackjack.erb | 7 +++++++ views/home.erb | 1 + views/layout.erb | 11 +++++++++++ views/shared/navbar.erb | 7 +++++++ 8 files changed, 82 insertions(+) create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 app.rb create mode 100644 helpers/blackjack_helper.rb create mode 100644 views/blackjack.erb create mode 100644 views/home.erb create mode 100644 views/layout.erb create mode 100644 views/shared/navbar.erb diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..4f29e4c --- /dev/null +++ b/Gemfile @@ -0,0 +1,9 @@ +source 'http://www.rubygems.org' + +gem 'sinatra' +#gem 'reloader' + +group :development do + gem 'pry-byebug' + +end \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..be905cc --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,34 @@ +GEM + remote: http://www.rubygems.org/ + specs: + byebug (9.0.6) + coderay (1.1.1) + method_source (0.8.2) + mustermann (1.0.0) + pry (0.10.4) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + pry-byebug (3.4.2) + byebug (~> 9.0) + pry (~> 0.10) + rack (2.0.2) + rack-protection (2.0.0) + rack + sinatra (2.0.0) + mustermann (~> 1.0) + rack (~> 2.0) + rack-protection (= 2.0.0) + tilt (~> 2.0) + slop (3.6.0) + tilt (2.0.7) + +PLATFORMS + ruby + +DEPENDENCIES + pry-byebug + sinatra + +BUNDLED WITH + 1.14.6 diff --git a/app.rb b/app.rb new file mode 100644 index 0000000..c22c0a1 --- /dev/null +++ b/app.rb @@ -0,0 +1,11 @@ +require 'sinatra' +enable :sessions + +get '/' do + "hello world" + erb :home +end + +get '/blackjack' do + erb :"blackjack" +end \ No newline at end of file diff --git a/helpers/blackjack_helper.rb b/helpers/blackjack_helper.rb new file mode 100644 index 0000000..6c3664e --- /dev/null +++ b/helpers/blackjack_helper.rb @@ -0,0 +1,2 @@ +module BlackjackHelper +end \ No newline at end of file diff --git a/views/blackjack.erb b/views/blackjack.erb new file mode 100644 index 0000000..35d2f10 --- /dev/null +++ b/views/blackjack.erb @@ -0,0 +1,7 @@ +

Blackjack

+ +
+ hit + + +
\ No newline at end of file diff --git a/views/home.erb b/views/home.erb new file mode 100644 index 0000000..5989447 --- /dev/null +++ b/views/home.erb @@ -0,0 +1 @@ +

Welcome to Blackjack

\ No newline at end of file diff --git a/views/layout.erb b/views/layout.erb new file mode 100644 index 0000000..b31a5ee --- /dev/null +++ b/views/layout.erb @@ -0,0 +1,11 @@ + + + + Blackjack + + + + <%= erb :"shared/navbar" %> + <%= yield %> + + \ No newline at end of file diff --git a/views/shared/navbar.erb b/views/shared/navbar.erb new file mode 100644 index 0000000..029b497 --- /dev/null +++ b/views/shared/navbar.erb @@ -0,0 +1,7 @@ + \ No newline at end of file From 09649c4f8f63a926b64602a0bc5d3cad4c684126 Mon Sep 17 00:00:00 2001 From: Chad Lucas Date: Wed, 10 May 2017 17:22:12 -0500 Subject: [PATCH 3/8] add deal_cards method --- app.rb | 17 ++++++++++++++++- blackjack.rb | 31 +++++++++++++++++++++++++++++++ helpers/blackjack_helper.rb | 2 ++ views/blackjack.erb | 5 ++++- 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 blackjack.rb diff --git a/app.rb b/app.rb index c22c0a1..dd46cac 100644 --- a/app.rb +++ b/app.rb @@ -1,4 +1,9 @@ require 'sinatra' +#require 'sinatra/reloader' if development? +require './helpers/blackjack_helper.rb' +require './blackjack.rb' + +helpers BlackjackHelper enable :sessions get '/' do @@ -7,5 +12,15 @@ end get '/blackjack' do - erb :"blackjack" + game = Blackjack.new + cards = game.deal_cards + erb :"blackjack", :locals => {:cards => cards} + +end + +post '/blackjack' do + @choice = save_choice(params[:choice]) + + redirect to("blackjack") + end \ No newline at end of file diff --git a/blackjack.rb b/blackjack.rb new file mode 100644 index 0000000..fcc8b18 --- /dev/null +++ b/blackjack.rb @@ -0,0 +1,31 @@ +class Blackjack + attr_accessor :deck, :player_hand, :computer_hand, :card + SUIT = %w(clubs diamonds spades hearts) + VALUE = %w(2 3 4 5 6 7 8 9 10 J Q K A) + Card = Struct.new(:suit, :value) + + def initialize + build_deck + @player_hand = player_hand + @computer_hand = computer_hand + end + #iterates through suit and value and creates card struct + #and puts them into array + def build_deck + @deck = [] + SUIT.each do |type| + VALUE.each do |val| + @card = Card.new(type, val) + @deck << @card + end + end + @deck + end + + def deal_cards + @deck[0].value + end +end + + + diff --git a/helpers/blackjack_helper.rb b/helpers/blackjack_helper.rb index 6c3664e..7ee3bb0 100644 --- a/helpers/blackjack_helper.rb +++ b/helpers/blackjack_helper.rb @@ -1,2 +1,4 @@ module BlackjackHelper + + end \ No newline at end of file diff --git a/views/blackjack.erb b/views/blackjack.erb index 35d2f10..7ae137f 100644 --- a/views/blackjack.erb +++ b/views/blackjack.erb @@ -2,6 +2,9 @@
hit +
-
\ No newline at end of file + + +<%= cards %> \ No newline at end of file From a41b694a6c889caeee72ba97dc9be25bef867a27 Mon Sep 17 00:00:00 2001 From: Chad Lucas Date: Thu, 11 May 2017 01:43:32 -0500 Subject: [PATCH 4/8] add deal_cards method --- blackjack.rb | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/blackjack.rb b/blackjack.rb index fcc8b18..f89c96b 100644 --- a/blackjack.rb +++ b/blackjack.rb @@ -6,8 +6,8 @@ class Blackjack def initialize build_deck - @player_hand = player_hand - @computer_hand = computer_hand + @player_hand = [] + @computer_hand = [] end #iterates through suit and value and creates card struct #and puts them into array @@ -23,9 +23,30 @@ def build_deck end def deal_cards - @deck[0].value + deal_player_hand + deal_computer_hand end + + def deal_player_hand + 0...2.times do + @deck.shuffle! + @player_hand << @deck.pop + end + @player_hand + end + + def deal_computer_hand + 0...2.times do + @computer_hand << @deck.pop + end + @computer_hand + end + end +game = Blackjack.new + +game.deal_cards + From 2313c69c627414455913c075a6b9f7882bbbcaf6 Mon Sep 17 00:00:00 2001 From: Chad Lucas Date: Thu, 11 May 2017 04:22:19 -0500 Subject: [PATCH 5/8] add check_if_face_card? method --- blackjack.rb | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/blackjack.rb b/blackjack.rb index f89c96b..780a15c 100644 --- a/blackjack.rb +++ b/blackjack.rb @@ -1,5 +1,6 @@ +require 'pry' class Blackjack - attr_accessor :deck, :player_hand, :computer_hand, :card + attr_accessor :deck, :player_hand, :computer_hand, :card, :score, :face_card SUIT = %w(clubs diamonds spades hearts) VALUE = %w(2 3 4 5 6 7 8 9 10 J Q K A) Card = Struct.new(:suit, :value) @@ -32,7 +33,8 @@ def deal_player_hand @deck.shuffle! @player_hand << @deck.pop end - @player_hand + @player_hand + puts @player_hand end def deal_computer_hand @@ -42,11 +44,38 @@ def deal_computer_hand @computer_hand end + #def get_player_score + #check_if_face_card?(@player_hand) + #check_if_ace? + #@score = @player_hand[0].value.to_i + @player_hand[1].value.to_i + #puts @score + #end + + def get_player_score + puts @player_hand + @player_hand.map do |card| + card.value = check_if_ace?(card) + card.value = check_if_face_card?(card) + end + end + + def check_if_face_card?(card) + if card.value == "J" || card.value == "Q" || card.value == "K" + card.value = 10 + end + card + end + + + + + end game = Blackjack.new game.deal_cards +game.get_player_score From fb557571962e83c690f0f472209e03515e3a9963 Mon Sep 17 00:00:00 2001 From: Chad Lucas Date: Thu, 11 May 2017 04:29:30 -0500 Subject: [PATCH 6/8] add get_player_score total --- blackjack.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/blackjack.rb b/blackjack.rb index 780a15c..4635607 100644 --- a/blackjack.rb +++ b/blackjack.rb @@ -47,23 +47,25 @@ def deal_computer_hand #def get_player_score #check_if_face_card?(@player_hand) #check_if_ace? - #@score = @player_hand[0].value.to_i + @player_hand[1].value.to_i + # @score = @player_hand[0].value.to_i + @player_hand[1].value.to_i #puts @score #end def get_player_score puts @player_hand @player_hand.map do |card| - card.value = check_if_ace?(card) + #card.value = check_if_ace?(card) card.value = check_if_face_card?(card) end + @score = @player_hand[0].value.to_i + @player_hand[1].value.to_i + puts @score end def check_if_face_card?(card) if card.value == "J" || card.value == "Q" || card.value == "K" card.value = 10 end - card + card.value end From 708062549874d700a5e42ef78f212b1c2fea79b6 Mon Sep 17 00:00:00 2001 From: Chad Lucas Date: Thu, 11 May 2017 06:08:36 -0500 Subject: [PATCH 7/8] add sum_up_cards method --- blackjack.rb | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/blackjack.rb b/blackjack.rb index 4635607..98d5c23 100644 --- a/blackjack.rb +++ b/blackjack.rb @@ -57,15 +57,26 @@ def get_player_score #card.value = check_if_ace?(card) card.value = check_if_face_card?(card) end - @score = @player_hand[0].value.to_i + @player_hand[1].value.to_i - puts @score + @score = sum_up_cards(@player_hand) + + puts @score end def check_if_face_card?(card) if card.value == "J" || card.value == "Q" || card.value == "K" card.value = 10 end - card.value + card.value + end + + def sum_up_cards(cards) + sum = 0 + #cards[0].value.to_i + cards[1].value.to_i + cards.map do |card| + sum += card.value.to_i + end + sum + end From c5af5fcbfa3f05d471ecd3c3cb6cdb91bda0ddb4 Mon Sep 17 00:00:00 2001 From: Chad Lucas Date: Thu, 11 May 2017 14:23:05 -0500 Subject: [PATCH 8/8] add computer_hand_score method --- app.rb | 6 ++++-- blackjack.rb | 45 +++++++++++++++++++++++++-------------------- views/blackjack.erb | 8 ++++---- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/app.rb b/app.rb index dd46cac..f2b11ce 100644 --- a/app.rb +++ b/app.rb @@ -14,13 +14,15 @@ get '/blackjack' do game = Blackjack.new cards = game.deal_cards + sessions[:player_hand] = game.get_player_score erb :"blackjack", :locals => {:cards => cards} end post '/blackjack' do - @choice = save_choice(params[:choice]) - + if params[:hit]) + game.add_card + end redirect to("blackjack") end \ No newline at end of file diff --git a/blackjack.rb b/blackjack.rb index 98d5c23..9f644c6 100644 --- a/blackjack.rb +++ b/blackjack.rb @@ -1,14 +1,16 @@ require 'pry' class Blackjack - attr_accessor :deck, :player_hand, :computer_hand, :card, :score, :face_card + attr_accessor :deck, :player_hand, :computer_hand, :player_score, :sum SUIT = %w(clubs diamonds spades hearts) VALUE = %w(2 3 4 5 6 7 8 9 10 J Q K A) + #create card struct with suit & value Card = Struct.new(:suit, :value) - + #sets up player and computer hands def initialize build_deck @player_hand = [] @computer_hand = [] + @sum = 0 end #iterates through suit and value and creates card struct #and puts them into array @@ -34,7 +36,6 @@ def deal_player_hand @player_hand << @deck.pop end @player_hand - puts @player_hand end def deal_computer_hand @@ -44,38 +45,42 @@ def deal_computer_hand @computer_hand end - #def get_player_score - #check_if_face_card?(@player_hand) - #check_if_ace? - # @score = @player_hand[0].value.to_i + @player_hand[1].value.to_i - #puts @score - #end def get_player_score - puts @player_hand + @player_hand.map do |card| - #card.value = check_if_ace?(card) - card.value = check_if_face_card?(card) + + card.value = check_if_face_card_or_ace?(card) + + @player_score = sum_up_cards(@player_hand) + end + @player_score + end + + def get_computer_score + @computer_hand.map do |card| + card.value = check_if_face_card_or_ace(card) end - @score = sum_up_cards(@player_hand) - - puts @score + @computer_score = sum_up_cards(@computer_hand) end - def check_if_face_card?(card) + + def check_if_face_card_or_ace?(card) if card.value == "J" || card.value == "Q" || card.value == "K" card.value = 10 + elsif card.value == "A" && @sum < 21 + card.value = 11 end card.value end def sum_up_cards(cards) - sum = 0 - #cards[0].value.to_i + cards[1].value.to_i + @sum = 0 + cards.map do |card| - sum += card.value.to_i + @sum += card.value.to_i end - sum + @sum end diff --git a/views/blackjack.erb b/views/blackjack.erb index 7ae137f..33e0703 100644 --- a/views/blackjack.erb +++ b/views/blackjack.erb @@ -1,10 +1,10 @@

Blackjack

+<%= cards %> +
hit + stay
- -
- -<%= cards %> \ No newline at end of file +