moth/doc/2011-11-NMT/state/tanks/players/1229c701/program

67 lines
3.7 KiB
Plaintext
Raw Normal View History

2012-02-02 17:15:34 -07:00
( todo: Set treads to turn relative to tank position, not turret position. It )
( works okay now since the treads help turn the turret faster, but I think )
( it could be better. )
( sensors: )
( 0: firing sensor )
( 1: fore collision sensor )
( 2: starboard fore long-range turret-mounted sensor )
( 3: fore short-range sensor )
( 4: port fore long-range turret-mounted sensor )
( 5: starboard mid-range turrent-mounted sensor )
( 6: port mid-range turrent-mounted sensor )
( 7: fore long-range turret-mounted sensor )
( 8: starboard long-range turret-mounted sensor )
( 9: port long-range turret-mounted sensor )
fire-ready? { 1 set-led! } ( Turn on led if cannon is ready. )
{ 0 set-led!
3 sensor? { -100 -100 set-speed! } if
} ifelse
0 sensor? { fire! } if
1 sensor? { -100 -100 set-speed! }
{
7 sensor? ( If there is an enemy dead ahead )
{ fire-ready? ( and the cannon is ready, speed )
{ 0 sensor? { fire! } ( up to catch it and fire when in )
{ 1 sensor? { } ( range. if cannon is not ready, )
{ 100 100 set-speed! } ifelse ( pursue at a safe distance. if )
} ifelse ( the enemy gets too close, back )
} ( off. )
{ 1 sensor? { }
{ 3 sensor? { -100 -100 set-speed! }
{ 100 100 set-speed! } ifelse
} ifelse
} ifelse
}
{ 8 sensor? ( If there is an enemy on right, )
{ 6 sensor? ( turn right, but if there is a )
{ get-turret 20 - set-turret! ( closer enemy on left, turn left. )
1 sensor? { } ( To avoid collisions, flee if an )
{ 3 sensor? { -100 -80 set-speed! } ( an enemy gets too close. )
{ -100 100 set-speed! } ifelse
} ifelse
}
{ 2 sensor?
{ get-turret 5 + set-turret! 100 50 set-speed! }
{ get-turret 20 + set-turret! 100 -100 set-speed! } ifelse
} ifelse
}
{ 9 sensor? ( If there is an enemy on left, )
{ 5 sensor? ( turn left, but if there is a )
{ get-turret 20 + set-turret! ( closer enemy on right, turn )
1 sensor? { } ( right. To avoid collisions, flee )
{ 3 sensor? { -80 -100 set-speed! } ( if an enemy gets too close. )
{ 100 -100 set-speed! } ifelse
} ifelse
}
{ 4 sensor?
{ get-turret 5 - set-turret! 50 100 set-speed! }
{ get-turret 20 - set-turret! -100 100 set-speed! } ifelse
} ifelse
}
{ 100 100 set-speed! 0 set-turret! } ifelse ( if there are no nearby tanks, )
} ifelse ( maintain cruising speed and )
} ifelse ( reset turret to face forward. )
} ifelse