# marking-pattern.clang # Suggested for the RoboCup Coach Competition 2005. # # Coachable Used: Caspian # # Pattern Description: The defenders (i.e. players 2, 3, 5) mark the # attacking opponents. Player no. 2 marks the attacker advancing from # the lower part of the field, player no. 5 marks the attacker advancing # from the upper part of the field, and player no. 3 marks the ball owning # attacker advancing the goal. # ################################################################### # The CLang statements ################################################################### # Region Definitions (say (define (definer "OurHalf" (rec (pt -52.5 -34) (pt 0 34))))) (say (define (definer "OurHalfNear" (rec (pt -52.5 -34) (pt -30 34))))) (say (define (definer "OurHalfNearDown" (rec (pt -52.5 0) (pt -30 34))))) (say (define (definer "OurHalfNearUp" (rec (pt -52.5 0) (pt -30 -34))))) (say (define (definer "OurHalfFar" (rec (pt -30 -34) (pt 0 34))))) (say (define (definer "OppHalf" (rec (pt 0 -34) (pt 52.5 34))))) # Home Positionings (say (define (definerule RULE_HOME2 direc ((true) (do our {2} (home (pt -20 16))))))) (say (define (definerule RULE_HOME3 direc ((true) (do our {3} (home (pt -21 0))))))) (say (define (definerule RULE_HOME4 direc ((true) (do our {4} (home (pt -13 7))))))) (say (define (definerule RULE_HOME5 direc ((true) (do our {5} (home (pt -20 -16))))))) (say (define (definerule RULE_HOME6 direc ((true) (do our {6} (home (pt -13 -7))))))) (say (define (definerule RULE_HOME7 direc ((true) (do our {7} (home (pt -5 13))))))) (say (define (definerule RULE_HOME8 direc ((true) (do our {8} (home (pt -5 -13))))))) (say (define (definerule RULE_HOME9 direc ((true) (do our {9} (home (pt -2 0))))))) (say (define (definerule RULE_HOME10 direc ((true) (do our {10} (home (pt -1 22))))))) (say (define (definerule RULE_HOME11 direc ((true) (do our {11} (home (pt -1 -22))))))) # Overall Behavior in Our Half and also in "OurHalfFar" for the Defenders (say (define (definerule DEF_2_POS direc ((and (playm play_on)(bpos "OurHalfFar")) (do our {2} (pos (((pt ball)*(pt 0.8 0.4)) +(pt -6.0 10.0 )))))))) (say (define (definerule DEF_5_POS direc ((and (playm play_on)(bpos "OurHalfFar")) (do our {5} (pos (((pt ball)*(pt 0.8 0.4)) +(pt -6.0 -10.0 )))))))) (say (define (definerule DEF_3_POS direc ((and (playm play_on)(bpos "OurHalfFar")) (do our {3} (pos (((pt ball)*(pt 0.8 0.4)) +(pt -7.0 0.0 )))))))) (say (define (definerule DEF_4_POS direc ((and (playm play_on)(bpos "OurHalf")) (do our {4} (pos (((pt ball)*(pt 0.6 0.4)) +(pt -4.0 5.0 )))))))) (say (define (definerule DEF_6_POS direc ((and (playm play_on)(bpos "OurHalf")) (do our {6} (pos (((pt ball)*(pt 0.6 0.4)) +(pt -4.0 -5.0 )))))))) (say (define (definerule DEF_7_POS direc ((and (playm play_on)(bpos "OurHalf")) (do our {7} (pos (((pt ball) * (pt 0.4 0.30)) + (pt -4 18)))))))) (say (define (definerule DEF_8_POS direc ((and (playm play_on)(bpos "OurHalf")) (do our {8} (pos (((pt ball) * (pt 0.4 0.30)) + (pt -4 -18)))))))) (say (define (definerule DEF_9_POS direc ((and (playm play_on)(bpos "OurHalf")) (do our {9} (pos (((pt ball) * (pt 0.0 0.25)) + (pt 2.0 0.0)))))))) (say (define (definerule DEF_10_POS direc ((and (playm play_on)(bpos "OurHalf")) (do our {10} (pos (((pt ball) * (pt 0.0 0.30)) + (pt 3.0 17.0)))))))) (say (define (definerule DEF_11_POS direc ((and (playm play_on)(bpos "OurHalf")) (do our {11} (pos (((pt ball) * (pt 0.0 0.30)) + (pt 3.0 -17.0)))))))) # Overall Behavior in Opp Half (say (define (definerule OFF_2_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {2} (pos (((pt ball)*(pt 0.0 0.4)) +(pt -15.0 6.0 )))))))) (say (define (definerule OFF_5_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {5} (pos (((pt ball)*(pt 0.0 0.4)) +(pt -15.0 -6.0 )))))))) (say (define (definerule OFF_3_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {3} (pos (((pt ball)*(pt 0.0 0.4)) +(pt -10.0 0.0 )))))))) (say (define (definerule OFF_4_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {4} (pos (((pt ball)*(pt 0.4 0.4)) +(pt 4.0 5.0 )))))))) (say (define (definerule OFF_6_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {6} (pos (((pt ball)*(pt 0.4 0.4)) +(pt 4.0 -5.0 )))))))) (say (define (definerule OFF_7_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {7} (pos (((pt ball) * (pt 0.6 0.40)) + (pt 5 18)))))))) (say (define (definerule OFF_8_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {8} (pos (((pt ball) * (pt 0.6 0.40)) + (pt 5 -18)))))))) (say (define (definerule OFF_9_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {9} (pos (((pt ball) * (pt 0.8 0.5)) + (pt 6.0 0.0)))))))) (say (define (definerule OFF_10_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {10} (pos (((pt ball) * (pt 0.8 0.5)) + (pt 6.0 6.0)))))))) (say (define (definerule OFF_11_POS direc ((and (playm play_on)(bpos "OppHalf")) (do our {11} (pos (((pt ball) * (pt 0.8 0.5)) + (pt 6.0 -6.0)))))))) # The Pattern (say (define (definerule RULE_MARK1 direc ((and (bpos "OurHalfNear") (ppos opp {X} 1 10 "OurHalfNearUp")) (do our {5} (markl {X})))))) (say (define (definerule RULE_MARK2 direc ((and (bpos "OurHalfNear") (ppos opp {X} 1 10 "OurHalfNearDown")) (do our {2} (markl {X})))))) (say (define (definerule RULE_MARK3 direc ((and (bpos "OurHalfNear") (bowner opp {X})) (do our {3} (markl {X})))))) (say (rule (on all)))