require_relative "deck" require_relative "player" require_relative "terminal_ui" class Game attr_reader :player1, :player2, :dealer, :non_dealer, :upcard, :trump_suit, :round_winner def initialize(player_name1, player_name2) @deck = Deck.new @player1 = Player.new(player_name1) @player2 = Player.new(player_name2) @dealer = nil @non_dealer = nil @upcard = nil @trump_suit = nil @round_winner = nil @ui = TerminalUI.new end def determine_dealer @deck.shuffle while @dealer.nil? card1 = @deck.cards[rand(2..30) - 1] card2 = @deck.cards[rand(2..30) - 1] if card1.strength > card2.strength @dealer = @player1 @non_dealer = @player2 elsif card2.strength > card1.strength @dealer = @player2 @non_dealer = @player1 end end end def change_dealer old_dealer = @dealer @dealer = @non_dealer @non_dealer = old_dealer end def deal @player1.clear_hand @player2.clear_hand @deck = Deck.new @deck.shuffle 5.times do @non_dealer.receive(@deck.draw) @dealer.receive(@deck.draw) end @upcard = @deck.draw @trump_suit = @upcard.suit end def stock @deck.cards end def play_round card1 = @ui.choose_card(player1) card2 = @ui.choose_card(player2) puts card1 puts card2 if card1.strength > card2.strength @round_winner = @player1 elsif card1.strength < card2.strength @round_winner = @player2 else @round_winner = nil end if @round_winner @round_winner.add_point end end def play 5.times do play_round end end def game_winner if @player1.score > @player2.score @player1 elsif @player1.score < @player2.score @player2 else nil end end end