Erster Stand
[doko.git] / src / main / scala / doko / model / Regeln.scala
blob7e3a32931c0380f9578c12ef9e01af4eaf371dc7
1 package doko.model
3 import scala.collection._
5 object Ergebnis extends Enumeration {
6 val WirftAb, Bedient, Ueberbietet, Sticht = Value
7 def gewinnt(ergebnis: Value) = ergebnis.id > 1
10 object Regeln {
11 type Regel = (Karte, Karte) => Option[Ergebnis.Value]
14 class Regeln(regeln: Seq[Regeln.Regel]) extends ((Karte, Karte) => Ergebnis.Value) {
16 def apply(erste: Karte, zweite: Karte): Ergebnis.Value =
17 regeln.iterator.map(_(erste, zweite)).find(_.isDefined) match {
18 case Some(Some(ergebnis)) => ergebnis
19 case _ => error("rules did not apply to " + (erste, zweite))
22 def zweiterGewinnt(erste: Karte, zweite: Karte) =
23 Ergebnis.gewinnt(this(erste, zweite))