Next: Threats to Attack or Defend, Up: Move Reason Details
A move which tactically captures a worm is called an attack move and a move which saves a worm from being tactically captured is called a defense move. It is understood that a defense move can only exist if the worm can be captured, and that a worm without defense only is attacked by moves that decrease the liberty count or perform necessary backfilling.
It is important that all moves which attack or defend a certain string are found, so that the move generation can make an informed choice about how to perform a capture, or find moves which capture and/or defend several worms.
Attacking and defending moves are first found in make_worms
while it
evaluates the tactical status of all worms, although this step only
gives one attack and defense (if any) move per worm. Immediately
after, still in make_worms
, all liberties of the attacked worms are
tested for additional attack and defense moves. More indirect moves
are found by find_attack_patterns
and find_defense_patterns
,
which match the A (attack) and D (defense) class patterns in
patterns/attack.db and patterns/defense.db As a final step, all
moves which fill some purpose at all are tested whether they additionally
attacks or defends some worm. (Only unstable worms are analyzed.)