Robot gallery
For reference information on how these robots work, see the Programming Robots section.
IMPORTANT: In order for these bots to work with Bitfighter 011 alpha 2, you will need to update the file "robot_helper_functions.lua" in your Bitfighter install folder. Replace the file's contents with the following:
bot = LuaRobot(Robot) -- This is a reference to our bot function getFiringSolution(item) if(item == nil) then return nil end type = item:getClassID() if(type == nil) then return nil end return bot:getFiringSolution(type, item) end function logprint(msg) bot:logprint(msg) end
JUST AS IMPORTANT In 011 alpha 2, there is a bug in setThrustToPt() that can cause Bitfighter to hang. It will be fixed in alpha 3. Inserting the line:
if(bot:getTime() == 0) then return end
as the first line of your getMove() function will fix the problem.
------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- -- OrbitBot, a simple robot that finds the nearest TestItem and orbits it -- Note that this relies on line-of-sight navigation, so only good for open levels -- -- !!! WILL ONLY WORK WITH RELEASE VERSION OF BITFIGHTER 011 AND ABOVE !!! -- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- This is called by the robot's idle routine each tick. -- This function must be present for the robot to work! function getMove() if(targetItem == nil) then targetItem = findClosest(bot:findGlobalItems(TestItemType)) end if(targetItem == nil) then return end local botLoc = bot:getLoc() local itemLoc = targetItem:getLoc() local dist = botLoc:distanceTo( itemLoc ) -- Here we use the getTime() function to make the motion look smooth. -- If we just advanced orbitAng by a fixed amount each frame, it would -- appear jerky, as each frame is a slightly different length. -- .0015 determined experimentally orbitAng = orbitAng + .0015 * bot:getTime() local dest if( dist <= orbitRadius * 1.1 ) then -- Close enough to enter orbit dest = itemLoc dest:setxy( itemLoc:x() + orbitRadius * math.cos (orbitAng), itemLoc:y() + orbitRadius * math.sin (orbitAng) ) if( not isInOrbit ) then orbitAng = botLoc:angleTo( dest ) - math.pi / 2 end isInOrbit = true else -- Travel directly toward object dest = itemLoc orbitAng = botLoc:angleTo( dest ) isInOrbit = false end bot:setThrustToPt( dest ) -- Travel towards calculated point bot:setAngle( botLoc:angleTo( itemLoc) ) -- Aim ship that way too end ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- This function is called once and should return the robot's name function getName() return( "OrbitBot") end ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- Setup code here: this is run once when the robot is initialized, and -- any variables set here will persist throughout the robot's life. These -- variables can be accessed from various functions defined in this file. ------------------------------------------------------------------------------- -- Global variables must be declared here before they can be used elsewhere orbitAng = 0 orbitRadius = 300 isInOrbit = false targetItem = nil
You can use the above bot with the following level file:
Invalid language.
You need to specify a language like this: <source lang="html4strict">...</source>
Supported languages for syntax highlighting:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
GameType 10 10 LevelName OrbitBot Home LevelDescription LevelCredits Robot demo level Robot 1 orbitbot.bot GridSize 255 MinPlayers 0 MaxPlayers 0 Team Blue 0 0 1 Team Red 1 0 0 BarrierMaker 50 1 -2 1 6 9 6 9 -2 1 -2 Spawn 0 3 2 Spawn 1 7 2 TestItem 5 2