Snippets

Cameron Presley Example Model definition for Love Letter

Created by Cameron Presley last modified Cameron Presley
    type CardType =
        | Guard
        | Priest
        | Baron
        | Handmaid
        | Prince
        | King
        | Countess
        | Princess

    type Card = {power:int; cardType:CardType}

    let guard = {power=1; cardType=CardType.Guard}
    let priest = {power=2; cardType=CardType.Priest}
    let baron = {power=3; cardType=CardType.Baron}
    let handmaid = {power=4; cardType=CardType.Handmaid}
    let prince = {power=5; cardType=CardType.Prince}
    let king = {power=6; cardType=CardType.King}
    let countess = {power=7; cardType=CardType.Countess}
    let princess = {power=8; cardType=CardType.Princess}

    let seedDeckWithType x = 
        match x with
        | Guard -> [guard; guard; guard; guard;]
        | Priest -> [priest; priest]
        | Baron -> [baron; baron]
        | Handmaid -> [handmaid; handmaid]
        | Prince -> [prince; prince]
        | King -> [king]
        | Countess -> [countess]
        | Princess -> [princess]

    let seedDeck() =
        let types = [Guard; Priest; Baron; Handmaid; Prince; King; Countess; Princess]
        List.collect (fun x -> seedDeckWithType x) types

    let deck = seedDeck
    
    let grabARandomCard (deck: Card list) = 
        let randomGenerator = System.Random()
        let index = randomGenerator.Next deck.Length
        deck.Item index

    let show x =
        deck.Item x

    let writeCard x =
        printfn "%A with a power of %i" x.cardType x.power

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.