The Secret Soccer Strategies
of the Interrupting Cows
Who we are:
The Interrupting Cows are an ASCII Soccer team created for CS4324. They
were developed on the premise that it is possible to plan (and code)
successful soccer strategies. These strategies will succeed without the
team having the ability to make on-the-fly changes. (This is much like
the coach having the absolute say-so; there is no way for the players to
disregard the plays when on the field). Unfortunately for all those
soccer players out there, we hope to show that the coach does
know best.
For the purposes of this explanation, the goals are at the east and west
ends of the field. Assume that the Interrupting Cows are always moving
from the East to the West.
There are four positions, two offense and two defense. The players
switch position depending on who is closest to the ball. The two closest
players play offense, and the two players farther out play defense. A
player's position is determined at the beginning of each turn. This
algorithm maximizes the capabilities of the players to work together as a
team. Instead of the players attempting to keep up with the ball
(difficult because the ball moves faster than they do), the closest
player assumes the roll of aggressive forward, while the further players
take the defensive roles.
The advantage here is that if a player that was once defensive is now in
the lead with the ball, it will charge, and another will take over defense
automatically.
Vision
We can find out nearly exactly where the ball is to get an accurate
distance measurement in addition to an angle, which will be used for the
player strategies. We know wedges of visibilities from the ball angles,
and we can composite multiple wedges to get a better guess. Of course,
the ball may have moved then, so we use fuzzy balls to move into a
superposition of states. In the event that we get an exact sighting, then
the wonderful laws of quantum mechanics come in, and the ball cannot be
elsewhere. We identify an exact ball position for the players' strategies
by picking randomly from the weighted fuzzy balls.
Offensive Strategy
We have two players dedicated to offense at all times. Their chief goal
is to get to
the ball. The closest player to the ball moves in the direction of the
ball but also tries to always stay east of it (this is to enable the
player to kick the ball in the proper direction once he (she) arrives at
the
ball's location). The second closest player moves towards the ball if it
is greater than half the kick distance away. (Kick distance is the
definition of how far the ball will travel if unobstructed when kicked.
This is defined by the main soccer program.) If it is not,
then it will go towards the ball and align itself in a flanking position.
The flanking position we use has the player further away stay a little
back and to the side of the front player.
This helps to protect against break aways by the other team and allows
for
support of the closer player.
Our players only employ a more refined strategy when they can
actually see the ball. (The ball can only be seen if it is in a square
directly adjacent to a player.)
Our strategy is based on the theory that the easiest way to score is to
break away with the ball.
This is coded very specifically. You may notice some redundancies, but
this is intentional to allow the coaches to fine tune the teams.
- If the ball is N of the player:
- and something is NE:
- it's an opponent:
- and there's a teammate E:
- go NW (to receive kick)
- if NW is occupied, go W (to receive kick)
- and there's an opponent E:
- it's a teammate:
- and there's an opponent E:
- go W (to receive kick)
- if W is occupied, go SW (to receive kick)
- and there's a teammate E:
- go W (to receive kick)
- if W is occupied, go SW (to receive kick)
- it's something else:
- you aren't near a wall:
- go E (to get to other side of ball)
- you are near a wall
- and there is something E:
- go NE (to get to the other side of the ball)
- and there is something NW:
- else go NE
- If the ball is NE of the player:
- and there is something E:
- it's a teammate:
- go W (to receive kick)
- if W is occupied, go SW (to get out of the way)
- it's an opponent:
- else go E
- If the ball is S of the player:
- and something is SE:
- it's an opponent:
- and there's a teammate E:
- go SW (to receive kick)
- if SW is occupied, go W (to receive kick)
- and there's an opponent E:
- it's a teammate:
- and there's an opponent E:
- go W (to receive kick)
- if W is occupied, go NW (to receive kick)
- and there's a teammate E:
- go W (to receive kick)
- if W is occupied, go NW (to receive kick)
- it's something else:
- you aren't near a wall:
- go E (to get to other side of ball)
- you are near a wall
- go SE (to move towards the other side of the ball)
- and there is something E:
- go SE (to get to the other side of the ball)
- and there is something SW:
- else go SE
- If the ball is SE of the player:
- and there is something E:
- it's a teammate:
- go W (to receive kick)
- if W is occupied, go NW (to get out of the way)
- it's an opponent:
- else go E
- If the ball is E of the player:
- and there is something SW:
- the team is on the other side of the ball (E of the player)
- go W (to receive kick)
- if W is occupied, go NW
- if W and NW are occupied, go SW
- the team is not there
- go NE
- if NE is occupied, go SE
- if NE and SE are occupied, stay
- If the ball is W of the player:
Defensive Strategy
The two players furthest away from the ball are our "defensive line".
These two players work hard to protect our goal line. They both
hang back and are quick to cut off any advances by the other team. The
two players furthest away from the ball are defensive.
Of these two, the player closest to the ball is more aggressive. This
player goes directly to the ball when it comes within its territory - the
last part of the east end of the field. Otherwise, it hovers just about
kick distance behind the ball and waits for action.
The player furthest away is designated goalie. As the other defensive
player, it is in charge of not letting the ball cross the goal line. It
does this by immediately attacking any ball that approaches it
in the east quarter of the field.
It stays back from the pack - about one and a half times kick distance -
in order to guard against the break away and to better protect the goal
line.
Results
In trial runs, the Interrupting Cows have performed very well against the
teams provided in the ASCII soccer package. The Interrupting Cows
consistently defeat all of the teams, with the exception of learn1 which
does not compile properly and the Dynamic Rollers and Soccer Spaniels who
we beat only 60% of the time.
This algorithm as proven itself very effective against many different
strategies.
We hope to compete against other teams in the near future with similar (or
better :) ) success.
The Results
We are undefeated against all other sample teams. except for Dynamic
Rollers and Soccer Spaniels, whom we beat about 60% of the time.
These two teams beat the other teams most of the time.
Interrupting Cows results
Dynamic Rollers and Soccer Spaniels results
The Source Code
main.c
You will need to create a directory cows for it and give it the other
default files.
The Coaches
The plays and algorithms for the Interrupting Cows were developed by Gary
Yngve and Alison Smith, junior computer science majors at Georgia Tech.
Gary may be contacted at gary@cc.gatech.edu
Alison may be contacted at ans@cc.gatech.edu
Back to the Interrupting Cows' Homepage