Skip to content

Instantly share code, notes, and snippets.

@worthlesscog
Created May 1, 2012 20:02
Show Gist options
  • Save worthlesscog/2570957 to your computer and use it in GitHub Desktop.
Save worthlesscog/2570957 to your computer and use it in GitHub Desktop.
Cards and Suits
import Rank.{ _ }
import Suit.{ _ }
class Rank(val faceValues: Int*) {
def of(suit: Suit) = Card(this, suit)
}
object Rank {
case object Ace extends Rank(1, 11)
case object Two extends Rank(2)
case object Three extends Rank(3)
case object Four extends Rank(4)
case object Five extends Rank(5)
case object Six extends Rank(6)
case object Seven extends Rank(7)
case object Eight extends Rank(8)
case object Nine extends Rank(9)
case object Ten extends Rank(10)
case object Jack extends Rank(10)
case object Queen extends Rank(10)
case object King extends Rank(10)
val values = Set(Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King)
}
class Suit
object Suit {
case object Clubs extends Suit
case object Diamonds extends Suit
case object Hearts extends Suit
case object Spades extends Suit
val values = Set(Clubs, Diamonds, Hearts, Spades)
}
case class Card(rank: Rank, suit: Suit) {
override def toString = rank + " of " + suit
}
object Cards {
def main(args: Array[String]): Unit = {
val deck = for (r ← Rank.values; s ← Suit.values) yield r of s
val c = Ace of Spades
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment