diff --git a/lib/card.rb b/lib/card.rb new file mode 100644 index 000000000..eace70a19 --- /dev/null +++ b/lib/card.rb @@ -0,0 +1,13 @@ +class Card + + attr_reader :rank, + :suit, + :value + + def initialize(suit, value, rank) + @suit = suit + @value = value + @rank = rank + end + +end diff --git a/lib/deck.rb b/lib/deck.rb new file mode 100644 index 000000000..d1fbef7d4 --- /dev/null +++ b/lib/deck.rb @@ -0,0 +1,35 @@ +class Deck + + attr_reader :cards + + def initialize(cards) + @cards = cards + + end + + def rank_of_card_at(index) + + @cards[index].rank + end + + def high_ranking_cards + @cards.find_all do |card| + card.rank >= 11 + end + end + + def percent_high_ranking + percent_high = @cards.count do |card| + card.rank >= 11 + end + (percent_high.to_f / @cards.size * 100).round(2) + end + + def remove_card + @cards.shift + end + + def add_card(card) + @cards.append(card) + end +end \ No newline at end of file diff --git a/lib/game.rb b/lib/game.rb new file mode 100644 index 000000000..7c24e624c --- /dev/null +++ b/lib/game.rb @@ -0,0 +1,38 @@ +class Game + attr_reader :player1, :player2, :turn + + def initialize(player1, player2, turn) + @player1 = player1 + @player2 = player2 + @turn = turn + @turn_count = 0 + end + + def start + until @player1.has_lost? == true || @player2.has_lost? == true || @turn_count == 1000000 + #@turn = Turn.new(player1, player2) + @turn.type + @turn.winner + @turn.pile_cards + @turn.spoils_of_war + puts "Turn #{@turn_count} #{@turn.type} #{@turn.winner_name}." + @turn_count += 1 + end + has_won? + end + + def has_won? + if (@player1.deck.cards.count >= 3) && + (@player2.deck.cards.count < 3) + @player1.has_won == true + puts "Player1 Wins!" + elsif + (@player2.deck.cards.count >= 3) && + (@player1.deck.cards.count < 3) + @player2.has_won == true + puts "Player2 Wins!" + else + puts 'DRAW' + end + end +end \ No newline at end of file diff --git a/lib/player.rb b/lib/player.rb new file mode 100644 index 000000000..9b30a2e4c --- /dev/null +++ b/lib/player.rb @@ -0,0 +1,14 @@ +class Player + + attr_reader :name, :deck + + def initialize(name, deck) + @name = name + @deck = deck + end + + def has_lost? + @deck.cards.empty? + end + +end \ No newline at end of file diff --git a/lib/turn.rb b/lib/turn.rb new file mode 100644 index 000000000..6971d7397 --- /dev/null +++ b/lib/turn.rb @@ -0,0 +1,77 @@ +class Turn + + attr_reader :player1, :player2, :spoils_of_war, :winner_name + + def initialize(player1, player2) + @player1 = player1 + @player2 = player2 + @spoils_of_war = [] + @winner_name = "Winner" + end + + def type + if @player1.deck.rank_of_card_at(0) == @player2.deck.rank_of_card_at(0) && + @player1.deck.rank_of_card_at(2) == @player2.deck.rank_of_card_at(2) + :mutually_assured_destruction + elsif + @player1.deck.rank_of_card_at(0) == @player2.deck.rank_of_card_at(0) + @player1.deck.cards.count >= 3 && @player2.deck.cards.count >= 3 + :war + elsif + @player2.deck.rank_of_card_at(0) > @player1.deck.rank_of_card_at(0) + :basic + else + @player1.deck.rank_of_card_at(0) > @player2.deck.rank_of_card_at(0) + :basic + end + end + + def winner + if @player1.deck.rank_of_card_at(0) == @player2.deck.rank_of_card_at(0) && + @player1.deck.rank_of_card_at(2) == @player2.deck.rank_of_card_at(2) + "No Winner" + elsif + @player1.deck.rank_of_card_at(0) == @player2.deck.rank_of_card_at(0) && + @player1.deck.cards.count >= 3 && @player2.deck.cards.count >= 3 && + @player1.deck.rank_of_card_at(2) > @player2.deck.rank_of_card_at(2) + @winner_name = @player1.name + @player1 + elsif + @player1.deck.rank_of_card_at(0) == @player2.deck.rank_of_card_at(0) && + @player1.deck.cards.count >= 3 && @player2.deck.cards.count >= 3 && + @player2.deck.rank_of_card_at(2) > @player1.deck.rank_of_card_at(2) + @winner_name = @player2.name + @player2 + elsif + @player1.deck.rank_of_card_at(0) > @player2.deck.rank_of_card_at(0) + @winner_name = @player1.name + @player1 + else + @player2.deck.rank_of_card_at(0) > @player1.deck.rank_of_card_at(0) + @winner_name = @player2.name + @player2 + end + end + + def pile_cards + if type == :mutually_assured_destruction + @spoils_of_war.concat(@player1.deck.cards.shift(3)) + @spoils_of_war.concat(@player2.deck.cards.shift(3)) + @spoils_of_war.clear + elsif + type == :war + @spoils_of_war.concat(@player1.deck.cards.shift(3)) + @spoils_of_war.concat(@player2.deck.cards.shift(3)) + else type == :basic + @spoils_of_war.concat(@player1.deck.cards.shift(1)) + @spoils_of_war.concat(@player2.deck.cards.shift(1)) + end + end + + def award_spoils(winner) + # @spoils_of_war.shuffle! + winner.deck.cards.concat(@spoils_of_war) + @spoils_of_war.clear + end +end + diff --git a/spec/card_spec.rb b/spec/card_spec.rb index 85079129e..e793e1bc0 100644 --- a/spec/card_spec.rb +++ b/spec/card_spec.rb @@ -15,4 +15,4 @@ expect(card.value).to eq('Queen') expect(card.rank).to eq(12) end -end +end \ No newline at end of file diff --git a/spec/deck_spec.rb b/spec/deck_spec.rb new file mode 100644 index 000000000..c71b4b016 --- /dev/null +++ b/spec/deck_spec.rb @@ -0,0 +1,136 @@ +require 'rspec' +require './lib/card' +require './lib/deck' + +RSpec.describe Deck do + describe "#initialize" do + it 'exists' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck).to be_a(Deck) + end + + it 'has attributes' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck.cards).to eq([card1, card2, card3]) + end + end + + describe '#rank_of_card_at' do + it 'returns rank of card at the specified index position' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck.rank_of_card_at(0)).to eq(12) + expect(deck.rank_of_card_at(2)).to eq(14) + expect(deck.cards).to eq([card1, card2, card3]) + end + end + + describe '#high_ranking_cards' do + it 'returns an array of cards with rankings >= 11' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck.high_ranking_cards).to eq([card1, card3]) + end + + it 'updates the array when a card is removed' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck.high_ranking_cards).to eq([card1, card3]) + deck.remove_card + expect(deck.high_ranking_cards).to eq([card3]) + end + end + + describe '#percent_high_ranking' do + it 'returns a percentage of cards that are high ranking' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck.percent_high_ranking).to eq(66.67) + end + + it 'updates the percentage when a card is removed' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck.percent_high_ranking).to eq(66.67) + deck.remove_card + expect(deck.percent_high_ranking).to eq(50.0) + end + + it 'updates the percentage when a card is added' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + card4 = Card.new(:club, '5', 5) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck.percent_high_ranking).to eq(66.67) + deck.remove_card + expect(deck.percent_high_ranking).to eq(50.0) + deck.add_card(card4) + expect(deck.percent_high_ranking).to eq(33.33) + end + end + + describe '#remove_card' do + it 'returns a card that is removed from the top of the deck' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + cards = [card1, card2, card3] + + deck = Deck.new(cards) + expect(deck.remove_card).to eq(card1) + expect(deck.cards).to eq([card2, card3]) + end + end + + describe '#add_card' do + it 'adds a card to the bottom of the deck' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + card4 = Card.new(:club, '5', 5) + cards = [card2, card3] + + deck = Deck.new(cards) + deck.add_card(card4) + expect(deck.cards).to eq([card2, card3, card4]) + end + end +end + + + + + diff --git a/spec/player_spec.rb b/spec/player_spec.rb new file mode 100644 index 000000000..847e617d0 --- /dev/null +++ b/spec/player_spec.rb @@ -0,0 +1,48 @@ +require 'rspec' +require './lib/card' +require './lib/deck' +require './lib/player' + +RSpec.describe Player do + describe "#initialize" do + it "exists" do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + deck = Deck.new([card1, card2, card3]) + + player = Player.new('Clarisa', deck) + expect(player).to be_a(Player) + end + + it 'has attributes' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + deck = Deck.new([card1, card2, card3]) + + player = Player.new('Clarisa', deck) + expect(player.name).to eq('Clarisa') + expect(player.deck).to be_a(Deck) + end + end + + describe "#has_lost?" do + it 'determines if the player lost that round' do + card1 = Card.new(:diamond, 'Queen', 12) + card2 = Card.new(:spade, '3', 3) + card3 = Card.new(:heart, 'Ace', 14) + deck = Deck.new([card1, card2, card3]) + + player = Player.new('Clarisa', deck) + expect(player.has_lost?).to be(false) + player.deck.remove_card + expect(player.has_lost?).to be(false) + player.deck.remove_card + expect(player.has_lost?).to be(false) + player.deck.remove_card + expect(player.has_lost?).to be(true) + expect(player.deck.cards).to eq([]) + end + end +end \ No newline at end of file diff --git a/spec/turn_spec.rb b/spec/turn_spec.rb new file mode 100644 index 000000000..87a045861 --- /dev/null +++ b/spec/turn_spec.rb @@ -0,0 +1,333 @@ +require 'rspec' +require './lib/card' +require './lib/deck' +require './lib/player' +require './lib/turn' + +RSpec.describe Turn do + describe '#initialize' do + it 'exists' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card3, card4, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + expect(turn).to be_a(Turn) + end + + it 'has attributes' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card3, card4, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + expect(turn.spoils_of_war).to eq([]) + expect(turn.player1).to eq(player1) + expect(turn.player2).to eq(player2) + end + end + + describe 'Basic Turn' do + describe '#type' do + it "creates a basic turn type" do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card3, card4, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + expect(turn.type).to be(:basic) + end + end + + describe '#winner' do + it 'determines the winner of the basic turn type' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card3, card4, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + expect(turn.winner).to eq(player1) + end + end + + describe '#pile_cards' do + it 'adds cards to the spoils_of_war array for the basic turn type' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card3, card4, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + turn.pile_cards + + expect(turn.spoils_of_war).to eq([card1, card3]) + end + end + + describe '#award_spoils' do + it 'Adds cards from spoils_of_war array to the winner of the basic turn type deck' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card3, card4, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + winner = turn.winner + turn.pile_cards + turn.award_spoils(winner) + + expect(player1.deck.cards).to eq([card2, card5, card8, card1, card3]) + expect(player2.deck.cards).to eq([card4, card6, card7]) + expect(turn.spoils_of_war).to eq([]) + end + end + end + + describe 'War Turn' do + describe '#type' do + it "creates a war turn type" do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card4, card3, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + expect(turn.type).to be(:war) + end + end + + describe '#winner' do + it 'determines the winner of the war turn type' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card4, card3, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + expect(turn.type).to be(:war) + expect(turn.winner).to eq(player2) + end + end + + describe '#pile_cards'do + it 'adds cards to the spoils_of_war array for the war turn type' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card4, card3, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + turn.pile_cards + + expect(turn.spoils_of_war).to eq([card1, card2, card5, card4, card3, card6]) + end + end + + describe '#award_spoils' do + it 'Adds cards from spoils_of_war array to the winner of the war turn type deck' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, 'Queen', 12) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card4, card3, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + winner = turn.winner + turn.pile_cards + turn.award_spoils(winner) + + expect(player1.deck.cards).to eq([card8]) + expect(player2.deck.cards).to eq([card7, card1, card2, card5, card4, card3, card6]) + end + end + end + + describe 'Mutually_Assured_Destruction Turn' do + describe '#type' do + it 'creates a mutually_assured_destruction turn type' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, '8', 8) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card4, card3, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + expect(turn.type).to be(:mutually_assured_destruction) + end + end + + describe '#winner' do + it 'determines the winner of the mutually_assured_destruction turn type' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, '8', 8) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card4, card3, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + expect(turn.winner).to eq("No Winner") + end + end + + describe '#pile_cards' do + it 'deletes first three cards from each players deck when there is no winner' do + card1 = Card.new(:heart, 'Jack', 11) + card2 = Card.new(:heart, '10', 10) + card3 = Card.new(:heart, '9', 9) + card4 = Card.new(:diamond, 'Jack', 11) + card5 = Card.new(:heart, '8', 8) + card6 = Card.new(:diamond, '8', 8) + card7 = Card.new(:heart, '3', 3) + card8 = Card.new(:diamond, '2', 2) + + deck1 = Deck.new([card1, card2, card5, card8]) + deck2 = Deck.new([card4, card3, card6, card7]) + + player1 = Player.new("Megan", deck1) + player2 = Player.new("Aurora", deck2) + + turn = Turn.new(player1, player2) + + turn.pile_cards + + expect(turn.spoils_of_war).to eq([]) + expect(player1.deck.cards).to eq([card8]) + expect(player2.deck.cards).to eq([card7]) + end + end + end +end + diff --git a/war_or_peace_runner.rb b/war_or_peace_runner.rb new file mode 100644 index 000000000..f636af73e --- /dev/null +++ b/war_or_peace_runner.rb @@ -0,0 +1,48 @@ +require 'rspec' +require './lib/card' +require './lib/deck' +require './lib/player' +require './lib/turn' +require './lib/game' + + +suits = [:heart, :diamond, :spade, :club] + +deck_of_all_cards = [] + +suits.each do |suit| + deck_of_all_cards << Card.new(suit, "2", 2) + deck_of_all_cards << Card.new(suit, "3", 3) + deck_of_all_cards << Card.new(suit, "4", 4) + deck_of_all_cards << Card.new(suit, "5", 5) + deck_of_all_cards << Card.new(suit, "6", 6) + deck_of_all_cards << Card.new(suit, "7", 7) + deck_of_all_cards << Card.new(suit, "8", 8) + deck_of_all_cards << Card.new(suit, "9", 9) + deck_of_all_cards << Card.new(suit, "10", 10) + deck_of_all_cards << Card.new(suit, "Jack", 11) + deck_of_all_cards << Card.new(suit, "Queen", 12) + deck_of_all_cards << Card.new(suit, "King", 13) + deck_of_all_cards << Card.new(suit, "Ace", 14) + deck_of_all_cards.shuffle! +end + +deck1 = Deck.new(deck_of_all_cards.shift(26)) +deck2 = Deck.new(deck_of_all_cards.shift(26)) + +player1 = Player.new('Megan', deck1) +player2 = Player.new('Aurora', deck2) + +turn = Turn.new(player1, player2) +game = Game.new(player1, player2, turn) + + + +p "Welcome to War! (or Peace) This game will be played with 52 cards." +p "The players today are Megan and Aurora." +p "Type 'GO' to start the game!" +p "------------------------------------------------------------------" + +if gets.chomp == "GO" + game.start +end