From f86a8a525078cd43afd55d6d3b8a11e9ef9d44ab Mon Sep 17 00:00:00 2001 From: Kaleb Davis Date: Thu, 4 Jun 2015 11:48:48 -0400 Subject: [PATCH 1/5] core functionality of yahtzee game implemented --- kalebs-game/controller.rb | 36 +++++++++++++++++++++++++ kalebs-game/model.rb | 57 +++++++++++++++++++++++++++++++++++++++ kalebs-game/view.rb | 55 +++++++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 kalebs-game/controller.rb create mode 100644 kalebs-game/model.rb create mode 100644 kalebs-game/view.rb diff --git a/kalebs-game/controller.rb b/kalebs-game/controller.rb new file mode 100644 index 0000000..6aa1617 --- /dev/null +++ b/kalebs-game/controller.rb @@ -0,0 +1,36 @@ +require_relative 'view' +require_relative 'model' + +class GameController + include GameView + + def run! + dice = DiceList.new + + Print::run_loader + Print::title_screen + + loop do + Print::menu + case Print::fetch_user_input + when "R" + dice.roll! + dice.each { |die| Print::print_die(die.value) } + Print::did_i_win(dice.yahtzee?) + # when "X" + # dice.reset! + when "C" + dice.win! + dice.each { |die| Print::print_die(die.value) } + Print::did_i_win(dice.yahtzee?) + when "Q" + puts "You chose to exit" + exit + else + Print::error_message + end + end + end +end + +GameController.new.run! diff --git a/kalebs-game/model.rb b/kalebs-game/model.rb new file mode 100644 index 0000000..f7ced6e --- /dev/null +++ b/kalebs-game/model.rb @@ -0,0 +1,57 @@ +class Die + attr_reader :value + + def initialize + @value = rand(5) + 1 + end +end + +class DiceList + include Enumerable + attr_reader :id, :dice, :history + + def initialize + @id = 0 + @dice = [] + @history = History.new + end + + def each(&block) + @dice.each(&block) + end + + def roll! + reset! + 5.times { @dice.push(Die.new); } + end + + def reset! + @history.add_roll(self) + @dice = [] + @id += 1 + end + + def yahtzee? + @dice.uniq.length == 1 + end + + def win! + reset! + die = Die.new + 5.times { @dice.push(die) } + end + +end + +class History + attr_reader :history + + def initialize + @history = {} + end + + def add_roll(dice_list) + @history[dice_list.id] = dice_list.dice + end + +end diff --git a/kalebs-game/view.rb b/kalebs-game/view.rb new file mode 100644 index 0000000..9a87360 --- /dev/null +++ b/kalebs-game/view.rb @@ -0,0 +1,55 @@ +module GameView + + module Print + + class << self + def run_loader + print "Loading, please wait" + 5.times { print "*"; sleep 1; } + print "\n" + end + + def error_message + puts "I don't understand that command" + end + + def title_screen + title = < " + gets.chomp + end + + def did_i_win(value) + case value + when true + puts "Congrats, you got Yahtzee! Keep playing if you want." + else + puts "Keep playing..." + end + end + + end + + end + +end From eb7187ccd5f982bd45076d4d1dc6108368a5223a Mon Sep 17 00:00:00 2001 From: Kaleb Davis <kdavis@covermymeds.com> Date: Thu, 4 Jun 2015 12:49:40 -0400 Subject: [PATCH 2/5] change cheat command to make easier for user to accidentally use it --- kalebs-game/controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kalebs-game/controller.rb b/kalebs-game/controller.rb index 6aa1617..8fe6ddd 100644 --- a/kalebs-game/controller.rb +++ b/kalebs-game/controller.rb @@ -19,7 +19,7 @@ def run! Print::did_i_win(dice.yahtzee?) # when "X" # dice.reset! - when "C" + when "r" dice.win! dice.each { |die| Print::print_die(die.value) } Print::did_i_win(dice.yahtzee?) From 57d4dcdf72c071fec1bde9c2105ef0f137733ffa Mon Sep 17 00:00:00 2001 From: Kaleb Davis <kdavis@covermymeds.com> Date: Thu, 4 Jun 2015 12:53:02 -0400 Subject: [PATCH 3/5] Remove loading screen --- kalebs-game/controller.rb | 1 - kalebs-game/view.rb | 5 ----- 2 files changed, 6 deletions(-) diff --git a/kalebs-game/controller.rb b/kalebs-game/controller.rb index 8fe6ddd..0430be1 100644 --- a/kalebs-game/controller.rb +++ b/kalebs-game/controller.rb @@ -7,7 +7,6 @@ class GameController def run! dice = DiceList.new - Print::run_loader Print::title_screen loop do diff --git a/kalebs-game/view.rb b/kalebs-game/view.rb index 9a87360..c960580 100644 --- a/kalebs-game/view.rb +++ b/kalebs-game/view.rb @@ -3,11 +3,6 @@ module GameView module Print class << self - def run_loader - print "Loading, please wait" - 5.times { print "*"; sleep 1; } - print "\n" - end def error_message puts "I don't understand that command" From 32cc0a5481ebab8f5c0b66a0ce309d6e16316319 Mon Sep 17 00:00:00 2001 From: Kaleb Davis <kdavis@covermymeds.com> Date: Thu, 4 Jun 2015 12:55:33 -0400 Subject: [PATCH 4/5] Fix dice to have values between 1 and 6 instead of 1 and 5 --- kalebs-game/model.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kalebs-game/model.rb b/kalebs-game/model.rb index f7ced6e..507325b 100644 --- a/kalebs-game/model.rb +++ b/kalebs-game/model.rb @@ -2,7 +2,7 @@ class Die attr_reader :value def initialize - @value = rand(5) + 1 + @value = rand(6) + 1 end end From d81a314838c2d136712bd0821a6eab18a744055f Mon Sep 17 00:00:00 2001 From: Kaleb Davis <kdavis@covermymeds.com> Date: Thu, 4 Jun 2015 12:57:17 -0400 Subject: [PATCH 5/5] Add documentation to model --- kalebs-game/model.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/kalebs-game/model.rb b/kalebs-game/model.rb index 507325b..7b8d2e2 100644 --- a/kalebs-game/model.rb +++ b/kalebs-game/model.rb @@ -43,6 +43,7 @@ def win! end +# Not used currently, can be implemented to see past rolls. class History attr_reader :history