% FILE: demos.pl % LINE: Defines all components related to a player: name, melds, hand, score, % DATE: February 20, 2021 demo1 :- deck(D), draw(D, Card), write("CARD REPRESENTATION: "), write(Card), nl, nl, write("DECK REPRESENTATION: "), write(D), nl, nl, write("SHUFFLING DECK!"), nl, shuffle(D, NewDeck), write("UPDATED DECK: "), write(NewDeck), nl, nl, discard_pile(Discard), write("DISCARD REPRESENTATION: "),write(Discard), nl, nl, write("DEALING ONTO DISCARD!"), nl, deal_discard(D, NDeck, NewDiscard), write("DISCARD PILE: "), write(NewDiscard), nl, nl, write("REMAINING DECK: "), write(NDeck). demo2 :- deck(D), player((player1, Hand1, Meld1, Score1)), player((player2, Hand2, Meld2, Score2)), init_rummy(D, (player1, Hand1, Meld1, Score1), (player2, Hand2, Meld2, Score2), _). demo3 :- deck(D), player((player1, Hand1, _, _)), draw_from_deck(D, NewDeck, Hand1, NewHand1), write("Player1 Hand = "), write(NewHand1), nl, nl, write("Updated Deck = "), write(NewDeck). demo4 :- write("Trying: "),write("[card(ace, spades, 1), card(ace, clubs, 1), card(ace, hearts, 1)]"), nl, find_three_of_a_kind([card(ace, spades, 1), card(ace, clubs, 1), card(ace, hearts, 1)], [card(ace, spades, 1), card(ace, clubs, 1), card(ace, hearts, 1)], [], Meld, NewHand), write("Meld = "), write(Meld), nl, write("Updated hand = "), write(NewHand), nl, nl, write("Trying: "),write("[card(ace, spades, 1), card(four, clubs, 4), card(ace, clubs, 1), card(jack, diamonds, 11), card(ace, hearts, 1)]"), nl, find_three_of_a_kind([card(ace, spades, 1), card(four, clubs, 4), card(ace, clubs, 1), card(jack, diamonds, 11), card(ace, hearts, 1)], [card(ace, spades, 1), card(four, clubs, 4), card(ace, clubs, 1), card(jack, diamonds, 11), card(ace, hearts, 1)], [], Meld2, NewHand2), write("Meld = "), write(Meld2), nl, write("Updated hand = "), write(NewHand2), nl, nl, write("Trying: "),write("[card(ace, spades, 1), card(two, clubs, 2), card(three, clubs, 3), card(four, diamonds, 4), card(five, hearts, 5)]"), nl, find_three_of_a_kind([card(ace, spades, 1), card(two, clubs, 2), card(three, clubs, 3), card(four, diamonds, 4), card(five, hearts, 5)], [card(ace, spades, 1), card(two, clubs, 2), card(three, clubs, 3), card(four, diamonds, 4), card(five, hearts, 5)], [], Meld3, NewHand3), write("Meld = "), write(Meld3), nl, write("Updated hand = "), write(NewHand3), nl, nl. demo5 :- deck(D), player((player1, Hand1, _, _)), player((player2, Hand2, _, _)), init_rummy(D, (player1, Hand1, _, _), (player2, Hand2, _, _), DiscardPile, _, (_, NH1, _, _), (_, _, _, _)), write("Hand before discard = "), write(NH1), nl, write("Discard pile before discard = "), write(DiscardPile), nl, nl, discard(NH1, DiscardPile, UpdateHand, UpdateDiscard), write("Hand after discard = "), write(UpdateHand), nl, write("Discard pile after discard = "), write(UpdateDiscard), nl. demo6 :- deck(D), player((player1, Hand1, _, _)), player((player2, Hand2, _, _)), init_rummy(D, (player1, Hand1, _, _), (player2, Hand2, _, _), DiscardPile, _, (_, NH1, _, _), (_, _, _, _)), write("Hand before discard = "), write(NH1), nl, write("Discard pile before discard = "), write(DiscardPile), nl, nl, random_discard(NH1, DiscardPile, UpdateHand, UpdateDiscard), write("Hand after discard = "), write(UpdateHand), nl, write("Discard pile after discard = "), write(UpdateDiscard), nl. human_readable_demo :- deck(D), human_readable(D, NewDeck), write("Before Human Readable: "), write(D), nl, nl, write("Human Readable Version: "), write(NewDeck). demo7 :- deck(D), player((player1, Hand1, Melds1, _)), player((player2, Hand2, Melds2, _)), init_rummy(D, (player1, Hand1, _, _), (player2, Hand2, _, _), DiscardPile, NewDeck, (_, NH1, _, _), (_, NH2, _, _)), take_turn_basic((player1, NH1, Melds1, _), NewDeck, DiscardPile, (_, _, _, _), UpdateDeck, UpdateDiscard), take_turn_basic((player2, NH2, Melds2, _), UpdateDeck, UpdateDiscard, (_, _, _, _), _, _). demo8 :- play_rummy. demo9 :- calculate_score((_, [card(king, hearts, 13)], [[card(seven, diamonds, 7), card(seven, hearts, 7), card(seven, clubs, 7)]], 0), ((_, [card(jack, diamonds, 11)], [], 0)), Player1Score, Player2Score), write("Player1 Hand: [card(king, hearts, 13)]"), nl, write("Player1 Melds: [[card(seven, diamonds, 7), card(seven, hearts, 7), card(seven, clubs, 7)]]"), nl, write("Player2 Hand: [card(jack, diamonds, 11)]"), nl, write("Player2 Melds: []"), nl, write("Player 1 Score: "), write(Player1Score), nl, write("Player 2 Score: "), write(Player2Score), nl, nl, calculate_score((_, [card(king, hearts, 13), card(three, spades, 3), card(five, hearts, 5), card(jack, diamonds, 11)], [[card(seven, diamonds, 7), card(seven, hearts, 7), card(seven, clubs, 7)], [card(queen, diamonds, 12), card(queen, hearts, 12), card(queen, spades, 12), card(queen, clubs, 12)]], 0), ((_, [card(jack, diamonds, 11), card(four, hearts, 4), card(seven, spades, 7)], [[card(seven, diamonds, 7), card(eight, diamonds, 8), card(nine, diamonds, 9)], [card(jack, clubs, 12), card(queen, clubs, 12), card(king, clubs, 13)]], 0)), Player1Score2, Player2Score2), write("Player1 Hand: [card(king, hearts, 13), card(three, spades, 3), card(five, hearts, 5), card(jack, diamonds, 11)]"), nl, write("Player1 Melds: [[card(seven, diamonds, 7), card(seven, hearts, 7), card(seven, clubs, 7)], [card(queen, diamonds, 12), card(queen, hearts, 12), card(queen, spades, 12), card(queen, clubs, 12)]]"), nl, write("Player2 Hand: [card(jack, diamonds, 11), card(four, hearts, 4), card(seven, spades, 7)]"), nl, write("Player2 Melds: [[card(seven, diamonds, 7), card(eight, diamonds, 8), card(nine, diamonds, 9)], [card(jack, clubs, 12), card(queen, clubs, 12), card(king, clubs, 13)]]"), nl, write("Player 1 Score: "), write(Player1Score2), nl, write("Player 2 Score: "), write(Player2Score2). demo10 :- find_run([card(ace, diamonds, 1), card(two, diamonds, 2), card(two, spades, 2), card(three, diamonds, 3)], NewHand, [diamonds, clubs, hearts, spades], [[card(seven, diamonds, 7), card(seven, clubs, 7), card(seven, hearts, 7)]], NewMelds), human_readable([card(ace, diamonds, 1), card(two, diamonds, 2), card(two, spades, 2), card(three, diamonds, 3)], HRHand), write("Original Hand: "), write(HRHand), nl, human_readable_melds(NewMelds, HRNewMelds), write("Meld Found: "), write(HRNewMelds), nl, human_readable(NewHand, HRNewHand), write("Remaining Hand: "), write(HRNewHand), nl, nl, find_run([card(ace, clubs, 1), card(two, diamonds, 2), card(two, spades, 2), card(three, diamonds, 3)], NewHand2, [diamonds, clubs, hearts, spades], [[card(seven, diamonds, 7), card(seven, clubs, 7), card(seven, hearts, 7)]], NewMelds2), human_readable([card(ace, clubs, 1), card(two, diamonds, 2), card(two, spades, 2), card(three, diamonds, 3)], HRHand2), write("Original Hand: "), write(HRHand2), nl, human_readable_melds(NewMelds2, HRNewMelds2), write("Meld Found: "), write(HRNewMelds2), nl, human_readable(NewHand2, HRNewHand2), write("Remaining Hand: "), write(HRNewHand2). demo11 :- play_entire_game_sets(0, 0). demo12 :- play_entire_game_runs(0, 0). demo13 :- play_entire_game_one_of_each(0, 0). demo14 :- play_rummy_both. demo15 :- play_entire_game_both(0, 0).