小编Cam*_*ley的帖子

如何使用F#处理卡片

我一直致力于使用F#对流行的纸牌游戏(情书)进行建模,以了解有关函数式编程的更多信息.

module Game = 
open Cards
open Players

type Deck = Card list

let dealACard (deck:Deck) = 
    let randomGenerator = System.Random()
    let index = randomGenerator.Next deck.Length
    let card = deck.Item index
    (card, (deck |> List.filter((<>) card)))

let createPlayer playerNumber deck =
    let card, newDeck = dealACard deck
    ({cards=[card]; playerNumber=playerNumber}, newDeck)
Run Code Online (Sandbox Code Playgroud)

我一直做得很好,直到我知道如何模拟如何绘制卡片.为了测试这个,我想从牌组中抽出所有牌.我的程序看起来像这样:

let deck = createDeck
while not deck.IsEmpty do
    let card, newDeck = dealACard deck
    // print the card
    // how do I update the deck?
Run Code Online (Sandbox Code Playgroud)

任何帮助或反馈都会很棒.

f# functional-programming

4
推荐指数
2
解决办法
563
查看次数

如何在F#中建模绘图卡

我正在建模如何从牌组中绘制一张扑克牌,我想出了以下解决方案:

type Card = { Value:int }
type Deck = Card list
type Player = { Hand : Card list }

type CardDrawer(deck) =
     let mutable deck = deck
     member this.drawCard () =
          match deck with
          | h::t ->
               deck <- t
               h
     member this.getDeck () = deck

//Example Usage
let createPlayers deck numPlayers =
     let cardDrawer = new CardDrawer(deck)
     let drawCard = cardDrawer.drawCard
     let createPlayer drawCard =
         let hand = [drawCard(); drawCard()]
         {Hand=hand}

     ([1 .. numPlayers] |> List.map(fun _ …
Run Code Online (Sandbox Code Playgroud)

f#

2
推荐指数
1
解决办法
142
查看次数

标签 统计

f# ×2

functional-programming ×1