refactor: strip _garage suffix from adversarial test bots
Renames PatternMover_garage → PatternMover, RandomMover_garage → RandomMover, WaveSurfer_garage → WaveSurfer. Updates all .json, .sh, .nimble, and config.nims files to match TR Booter naming convention (directory name = bot name). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# PatternMover — repeats a fixed movement sequence, head-on firing.
|
||||
# Purpose: test pattern-matching gun.
|
||||
|
||||
import std/[math, os]
|
||||
import tankroyale_botapi
|
||||
|
||||
const botJsonPath = currentSourcePath().parentDir / "PatternMover.json"
|
||||
|
||||
# Sequence: (distance, turn_deg) pairs
|
||||
type Step = tuple[dist: float, turn: float]
|
||||
const STEPS: array[6, Step] = [
|
||||
(100.0, 0.0),
|
||||
( 0.0, 45.0),
|
||||
( 50.0, 0.0),
|
||||
( 0.0, -90.0),
|
||||
( 75.0, 0.0),
|
||||
( 0.0, 30.0),
|
||||
]
|
||||
|
||||
type PatternMover = ref object of Bot
|
||||
stepIdx: int
|
||||
remaining: float # distance left in current move step, or turn degrees
|
||||
inTurn: bool # true while executing a turn sub-step
|
||||
|
||||
method onRoundStarted*(bot: PatternMover, e: RoundStartedEvent) =
|
||||
setAdjustGunForBodyTurn(true)
|
||||
setAdjustRadarForBodyTurn(true)
|
||||
setAdjustRadarForGunTurn(true)
|
||||
bot.stepIdx = 0
|
||||
bot.remaining = STEPS[0].dist
|
||||
bot.inTurn = false
|
||||
|
||||
method onScannedBot*(bot: PatternMover, e: ScannedBotEvent) =
|
||||
let bearing = directionTo(getX(), getY(), e.x, e.y)
|
||||
let gunDelta = normalizeRelativeAngle(bearing - getGunDirection())
|
||||
setGunTurnRate(gunDelta.clamp(-MAX_GUN_TURN_RATE, MAX_GUN_TURN_RATE))
|
||||
if abs(gunDelta) < 10.0 and getGunHeat() <= 0.0:
|
||||
discard setFire(1.0)
|
||||
|
||||
proc advanceStep(bot: PatternMover) =
|
||||
bot.stepIdx = (bot.stepIdx + 1) mod STEPS.len
|
||||
let s = STEPS[bot.stepIdx]
|
||||
if s.dist > 0.0:
|
||||
bot.inTurn = false
|
||||
bot.remaining = s.dist
|
||||
else:
|
||||
bot.inTurn = true
|
||||
bot.remaining = abs(s.turn)
|
||||
|
||||
method run*(bot: PatternMover) =
|
||||
while isRunning():
|
||||
setRadarTurnRate(45.0)
|
||||
|
||||
if bot.inTurn:
|
||||
let s = STEPS[bot.stepIdx]
|
||||
let sign = if s.turn >= 0: 1.0 else: -1.0
|
||||
let rate = min(bot.remaining, MAX_TURN_RATE)
|
||||
setTurnRate(sign * rate)
|
||||
setTargetSpeed(0.0)
|
||||
bot.remaining -= rate
|
||||
if bot.remaining <= 0.0:
|
||||
advanceStep(bot)
|
||||
else:
|
||||
let rate = min(bot.remaining, 8.0)
|
||||
setTargetSpeed(8.0)
|
||||
setTurnRate(0.0)
|
||||
bot.remaining -= rate
|
||||
if bot.remaining <= 0.0:
|
||||
advanceStep(bot)
|
||||
|
||||
go()
|
||||
|
||||
when isMainModule:
|
||||
var bot = PatternMover()
|
||||
start(bot, botJsonPath)
|
||||
Reference in New Issue
Block a user