\catcode`?\letter \let\xa\expandafter \xa\def\xa\unsp@ce\space{} \def\@nspace{\ifcat\noexpand\@foo\space\xa\unsp@ce\fi} \def\unspace{\futurelet\@foo\@nspace} \def\dset#1=#2;{\global#1#2pt\unspace} \def\cset#1=#2;{\global#1#2\unspace} \def\glet{\global\let} % Variables (all global, of course!) \newif\if@looping \newif\if@innerloop \newdimen\dx % span of map (-dx/2...dx/2) \newdimen\dy \newcount\limit \newdimen\minsensor \newdimen\maxsensor \newdimen\maxspeed \newdimen\maxturn \newdimen\maxhardturn \newtoks\boulders \newtoks\craters \newtoks\martians \newcount\time % sent by server \newcount\clock % internal (from perl) \newcount\dt \def\accstate{} \def\wantacc{} \def\turnstate{} \def\wantturn{} \def\turn{} \def\acc{} \newdimen\vx % vehicle \newdimen\vy \newdimen\vdir \newdimen\vspeed \newif\if@turningleft \newif\if@turningright \newif\if@turningsoft \newif\if@turninghard % physical dimensions: \newdimen\roverrad \dset\roverrad=0.5; \newdimen\homerad \dset\homerad=5; % plans and targets: \newdimen\tx % target \newdimen\ty \newdimen\tdir % dir we want to go... \newdimen\tspeed \newcount\lastbearingchange % time - wait a while for next \lastbearingchange-1000 % start moving asap...? \newcount\slowcount \newif\if@goright % want to go right... \newif\if@goleft \newif\if@accel \newif\if@brake \newif\if@obstructed \newif\if@talemdata \newcount\skippedframes %% % We're gonna try to gather statistics to determine %% % the acceleration and braking rates... %% \newcount\changedacc %% \newcount\lasttime %% \newdimen\lastspeed %% \newcount\braketime %% \newdimen\braketotal %% \newdimen\thisbraketime %% \newcount\acctime %% \newdimen\acctotal %% \newdimen\thisacctime %% \newdimen\brakespeed %% \newdimen\accspeed % Don't even worry about the stupid turning accel... \def\mode{\dostart}