slalom done, need to clean up
authorMart Lubbers <mart.lubbers@mpi.nl>
Mon, 8 Jun 2015 10:11:37 +0000 (12:11 +0200)
committerMart Lubbers <mart.lubbers@mpi.nl>
Mon, 8 Jun 2015 10:11:37 +0000 (12:11 +0200)
src/SoccerFun.prj
src/SoccerFun_options.txt [changed mode: 0644->0755]
src/StdTeam/Team_Student_Slalom_Assignment.icl [changed mode: 0644->0755]

index daf6db4..c1e0db6 100755 (executable)
@@ -1,7 +1,7 @@
 Version: 1.4\r
 Global\r
        ProjectRoot:    .\r
-       Built:  False\r
+       Built:  True\r
        Target: SoccerFun64\r
        Exec:   {Project}\SoccerFun.exe\r
        CodeGen\r
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index a77671d..94bf10c
@@ -17,7 +17,20 @@ where
        team                                            = [{footballer {clubName=club,playerNr=2} & pos = if (home == West) position (mirror field position)}]\r
        club                                            = base_TeamName_Student_Slalom +++ if (home == West) "_W" "_E"\r
        position                                        = {zero & px = scale -0.5 field.flength + penalty_area_depth}\r
-       footballer player_id            = defaultFootballer player_id   // implement your footballer here\r
+       footballer player_id            = {defaultFootballer player_id & name = "Peter88", brain = {memory = Void, ai =  mind field home}}\r
 \r
 base_TeamName_Student_Slalom :: String\r
 base_TeamName_Student_Slalom   = "Student Slalom"\r
+\r
+mind :: !FootballField !Home !(!BrainInput, !Void) -> (!BrainOutput, !Void)\r
+mind field home (x=:{me,others}, mm) = (fix {px=pp2 cp.px (m 2.5), py=up cp.py (m 3.5)} (m 1.0)) (x, mm)\r
+       where\r
+               (comparator, pp1, pp2, targetsig) = if (home == West) ((<), (-), (+), (\w.w)) ((>), (+), (-), (~))\r
+               sf = sortBy (\x y.comparator x.pos.px y.pos.px) others\r
+               (cp, up) = closestPos (zip2 [1..] sf) (pp1 me.pos.px xWidthFootballer) {px=targetsig (scale 0.5 field.flength), py=(m 0.0)} comparator\r
+               \r
+closestPos :: [(Int, Footballer)] Metre Position (Metre Metre -> Bool) -> (Position, (Metre Metre -> Metre))\r
+closestPos [] _ d _ = (d, (+))\r
+closestPos [(i, x):xs] p d c\r
+| c p x.pos.px = (x.pos, if (i rem 2 == 0) (+) (-))\r
+| otherwise = closestPos xs p d c\r