diff --git a/README.md b/README.md index e69de29..43a5566 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,6 @@ +# read me for week 7 metis class work + +####pokr#### +a poker game + +############ diff --git a/dealer.rb b/dealer.rb new file mode 100644 index 0000000..c97f83c --- /dev/null +++ b/dealer.rb @@ -0,0 +1,17 @@ +class Dealer + attr_reader :deck + def initialize(deck) + @deck = deck + deck.build + deck.shuffle + end + + def deal(players) + 5.times do + players.each do |player| + player.cards << deck.cards.shift + end + end + players + end +end diff --git a/packofcards.rb b/packofcards.rb new file mode 100644 index 0000000..5326d98 --- /dev/null +++ b/packofcards.rb @@ -0,0 +1,36 @@ +class Card + attr_reader :rank, :suit + def initialize(suit, rank) + @suit = suit + @rank = rank + end + + def to_s + puts "#{suit}#{rank}" + end +end + +class Deck + attr_reader :cards + def build + @cards = [] + ranks = %w(1 2 3 4 5 6 7 8 9 10 11 12 13) + suits = %w(H H H H) + + suits.each do |suit| + ranks.each do |rank| + cards << Card.new(suit,rank.to_i) + end + end + end + + def show + cards.each do |card| + card.show + end + end + + def shuffle + cards.shuffle! + end +end diff --git a/player.rb b/player.rb new file mode 100644 index 0000000..ed289a0 --- /dev/null +++ b/player.rb @@ -0,0 +1,28 @@ +class Player + attr_reader :name + attr_accessor :cards, :hand + def initialize(index) + @cards = Array.new + @name = give_player_name(index) + @hand = "" + end + + def show_cards + cards.each do |card| + card.to_s + end + end + + def show_hand + puts name + show_cards + puts hand + end + + private + + def give_player_name(index) + index = index + 1 + index = "player" + index.to_s + end +end diff --git a/pokr.rb b/pokr.rb new file mode 100644 index 0000000..8bce38d --- /dev/null +++ b/pokr.rb @@ -0,0 +1,83 @@ +require_relative "packofcards.rb" +require_relative "player.rb" +require_relative "dealer.rb" + +class PokerGame + attr_reader :number_of_players + attr_accessor :players + def initialize(number_of_players=4) + @number_of_players = number_of_players + @players = Array.new + end + + def play + create_players + players = deal_cards + determine_hand = HandCaculator.new(players) + determine_hand.start + reveal_hands + end + + def deal_cards + dealer = Dealer.new(Deck.new) + dealer.deal(players) + end + + def create_players + number_of_players.times { |index| players << Player.new(index) } + end + + def reveal_hands + players.each { |player| puts player.show_hand } + end +end + +class HandCaculator + attr_reader :players + def initialize(players) + @players = players + end + + def start + players.each do |player| + Flush.new(player) + end + end +end + +class Flush + attr_reader :cards, :player, :results + def initialize(player) + @player = player + @cards = player.cards + @results = [] + determine + end + + def determine + cards.each { |card| results << card.suit } + results.uniq! + if results.length == 1 + player.hand = "Flush" + end + end +end + +class OnePair + attr_reader :cards + def initialize(player) + @cards = player.cards + list_ranks + determine + end + + def determine + results = cards.uniq + puts results + end +end + + + +game = PokerGame.new(4) +game.play