3 import scala
.collection
._
5 object Ergebnis
extends Enumeration
{
6 val WirftAb
, Bedient
, Ueberbietet
, Sticht
= Value
7 def gewinnt(ergebnis
: Value
) = ergebnis
.id
> 1
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
))