(整理)用Elixir做一个多人扑克游戏 1
原文 学习一门新的语言或框架,最好的方法就是做一些小项目。Elixir和Phoenix很适合用来做扑克应用。 洗牌 我们要做的是德州扑克,首先,需要牌组: defmodule Poker.Deck do defmodule Card do defstruct [:rank, :suit] end def new do for rank <- ranks, suit <- suits do %Card{rank: rank, suit: suit} end |> Enum.shuffle end defp ranks, do: Enum.to_list(2..14) defp suits, do: [:spades, :clubs, :hearts, :diamonds] end 我们定义了一个能够给出一套洗好了的52张牌的new函数。for结构非常适合做这种数值与花色的组合。 有趣的模式匹配 defmodule Poker.Ranking do def evaluate(cards) do cards |> Enum.map(&to_tuple/1) |> Enum.sort |> eval end defp to_tuple( %Poker.Deck.Card{rank: rank, suit: suit} ), do: {rank, suit} defp eval( [{10,