Created
May 1, 2012 20:02
-
-
Save worthlesscog/2570957 to your computer and use it in GitHub Desktop.
Cards and Suits
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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