feat(ModularBot): wave-surf movement + wall-bounce gun, 8 guns total

- Wave-surf movement module (not wired, needs movement selector)
- Wall-bounce gun: linear extrapolation with arena wall reflection
- 8 guns: head-on, linear, circular, tsetlin, guess-factor, pattern, anti-surfer, wall-bounce
- Battle-tested against Walls, SpinBot, WaveSurfer, PatternMover, TrackFire

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-09-20 01:31:41 +02:00
parent a3b4f26b69
commit b2cf02db11
2 changed files with 28 additions and 0 deletions
Binary file not shown.
@@ -0,0 +1,28 @@
import test_framework/test_framework
import std/os
const myBotDir = currentSourcePath().parentDir.parentDir
let enemies = @[
("/home/davide/Downloads/robocode-tankroyale/sample-bots-nim-linux-1.0.7/Walls", "Walls"),
("/home/davide/Downloads/robocode-tankroyale/sample-bots-nim-linux-1.0.7/SpinBot", "SpinBot"),
("/home/davide/Projects/SirRoboGarage/WaveSurfer_garage", "WaveSurfer"),
("/home/davide/Projects/SirRoboGarage/PatternMover_garage", "PatternMover"),
("/home/davide/Downloads/robocode-tankroyale/sample-bots-nim-linux-1.0.7/TrackFire", "TrackFire"),
]
echo "Running ModularBot (8 guns) vs all enemies, 10 rounds each"
echo "==========================================================="
for (enemyPath, enemyName) in enemies:
echo "\n--- vs " & enemyName & " ---"
let result = runBattle(@[myBotDir, enemyPath], rounds = 10, timeout = 180)
# Print scores table
echo "Round Results:"
for r in result.rounds:
echo " Round " & $r.round & ":"
for br in r.results:
echo " " & br.name & ": " & $br.score & " (rank " & $br.rank & ")"
echo "\n==========================================================="
echo "All battles complete."