Hearts Card Game Assignment

From CSE425S Wiki
Revision as of 04:56, 5 October 2020 by Dennis.cosgrove (talk | contribs)
Jump to navigation Jump to search

Instructions

Code To Implement

Given these type definitions:

datatype suit = Clubs | Diamonds | Hearts | Spades
datatype rank = Jack | Queen | King | Ace | Num of int 
type card = suit * rank
type player = card list

cards

is_card_valid

Define a function is_card_valid which accepts a card parameter. is_card_valid should evaluate to false if the int value of the Num constructor is less than 2 or greater than 10. Otherwise, it should evaluate to true

are_all_cards_valid

Define a function are_all_cards_valid which accepts a card list parameter. are_all_cards_valid should evaluate to false if any of the cards in the list are invalid, and true otherwise. Note: the empty list is valid.

are_all_cards_valid may be tail-recursive or not at your preference.

hearts

From here on you will no longer need to concern yourself with invalid cards.

Hearts is an trick-taking card game. Further, Hearts is an "evasion-type" card game where the objective is to avoid taking positive penalty point cards. The Queen of Spades as well as each and every Heart are positive penalty point cards. Therefore, players attempt to avoid taking those cards. The Jack of Diamonds is the one favorable card players strive to take (it is worth negative penalty points). For simplicity, we will ignore a common variation which involves a player "shooting the moon" by taking all of the positive penalty point cards.

For the remainder of this assignment you will write code to calculate scores, count the number of cards, as well as detect possible shenanigans of a player/players not turning in all of their penalty point cards.

Note: "shenanigans" are devious tricks used especially for an underhand purpose.

card_score

Define a function card_score which accepts a card parameter. card_score should evaluate to the int point value of the card as specified below:

The Queen of Spades: 13 points Each Heart: 1 point The Jack of Diamonds: minus 10 points All other cards: 0 points

Recall: ~ is the unary minus operator in SML.