1 implementation module Referee
7 // When coding for all referees, include following modules:
8 import RefereeCoach_Rounds_Assignment
9 import RefereeCoach_Slalom_Assignment
10 import RefereeCoach_Passing_Assignment
11 import RefereeCoach_DeepPass_Assignment
12 import RefereeCoach_Keeper_Assignment
14 allAvailableReferees :: [FootballField -> Referee]
15 allAvailableReferees = [ umpire, NoReferee ]
16 // When coding for all referees, use following list:
20 , RefereeCoach_Passing
21 , RefereeCoach_DeepPass
25 instance nameOf Referee where nameOf {Referee | name} = name
27 defaultReferee :: Referee
28 defaultReferee = { name = "Default"
29 , brain = {memory = Void,ai = \(_,st) -> ([ContinueGame],st)}
33 defaultImage :: !Match !RefereeAction !*env -> (!Bitmap,!*env) | FileSystem env
34 defaultImage match action env
35 # bitmapf = case action of
36 (ReprimandPlayer _ r) = "ivanov_" +++ reprimandf r +++ ".bmp"
37 (Hands _) = "hands.bmp"
38 (OwnBallIllegally _) = "ivanov_badluck.bmp"
39 (TellMessage _) = "ivanov_look.bmp"
40 (DirectFreeKick _ p) = ivanovf (p.px < zero)
41 (GoalKick h) = ivanovf (h == West)
42 (Corner h _) = ivanovf (h == West)
43 (ThrowIn h _) = ivanovf (h == West)
44 (Penalty h) = ivanovf (h == West)
45 (Advantage _) = "ivanov_badluck.bmp"
46 _ = "ivanov_fluit.bmp"
47 = case openBitmap ("afbeeldingen\\" +++ bitmapf) env of
48 (Just bm,env) = (bm,env)
49 nothing = abort "defaultImage: unable to load default picture.\n"
51 reprimandf r = case r of
55 ivanovf left = "ivanov_wijst_" +++ if left "links" "rechts" +++ ".bmp"
57 defaultSoundFile :: !RefereeAction -> Maybe String
58 defaultSoundFile action = if (soundfilename == "") Nothing (Just ("sound\\"+++soundfilename))
60 soundfilename = defaultSoundFileName action
62 defaultSoundFileName (Hands _) = "stopBecauseOfFoul.wav"
63 defaultSoundFileName (TackleDetected _) = "tackles_ed.wav"
64 defaultSoundFileName (DangerousPlay _) = "tackles_ed.wav"
65 defaultSoundFileName GameOver = "endGameOrHalf.wav"
66 defaultSoundFileName (GameCancelled _) = "endGameOrHalf.wav"
67 defaultSoundFileName EndHalf = "endGameOrHalf.wav"
68 defaultSoundFileName (Offside _) = "offside.wav"
69 defaultSoundFileName (GoalKick _) = "ballOut.wav"
70 defaultSoundFileName (Corner _ _) = "ballOut.wav"
71 defaultSoundFileName (ThrowIn _ _) = "ballOut.wav"
72 defaultSoundFileName (Goal _) = "CenterKick.wav"
73 defaultSoundFileName (OwnBallIllegally _) = "wrongPosition2restartFrom.wav"
74 defaultSoundFileName _ = ""
76 randomlessRefereeAI :: (RefereeAI msg memory) -> RefereeAI msg (memory,RandomSeed)
77 randomlessRefereeAI f = \(input,(memory,seed)) = let (decisions,memory`) = f (input,memory) in (decisions,(memory`,seed))
79 amnesiaRefereeAI :: (RefereeAI msg RandomSeed) -> RefereeAI msg (memory,RandomSeed)
80 amnesiaRefereeAI f = \(input,(memory,seed)) = let (decisions,seed`) = f (input,seed) in (decisions,(memory,seed`))
82 witlessRefereeAI :: (RefereeAI` msg) -> RefereeAI msg (memory,RandomSeed)
83 witlessRefereeAI f = \(input,state) = (f input,state)