initial team
[fp1415-soccerfun.git] / src / Team_MartLubbers.icl
1 implementation module Team_MartLubbers
2
3 import Footballer
4 import FootballerFunctions
5
6 Names:: [String]
7 Names = [
8 "Balder",
9 "Njord",
10 // "Freyr",
11 "Freyja",
12 "Tyr",
13 "Bragi",
14 "Heimdall",
15 "Hoder",
16 "Vidar",
17 "Vale",
18 "Ullr",
19 "Forseti"]
20
21 Team_MartLubbers :: !Home !FootballField -> Team
22 Team_MartLubbers home field
23 | home==West = westTeam
24 | otherwise = eastTeam
25 where
26 eastTeam = mirror field westTeam
27 westTeam = [keeper : fielders]
28 clubname = base_TeamName_MartLubbers +++ if (home == West) "_W" "_E"
29 keeper = Aesir clubname home field {zero & px=scale -0.5 field.flength} 1 "Thor"
30 fielders = [Aesir clubname home field {px=scale (-0.5*dx) field.flength,py=scale (0.5*dy) field.fwidth} nr name
31 \\ (dx,dy) <- west_positions_fielders
32 & nr <- [2..]
33 & name <- Names
34 ]
35 west_positions_fielders = [(0.20, 0.40)
36 ,(0.20,-0.40)
37 ,(0.23, 0.00)
38 ,(0.50, 0.45)
39 ,(0.50,-0.45)
40 ,(0.60, 0.00)
41 ,(0.70, 0.35)
42 ,(0.70,-0.35)
43 ,(0.90, 0.05)
44 ,(0.90,-0.05)
45 ]
46
47 :: Mem :== Void
48
49 Aesir :: !ClubName !Home !FootballField !Position !PlayersNumber !String -> Footballer
50 Aesir club home field position nr name
51 = { playerID = {clubName=club,playerNr=nr}
52 , name = name +++ "_" <+++ nr
53 , length = min_length
54 , pos = position
55 , nose = zero
56 , speed = zero
57 , skills = (Running, Kicking, Rotating)
58 , effect = Nothing
59 , stamina = max_stamina
60 , health = max_health
61 , brain = {memory = zero, ai = mind field }
62 }
63
64 mind :: !FootballField !(!BrainInput, !Mem) -> (!BrainOutput, !Mem)
65 mind field (input, mm)
66
67 afterfix after point diff (input=:{me}, m)
68 | d < diff = after (input, m)
69 | otherwise = (move, m)
70 where
71 d = dist me point
72 a = bearing zero me point
73 r = bearing me.nose me point
74 v = ms (max 6.0 (toReal d))
75
76 base_TeamName_MartLubbers :: String
77 base_TeamName_MartLubbers = "Æsir"