Transform CRLF to LF line endings

Used GNU sed: sed 's/\x0D$//' -i *.txt */*.txt */*/*.txt
dev-ui
Didier Raboud 2012-12-29 11:30:42 +01:00
parent 9d829d6a14
commit d8ca5548f0
473 changed files with 13736 additions and 13744 deletions

View File

@ -1,53 +1,53 @@
extern void object::Attack( )
{
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
while ( true )
{
p = radar(WingedShooter, 0, 360, 0, 50);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(WingedShooter, 0, 360, 0, 50);
if ( p != null ) break;
goto(nav2);
p = radar(WingedShooter, 0, 360, 0, 50);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
prox = dist-5;
if ( prox > 40 ) prox = 40;
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
extern void object::Attack( )
{
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
while ( true )
{
p = radar(WingedShooter, 0, 360, 0, 50);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(WingedShooter, 0, 360, 0, 50);
if ( p != null ) break;
goto(nav2);
p = radar(WingedShooter, 0, 360, 0, 50);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
prox = dist-5;
if ( prox > 40 ) prox = 40;
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}

View File

@ -1,95 +1,95 @@
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
wait(cmdline(0));
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
wait(2);
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
//? if ( RetBaseDistance() > 20 )
{
prox = dist-(5+rand()*5);
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
}
// Calcule la distance jusqu'à la base.
float object::RetBaseDistance()
{
object p;
float dist;
p = radar(SpaceShip, 0, 360, 0, 1000);
if ( p == null ) return 1000;
dist = distance(p.position, position);
return dist;
}
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
wait(cmdline(0));
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
wait(2);
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
//? if ( RetBaseDistance() > 20 )
{
prox = dist-(5+rand()*5);
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
}
// Calcule la distance jusqu'à la base.
float object::RetBaseDistance()
{
object p;
float dist;
p = radar(SpaceShip, 0, 360, 0, 1000);
if ( p == null ) return 1000;
dist = distance(p.position, position);
return dist;
}

View File

@ -1,91 +1,91 @@
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 40);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
prox = dist-5;
if ( prox > 40 ) prox = 40;
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 40);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
prox = dist-5;
if ( prox > 40 ) prox = 40;
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}

View File

@ -1,59 +1,59 @@
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
while ( true )
{
p = radar(list, 0, 360, 0, 40);
if ( p == null ) break;
fire(p.position);
}
goto(nav1);
while ( true )
{
p = radar(list, 0, 360, 0, 40);
if ( p == null ) break;
fire(p.position);
}
goto(nav2);
}
}
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
while ( true )
{
p = radar(list, 0, 360, 0, 40);
if ( p == null ) break;
fire(p.position);
}
goto(nav1);
while ( true )
{
p = radar(list, 0, 360, 0, 40);
if ( p == null ) break;
fire(p.position);
}
goto(nav2);
}
}

View File

@ -1,62 +1,62 @@
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
p = radar(list, 0, 360, 0, 40);
if ( p == null )
{
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
}
}
else
{
fire(p.position);
}
}
}
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
p = radar(list, 0, 360, 0, 40);
if ( p == null )
{
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
}
}
else
{
fire(p.position);
}
}
}

View File

@ -1,18 +1,18 @@
extern void object::Attack( )
{
point nav1, nav2;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
goto(nav1);
goto(nav2);
}
}
extern void object::Attack( )
{
point nav1, nav2;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
goto(nav1);
goto(nav2);
}
}

View File

@ -1,86 +1,86 @@
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point nav1, nav2, dest;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 30);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 30);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 30);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist < 5 )
{
fire(p.position);
}
else
{
prox = dist+5; // fuite
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
}
}
}
}
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point nav1, nav2, dest;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 30);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 30);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 30);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist < 5 )
{
fire(p.position);
}
else
{
prox = dist+5; // fuite
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
}
}
}
}

View File

@ -1,67 +1,67 @@
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
while ( ismovie() != 0 ) // film en cours ?
{
wait(1);
}
p = radar(list, 0, 360, 0, 40);
if ( p == null )
{
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
}
}
else
{
fire(p.position);
}
}
}
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
while ( ismovie() != 0 ) // film en cours ?
{
wait(1);
}
p = radar(list, 0, 360, 0, 40);
if ( p == null )
{
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 40);
if ( p != null ) break;
}
}
else
{
fire(p.position);
}
}
}

View File

@ -1,91 +1,91 @@
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 200);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 200);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 200);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
prox = dist-5;
if ( prox > 40 ) prox = 40;
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 200);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(list, 0, 360, 0, 200);
if ( p != null ) break;
goto(nav2);
p = radar(list, 0, 360, 0, 200);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
prox = dist-5;
if ( prox > 40 ) prox = 40;
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}

View File

@ -1,93 +1,93 @@
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
wait(2);
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
//? if ( RetBaseDistance() > 20 )
{
prox = dist-(5+rand()*5);
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
}
// Calcule la distance jusqu'à la base.
float object::RetBaseDistance()
{
object p;
float dist;
p = radar(SpaceShip, 0, 360, 0, 1000);
if ( p == null ) return 1000;
dist = distance(p.position, position);
return dist;
}
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
wait(2);
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
//? if ( RetBaseDistance() > 20 )
{
prox = dist-(5+rand()*5);
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
}
// Calcule la distance jusqu'à la base.
float object::RetBaseDistance()
{
object p;
float dist;
p = radar(SpaceShip, 0, 360, 0, 1000);
if ( p == null ) return 1000;
dist = distance(p.position, position);
return dist;
}

View File

@ -1,95 +1,95 @@
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
wait(cmdline(0));
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
wait(2);
}
else
{
dist = distance(p.position, position);
if ( dist <= 20 && !advance )
{
fire(p.position);
advance = true;
}
else
{
//? if ( RetBaseDistance() > 20 )
{
prox = dist-(5+rand()*5);
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest, 0, 6);
advance = false;
}
}
}
}
}
// Calcule la distance jusqu'à la base.
float object::RetBaseDistance()
{
object p;
float dist;
p = radar(SpaceShip, 0, 360, 0, 1000);
if ( p == null ) return 1000;
dist = distance(p.position, position);
return dist;
}
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
wait(cmdline(0));
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
wait(2);
}
else
{
dist = distance(p.position, position);
if ( dist <= 20 && !advance )
{
fire(p.position);
advance = true;
}
else
{
//? if ( RetBaseDistance() > 20 )
{
prox = dist-(5+rand()*5);
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest, 0, 6);
advance = false;
}
}
}
}
}
// Calcule la distance jusqu'à la base.
float object::RetBaseDistance()
{
object p;
float dist;
p = radar(SpaceShip, 0, 360, 0, 1000);
if ( p == null ) return 1000;
dist = distance(p.position, position);
return dist;
}

View File

@ -1,92 +1,92 @@
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean lock, advance;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
lock = false;
while ( !lock )
{
p = radar(list, 0, 360, 0, 40);
if ( p != null )
{
fire(p.position);
lock = true;
break;
}
goto(nav1);
p = radar(list, 0, 360, 0, 40);
if ( p != null )
{
fire(p.position);
lock = true;
break;
}
goto(nav2);
}
advance = true;
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
wait(1);
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
prox = dist-5;
if ( prox > 40 ) prox = 40;
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean lock, advance;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
lock = false;
while ( !lock )
{
p = radar(list, 0, 360, 0, 40);
if ( p != null )
{
fire(p.position);
lock = true;
break;
}
goto(nav1);
p = radar(list, 0, 360, 0, 40);
if ( p != null )
{
fire(p.position);
lock = true;
break;
}
goto(nav2);
}
advance = true;
while ( true )
{
p = radar(list, 0, 360, 0, 1000);
if ( p == null )
{
wait(1);
}
else
{
dist = distance(p.position, position);
if ( dist <= 40 && !advance )
{
fire(p.position);
advance = true;
}
else
{
prox = dist-5;
if ( prox > 40 ) prox = 40;
if ( prox < 5 ) prox = 5;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}

View File

@ -1,145 +1,145 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point lastPos; // dernière position (pr test si bloquée)
float distTar; // distance de la cible
float dirTar; // direction de la cible
float r; // valeur aléatoire
float mp; // puissance moteur
float tangle; // angle d'esquive en cas d'eau
boolean ifmove; // si on avance en tirant ou pas
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
wait(cmdline(0)); // attend pour entrer en action
lastPos = position; // initialise
ifmove = true;
while ( true ) // répète à l'infini
{
target = radar(list);
dirTar = direction(target.position);
distTar = distance(position, target.position);
if(distTar<30)
{
turn(dirTar);
fire(target.position);
target = radar(list);
turn(direction(target.position));
for(int i=0; i<3; i=i+1)
{
if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
{
ifmove = false;
}
else
{
lastPos = position;
motor(1,1);
wait(0.5);
if (distance(position, lastPos) < 0.2) ifmove = false;
}
}
}
else
{
ifmove = true;
if (distance(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
lastPos = position;
turn(rand()*360-180);
motor(1,1);
wait(1);
target = radar(list);
turn(direction(target.position));
}
else
{
lastPos = position;
if (topo(position)>1)
{
mp = direction(target.position)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
else
{
motor (-0.5, -0.5);
wait(1.5);
target = radar(list);
turn(direction(target.position));
tangle = 0;
do
{
tangle = tangle + 22.5;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tangle > 180) break;
}
while (true);
turn(tangle);
motor(1,1);
wait(2);
}
}
}
}
}
int object::tp(float angle)
{
point tpoint;
tpoint.x = position.x + cos(orientation + angle)*10;
tpoint.y = position.y + sin(orientation + angle)*10;
tpoint.z = 0;
if (topo(tpoint) < 1.5) return(1); else return(0);
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point lastPos; // dernière position (pr test si bloquée)
float distTar; // distance de la cible
float dirTar; // direction de la cible
float r; // valeur aléatoire
float mp; // puissance moteur
float tangle; // angle d'esquive en cas d'eau
boolean ifmove; // si on avance en tirant ou pas
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
wait(cmdline(0)); // attend pour entrer en action
lastPos = position; // initialise
ifmove = true;
while ( true ) // répète à l'infini
{
target = radar(list);
dirTar = direction(target.position);
distTar = distance(position, target.position);
if(distTar<30)
{
turn(dirTar);
fire(target.position);
target = radar(list);
turn(direction(target.position));
for(int i=0; i<3; i=i+1)
{
if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
{
ifmove = false;
}
else
{
lastPos = position;
motor(1,1);
wait(0.5);
if (distance(position, lastPos) < 0.2) ifmove = false;
}
}
}
else
{
ifmove = true;
if (distance(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
lastPos = position;
turn(rand()*360-180);
motor(1,1);
wait(1);
target = radar(list);
turn(direction(target.position));
}
else
{
lastPos = position;
if (topo(position)>1)
{
mp = direction(target.position)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
else
{
motor (-0.5, -0.5);
wait(1.5);
target = radar(list);
turn(direction(target.position));
tangle = 0;
do
{
tangle = tangle + 22.5;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tangle > 180) break;
}
while (true);
turn(tangle);
motor(1,1);
wait(2);
}
}
}
}
}
int object::tp(float angle)
{
point tpoint;
tpoint.x = position.x + cos(orientation + angle)*10;
tpoint.y = position.y + sin(orientation + angle)*10;
tpoint.z = 0;
if (topo(tpoint) < 1.5) return(1); else return(0);
}

View File

@ -1,145 +1,145 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point lastPos; // dernière position (pr test si bloquée)
float distTar; // distance de la cible
float dirTar; // direction de la cible
float r; // valeur aléatoire
float mp; // puissance moteur
float tangle; // angle d'esquive en cas d'eau
boolean ifmove; // si on avance en tirant ou pas
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
wait(cmdline(0)); // attend pour entrer en action
lastPos = position; // initialise
ifmove = true;
while ( true ) // répète à l'infini
{
target = radar(list);
dirTar = direction(target.position);
distTar = distance(position, target.position);
if(distTar<40)
{
turn(dirTar);
fire(target.position);
target = radar(list);
turn(direction(target.position));
for(int i=0; i<3; i=i+1)
{
if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
{
ifmove = false;
}
else
{
lastPos = position;
motor(1,1);
wait(0.5);
if (distance(position, lastPos) < 0.2) ifmove = false;
}
}
}
else
{
ifmove = true;
if (distance(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
lastPos = position;
turn(rand()*360-180);
motor(1,1);
wait(1);
target = radar(list);
turn(direction(target.position));
}
else
{
lastPos = position;
if (topo(position)>1)
{
mp = direction(target.position)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
else
{
motor (-0.5, -0.5);
wait(1.5);
target = radar(list);
turn(direction(target.position));
tangle = 0;
do
{
tangle = tangle + 22.5;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tangle > 180) break;
}
while (true);
turn(tangle);
motor(1,1);
wait(2);
}
}
}
}
}
int object::tp(float angle)
{
point tpoint;
tpoint.x = position.x + cos(orientation + angle)*10;
tpoint.y = position.y + sin(orientation + angle)*10;
tpoint.z = 0;
if (topo(tpoint) < 1.5) return(1); else return(0);
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point lastPos; // dernière position (pr test si bloquée)
float distTar; // distance de la cible
float dirTar; // direction de la cible
float r; // valeur aléatoire
float mp; // puissance moteur
float tangle; // angle d'esquive en cas d'eau
boolean ifmove; // si on avance en tirant ou pas
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
wait(cmdline(0)); // attend pour entrer en action
lastPos = position; // initialise
ifmove = true;
while ( true ) // répète à l'infini
{
target = radar(list);
dirTar = direction(target.position);
distTar = distance(position, target.position);
if(distTar<40)
{
turn(dirTar);
fire(target.position);
target = radar(list);
turn(direction(target.position));
for(int i=0; i<3; i=i+1)
{
if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
{
ifmove = false;
}
else
{
lastPos = position;
motor(1,1);
wait(0.5);
if (distance(position, lastPos) < 0.2) ifmove = false;
}
}
}
else
{
ifmove = true;
if (distance(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
lastPos = position;
turn(rand()*360-180);
motor(1,1);
wait(1);
target = radar(list);
turn(direction(target.position));
}
else
{
lastPos = position;
if (topo(position)>1)
{
mp = direction(target.position)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
else
{
motor (-0.5, -0.5);
wait(1.5);
target = radar(list);
turn(direction(target.position));
tangle = 0;
do
{
tangle = tangle + 22.5;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tangle > 180) break;
}
while (true);
turn(tangle);
motor(1,1);
wait(2);
}
}
}
}
}
int object::tp(float angle)
{
point tpoint;
tpoint.x = position.x + cos(orientation + angle)*10;
tpoint.y = position.y + sin(orientation + angle)*10;
tpoint.z = 0;
if (topo(tpoint) < 1.5) return(1); else return(0);
}

View File

@ -1,145 +1,145 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point lastPos; // dernière position (pr test si bloquée)
float distTar; // distance de la cible
float dirTar; // direction de la cible
float r; // valeur aléatoire
float mp; // puissance moteur
float tangle; // angle d'esquive en cas d'eau
boolean ifmove; // si on avance en tirant ou pas
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
// wait(cmdline(0)); // attend pour entrer en action
lastPos = position; // initialise
ifmove = true;
while ( true ) // répète à l'infini
{
target = radar(list);
dirTar = direction(target.position);
distTar = distance(position, target.position);
if(distTar<40)
{
turn(dirTar);
fire(target.position);
target = radar(list);
turn(direction(target.position));
for(int i=0; i<3; i=i+1)
{
if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
{
ifmove = false;
}
else
{
lastPos = position;
motor(1,1);
wait(0.5);
if (distance(position, lastPos) < 0.2) ifmove = false;
}
}
}
else
{
ifmove = true;
if (distance(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
lastPos = position;
turn(rand()*360-180);
motor(1,1);
wait(1);
target = radar(list);
turn(direction(target.position));
}
else
{
lastPos = position;
if (topo(position)>1)
{
mp = direction(target.position)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
else
{
motor (-0.5, -0.5);
wait(1.5);
target = radar(list);
turn(direction(target.position));
tangle = 0;
do
{
tangle = tangle + 22.5;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tangle > 180) break;
}
while (true);
turn(tangle);
motor(1,1);
wait(2);
}
}
}
}
}
int object::tp(float angle)
{
point tpoint;
tpoint.x = position.x + cos(orientation + angle)*10;
tpoint.y = position.y + sin(orientation + angle)*10;
tpoint.z = 0;
if (topo(tpoint) < 1.5) return(1); else return(0);
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point lastPos; // dernière position (pr test si bloquée)
float distTar; // distance de la cible
float dirTar; // direction de la cible
float r; // valeur aléatoire
float mp; // puissance moteur
float tangle; // angle d'esquive en cas d'eau
boolean ifmove; // si on avance en tirant ou pas
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
// wait(cmdline(0)); // attend pour entrer en action
lastPos = position; // initialise
ifmove = true;
while ( true ) // répète à l'infini
{
target = radar(list);
dirTar = direction(target.position);
distTar = distance(position, target.position);
if(distTar<40)
{
turn(dirTar);
fire(target.position);
target = radar(list);
turn(direction(target.position));
for(int i=0; i<3; i=i+1)
{
if(topo(position)<2 or distance(position, target.position) < 8 or !ifmove)
{
ifmove = false;
}
else
{
lastPos = position;
motor(1,1);
wait(0.5);
if (distance(position, lastPos) < 0.2) ifmove = false;
}
}
}
else
{
ifmove = true;
if (distance(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
lastPos = position;
turn(rand()*360-180);
motor(1,1);
wait(1);
target = radar(list);
turn(direction(target.position));
}
else
{
lastPos = position;
if (topo(position)>1)
{
mp = direction(target.position)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
else
{
motor (-0.5, -0.5);
wait(1.5);
target = radar(list);
turn(direction(target.position));
tangle = 0;
do
{
tangle = tangle + 22.5;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tangle > 180) break;
}
while (true);
turn(tangle);
motor(1,1);
wait(2);
}
}
}
}
}
int object::tp(float angle)
{
point tpoint;
tpoint.x = position.x + cos(orientation + angle)*10;
tpoint.y = position.y + sin(orientation + angle)*10;
tpoint.z = 0;
if (topo(tpoint) < 1.5) return(1); else return(0);
}

View File

@ -1,115 +1,115 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float distLim; // rayon à ne pas dépasser
float r; // valeur aléatoire
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à exclure
distCent = cmdline(2); // rayon de la zone
distLim = cmdline(3);
lastPos = position; // initialise
turn(rand()*360-180);
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) < distCent
or distance2d(position, center) > distLim
or topo(position)<0)
{ // si la fourmi est dans la zone interdite
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
if (distance2d(position, center) < distCent+20)
{ //si trop proche du centre
if (direction(center)>0) turn(direction(center)-180); else turn(direction(center)+180);
motor (1, 1); //puis en avant toute
do
{
wait(1);
}
while (distance2d(position, center) < distCent or topo(position)<0);
}
else
{ //si trop loin du centre
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
wait(1); //tant que pas dans la zone
}
while (distance2d(position, center) > distLim or topo(position)<0);
}
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.7)
{ //dans un cas sur dix
motor (1, 0.8);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.3)
{ //dans un cas sur dix
motor (0.8, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float distLim; // rayon à ne pas dépasser
float r; // valeur aléatoire
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à exclure
distCent = cmdline(2); // rayon de la zone
distLim = cmdline(3);
lastPos = position; // initialise
turn(rand()*360-180);
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) < distCent
or distance2d(position, center) > distLim
or topo(position)<0)
{ // si la fourmi est dans la zone interdite
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
if (distance2d(position, center) < distCent+20)
{ //si trop proche du centre
if (direction(center)>0) turn(direction(center)-180); else turn(direction(center)+180);
motor (1, 1); //puis en avant toute
do
{
wait(1);
}
while (distance2d(position, center) < distCent or topo(position)<0);
}
else
{ //si trop loin du centre
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
wait(1); //tant que pas dans la zone
}
while (distance2d(position, center) > distLim or topo(position)<0);
}
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.7)
{ //dans un cas sur dix
motor (1, 0.8);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.3)
{ //dans un cas sur dix
motor (0.8, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
}
}

View File

@ -1,110 +1,110 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float stdHight; // Altitude du point de départ
float tolHight; // tolérance acceptée par rapport à stdHight
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
// list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
tolHight = 9;
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(WingedShooter);
if (target.position.y < 20
or abs(topo(position)-stdHight) > tolHight)//pas de cible à proximité
{ // ou s'écarte trop de l'altitude de départ
if (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.5);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.5, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
}
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float stdHight; // Altitude du point de départ
float tolHight; // tolérance acceptée par rapport à stdHight
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
// list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
tolHight = 9;
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(WingedShooter);
if (target.position.y < 20
or abs(topo(position)-stdHight) > tolHight)//pas de cible à proximité
{ // ou s'écarte trop de l'altitude de départ
if (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.5);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.5, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
}
}
}

View File

@ -1,110 +1,110 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float stdHight; // Altitude du point de départ
float tolHight; // tolérance acceptée par rapport à stdHight
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
tolHight = 1;
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null
or abs(topo(position)-stdHight) > tolHight)//pas de cible à proximité
{ // ou s'écarte trop de l'altitude de départ
if (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.5);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.5, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
}
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float stdHight; // Altitude du point de départ
float tolHight; // tolérance acceptée par rapport à stdHight
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
tolHight = 1;
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null
or abs(topo(position)-stdHight) > tolHight)//pas de cible à proximité
{ // ou s'écarte trop de l'altitude de départ
if (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.5);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.5, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
}
}
}

View File

@ -1,113 +1,113 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float stdHight; // Altitude du point de départ
float tolHight; // tolérance acceptée par rapport à stdHight
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
tolHight = cmdline(3); // tolérance admise
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null
or topo(position)-stdHight > tolHight
or stdHight-topo(position) > tolHight)//pas de cible à proximité
{ // ou s'écarte trop de l'altitude de départ
if (distance2d(position, center) > distCent
or abs(topo(position)-stdHight) > tolHight)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.7);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.7, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float stdHight; // Altitude du point de départ
float tolHight; // tolérance acceptée par rapport à stdHight
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
stdHight = topo(position);//L'altitude dont il ne faut pas s'écarter
tolHight = cmdline(3); // tolérance admise
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null
or topo(position)-stdHight > tolHight
or stdHight-topo(position) > tolHight)//pas de cible à proximité
{ // ou s'écarte trop de l'altitude de départ
if (distance2d(position, center) > distCent
or abs(topo(position)-stdHight) > tolHight)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or
abs(topo(position)-stdHight) > tolHight);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.7);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.7, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
}
}

View File

@ -1,216 +1,216 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float distTar; // distance de la cible
float dirTar; // direction de la cible
float mp; // puissance moteur
float tangle; // angle d'esquive en cas d'eau
boolean ifmove; // si on avance en tirant ou pas
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
lastPos = position; // initialise
motor(1,1); // en avant toute
while (radar(list, 0, 360, 0, 40) == null) // répète jusqu'à contact
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<0)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
if (direction(center)>0) motor (0,1); else motor (1,0);
do wait(0.2); //tourne vers le centre
while (direction(center) > 20
or direction(center) < -20);
//tant que pas orienté vers le centre
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(0.5); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<0);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.9)
{ //dans un cas sur dix
motor (1, 0.5);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.1)
{ //dans un cas sur dix
motor (0.5, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(0.2); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
fire(target.position); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
}
//a eu un contact avec l'astronaute
lastPos = position; // initialise
ifmove = true;
while ( true ) // répète à l'infini
{
target = radar(list);
dirTar = direction(target.position);
distTar = distance(position, target.position);
if (target != null)
{
if(distTar<40)
{
turn(dirTar);
fire(target.position);
target = radar(list);
turn(direction(target.position));
for(int i=0; i<3; i=i+1)
{
if(topo(position)<1.5 or distance(position, target.position) < 8 or !ifmove)
{
ifmove = false;
}
else
{
lastPos = position;
motor(1,1);
wait(1);
if (distance(position, lastPos) < 0.2) ifmove = false;
}
}
}
else
{
ifmove = true;
if (distance(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
lastPos = position;
turn(rand()*360-180);
motor(1,1);
wait(1);
target = radar(list);
turn(direction(target.position));
}
else
{
lastPos = position;
if (topo(position)>1.5)
{
mp = direction(target.position)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
else
{
motor (-0.5, -0.5);
wait(1.5);
target = radar(list);
turn(direction(target.position));
tangle = 0;
do
{
tangle = tangle + 22.5;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tangle > 180) break;
}
while (true);
turn(tangle);
motor(1,1);
wait(2);
}
}
}
}
else
{
wait(1);
}
}
}
int object::tp(float angle)
{
point tpoint;
tpoint.x = position.x + cos(orientation + angle)*10;
tpoint.y = position.y + sin(orientation + angle)*10;
tpoint.z = 0;
if (topo(tpoint) < 2) return(1); else return(0);
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float distTar; // distance de la cible
float dirTar; // direction de la cible
float mp; // puissance moteur
float tangle; // angle d'esquive en cas d'eau
boolean ifmove; // si on avance en tirant ou pas
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
lastPos = position; // initialise
motor(1,1); // en avant toute
while (radar(list, 0, 360, 0, 40) == null) // répète jusqu'à contact
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<0)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
if (direction(center)>0) motor (0,1); else motor (1,0);
do wait(0.2); //tourne vers le centre
while (direction(center) > 20
or direction(center) < -20);
//tant que pas orienté vers le centre
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(0.5); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<0);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.9)
{ //dans un cas sur dix
motor (1, 0.5);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.1)
{ //dans un cas sur dix
motor (0.5, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(0.2); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
fire(target.position); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
}
//a eu un contact avec l'astronaute
lastPos = position; // initialise
ifmove = true;
while ( true ) // répète à l'infini
{
target = radar(list);
dirTar = direction(target.position);
distTar = distance(position, target.position);
if (target != null)
{
if(distTar<40)
{
turn(dirTar);
fire(target.position);
target = radar(list);
turn(direction(target.position));
for(int i=0; i<3; i=i+1)
{
if(topo(position)<1.5 or distance(position, target.position) < 8 or !ifmove)
{
ifmove = false;
}
else
{
lastPos = position;
motor(1,1);
wait(1);
if (distance(position, lastPos) < 0.2) ifmove = false;
}
}
}
else
{
ifmove = true;
if (distance(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
lastPos = position;
turn(rand()*360-180);
motor(1,1);
wait(1);
target = radar(list);
turn(direction(target.position));
}
else
{
lastPos = position;
if (topo(position)>1.5)
{
mp = direction(target.position)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
else
{
motor (-0.5, -0.5);
wait(1.5);
target = radar(list);
turn(direction(target.position));
tangle = 0;
do
{
tangle = tangle + 22.5;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tp(tangle) == 0) break;
tangle = -tangle;
if (tangle > 180) break;
}
while (true);
turn(tangle);
motor(1,1);
wait(2);
}
}
}
}
else
{
wait(1);
}
}
}
int object::tp(float angle)
{
point tpoint;
tpoint.x = position.x + cos(orientation + angle)*10;
tpoint.y = position.y + sin(orientation + angle)*10;
tpoint.z = 0;
if (topo(tpoint) < 2) return(1); else return(0);
}

View File

@ -1,103 +1,103 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<0)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<0);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.5);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.5, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
}
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<0)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<0);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.5);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.5, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
}
}
}

View File

@ -1,105 +1,105 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répète à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<0)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(0.5); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<0);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.7);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.7, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répète à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<0)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(0.5); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<0);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.7);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.7, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
}
}

View File

@ -1,106 +1,106 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float mp; // vitesse maxi
float minAlt; // altitude minimale (danger lave!)
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
mp = 0.4;
minAlt = cmdline(3);
lastPos = position; // initialise
motor(mp, mp); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<minAlt)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<minAlt)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.4, -0.4);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (mp, mp); //puis en avant toute
do
{
lastPos = position;
wait(0.5); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.1)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(mp, mp);
wait(0.5);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<minAlt);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.1)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(mp, mp);
wait(0.5);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (mp, mp*0.5);// tourne à droite
wait(rand()*2);// pendant un moment
motor (mp, mp); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (mp*0.5, mp);// tourne à gauche
wait(rand()*2);// pendant un moment
motor (mp, mp); // puis tout droit
}
lastPos = position;
if(r>0.4 and r<0.6) wait(1);//attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
}
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
float mp; // vitesse maxi
float minAlt; // altitude minimale (danger lave!)
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
mp = 0.4;
minAlt = cmdline(3);
lastPos = position; // initialise
motor(mp, mp); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 40);
if (target == null or topo(position)<minAlt)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<minAlt)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.4, -0.4);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (mp, mp); //puis en avant toute
do
{
lastPos = position;
wait(0.5); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.1)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(mp, mp);
wait(0.5);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<minAlt);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.1)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(mp, mp);
wait(0.5);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (mp, mp*0.5);// tourne à droite
wait(rand()*2);// pendant un moment
motor (mp, mp); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (mp*0.5, mp);// tourne à gauche
wait(rand()*2);// pendant un moment
motor (mp, mp); // puis tout droit
}
lastPos = position;
if(r>0.4 and r<0.6) wait(1);//attend un moment
}
}
else
{ // si cible à proximité
turn(direction(target.position));
fire(target.position); // tourne vers la cible
}
}
}

View File

@ -1,48 +1,48 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
while (true)
{
while (radar(list, 0, 360, 0, 20) == null) wait(1);
move(5);
target = radar(list, 0, 360, 0, 40);
while (target != null)
{
fire(target.position);
target = radar(list, 0, 360, 0, 40);
}
turn(90 - orientation);
move(5);
turn(180);
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
while (true)
{
while (radar(list, 0, 360, 0, 20) == null) wait(1);
move(5);
target = radar(list, 0, 360, 0, 40);
while (target != null)
{
fire(target.position);
target = radar(list, 0, 360, 0, 40);
}
turn(90 - orientation);
move(5);
turn(180);
}
}

View File

@ -1,40 +1,40 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
while (true)
{
while (radar(list, 0, 360, 0, 40) == null) wait(1);
target = radar(list, 0, 360, 0, 40);
fire(target.position);
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
while (true)
{
while (radar(list, 0, 360, 0, 40) == null) wait(1);
target = radar(list, 0, 360, 0, 40);
fire(target.position);
}
}

View File

@ -1,137 +1,137 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
object queen; // info sur la reine
point center; // coordonnées du centre de la zone
float distCent; // rayon de la zone
float r; // valeur aléatoire
int ifTarget; // si on a trouvé une cible et quel genre
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = -65; // prend les coordonnée
center.y = 255; // du centre de la zone
center.z = 0; // à patrouiller
distCent = 140; // rayon de la zone
motor(1,1); // en avant toute
ifTarget = 0; // pas de cible précise
while ( true ) // répète à l'infini
{
queen = radar(AlienQueen);
if (rand() < 0.2 and queen != null) ifTarget = 2;//on retourne vers la reine
if (queen == null and ifTarget == 2) ifTarget = 0;
target = radar(list, 0, 360, 0, 40);
if (target != null)
{
shoot(target.position);
}
else
{
if (ifTarget == 2)
{
if(distance2d(position, queen.position)>8) head(queen.position);
else ifTarget = 0;
}
else Random(center, distCent);
}
}
}
void object::head(point tarPos)
{
float mp;// puissance du moteur
mp = direction(tarPos)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
void object::Random(point center, float distCent)
{
if (distance2d(position, center) > distCent or topo(position)<2)
{
HorsZone(center, distCent);
}
else
{
DansZone();
}
}
void object::HorsZone(point center, float distCent)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
wait(1); //tant que pas dans la zone
}
while (distance2d(position, center) > distCent or topo(position)<2);
}
void object::DansZone()
{ //si elle est bien dans la zone
float r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.7); // tourne à droite
wait(rand()*3); // pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.7, 1); // tourne à gauche
wait(rand()*3); // pendant un moment
motor (1, 1); // puis tout droit
}
motor(1,1);
wait(1); // attend un moment
}
void object::shoot(point tarPos)
{ // si cible à proximité
turn(direction(tarPos));
fire(tarPos); // tourne vers la cible
fire(tarPos); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
object queen; // info sur la reine
point center; // coordonnées du centre de la zone
float distCent; // rayon de la zone
float r; // valeur aléatoire
int ifTarget; // si on a trouvé une cible et quel genre
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = -65; // prend les coordonnée
center.y = 255; // du centre de la zone
center.z = 0; // à patrouiller
distCent = 140; // rayon de la zone
motor(1,1); // en avant toute
ifTarget = 0; // pas de cible précise
while ( true ) // répète à l'infini
{
queen = radar(AlienQueen);
if (rand() < 0.2 and queen != null) ifTarget = 2;//on retourne vers la reine
if (queen == null and ifTarget == 2) ifTarget = 0;
target = radar(list, 0, 360, 0, 40);
if (target != null)
{
shoot(target.position);
}
else
{
if (ifTarget == 2)
{
if(distance2d(position, queen.position)>8) head(queen.position);
else ifTarget = 0;
}
else Random(center, distCent);
}
}
}
void object::head(point tarPos)
{
float mp;// puissance du moteur
mp = direction(tarPos)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
void object::Random(point center, float distCent)
{
if (distance2d(position, center) > distCent or topo(position)<2)
{
HorsZone(center, distCent);
}
else
{
DansZone();
}
}
void object::HorsZone(point center, float distCent)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
wait(1); //tant que pas dans la zone
}
while (distance2d(position, center) > distCent or topo(position)<2);
}
void object::DansZone()
{ //si elle est bien dans la zone
float r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.7); // tourne à droite
wait(rand()*3); // pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.7, 1); // tourne à gauche
wait(rand()*3); // pendant un moment
motor (1, 1); // puis tout droit
}
motor(1,1);
wait(1); // attend un moment
}
void object::shoot(point tarPos)
{ // si cible à proximité
turn(direction(tarPos));
fire(tarPos); // tourne vers la cible
fire(tarPos); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}

View File

@ -1,132 +1,132 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
float distCent; // rayon de la zone
float r; // valeur aléatoire
int ifTarget; // si on a trouvé une cible et quel genre
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = -65; // prend les coordonnée
center.y = 255; // du centre de la zone
center.z = 0; // à patrouiller
distCent = 140; // rayon de la zone
motor(1,1); // en avant toute
ifTarget = 0; // pas de cible précise
while ( true ) // répète à l'infini
{
target = radar(list);
if(target.position.y > 65)
{
if(distance2d(position, target.position)<40)
{
shoot(target.position);
}
else
{
head(target.position);
}
}
else Random(center, distCent);
}
}
void object::head(point tarPos)
{
float mp;// puissance du moteur
mp = direction(tarPos)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
void object::Random(point center, float distCent)
{
if (distance2d(position, center) > distCent or topo(position)<2)
{
HorsZone(center, distCent);
}
else
{
DansZone();
}
}
void object::HorsZone(point center, float distCent)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
wait(1); //tant que pas dans la zone
}
while (distance2d(position, center) > distCent or topo(position)<2);
}
void object::DansZone()
{ //si elle est bien dans la zone
float r = rand();
if (r > 0.8)
{ //dans un cas sur dix
motor (1, 0.8); // tourne à droite
wait(rand()*2); // pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.2)
{ //dans un cas sur dix
motor (0.8, 1); // tourne à gauche
wait(rand()*2); // pendant un moment
motor (1, 1); // puis tout droit
}
motor(1,1);
wait(1); //attend un moment
}
void object::shoot(point tarPos)
{ // si cible à proximité
turn(direction(tarPos));
fire(tarPos); // tourne vers la cible
fire(tarPos); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
float distCent; // rayon de la zone
float r; // valeur aléatoire
int ifTarget; // si on a trouvé une cible et quel genre
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = -65; // prend les coordonnée
center.y = 255; // du centre de la zone
center.z = 0; // à patrouiller
distCent = 140; // rayon de la zone
motor(1,1); // en avant toute
ifTarget = 0; // pas de cible précise
while ( true ) // répète à l'infini
{
target = radar(list);
if(target.position.y > 65)
{
if(distance2d(position, target.position)<40)
{
shoot(target.position);
}
else
{
head(target.position);
}
}
else Random(center, distCent);
}
}
void object::head(point tarPos)
{
float mp;// puissance du moteur
mp = direction(tarPos)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
void object::Random(point center, float distCent)
{
if (distance2d(position, center) > distCent or topo(position)<2)
{
HorsZone(center, distCent);
}
else
{
DansZone();
}
}
void object::HorsZone(point center, float distCent)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
wait(1); //tant que pas dans la zone
}
while (distance2d(position, center) > distCent or topo(position)<2);
}
void object::DansZone()
{ //si elle est bien dans la zone
float r = rand();
if (r > 0.8)
{ //dans un cas sur dix
motor (1, 0.8); // tourne à droite
wait(rand()*2); // pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.2)
{ //dans un cas sur dix
motor (0.8, 1); // tourne à gauche
wait(rand()*2); // pendant un moment
motor (1, 1); // puis tout droit
}
motor(1,1);
wait(1); //attend un moment
}
void object::shoot(point tarPos)
{ // si cible à proximité
turn(direction(tarPos));
fire(tarPos); // tourne vers la cible
fire(tarPos); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}

View File

@ -1,132 +1,132 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
float distCent; // rayon de la zone
float r; // valeur aléatoire
int ifTarget; // si on a trouvé une cible et quel genre
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = -65; // prend les coordonnée
center.y = 255; // du centre de la zone
center.z = 0; // à patrouiller
distCent = 140; // rayon de la zone
motor(1,1); // en avant toute
ifTarget = 0; // pas de cible précise
while ( true ) // répète à l'infini
{
target = radar(list);
if(target.position.y > 180)
{
if(distance2d(position, target.position)<40)
{
shoot(target.position);
}
else
{
head(target.position);
}
}
else Random(center, distCent);
}
}
void object::head(point tarPos)
{
float mp;// puissance du moteur
mp = direction(tarPos)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
void object::Random(point center, float distCent)
{
if (distance2d(position, center) > distCent or topo(position)<2)
{
HorsZone(center, distCent);
}
else
{
DansZone();
}
}
void object::HorsZone(point center, float distCent)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
wait(1); //tant que pas dans la zone
}
while (distance2d(position, center) > distCent or topo(position)<2);
}
void object::DansZone()
{ //si elle est bien dans la zone
float r = rand();
if (r > 0.8)
{ //dans un cas sur dix
motor (1, 0.8); // tourne à droite
wait(rand()*2); // pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.2)
{ //dans un cas sur dix
motor (0.8, 1); // tourne à gauche
wait(rand()*2); // pendant un moment
motor (1, 1); // puis tout droit
}
motor(1,1);
wait(1); // attend un moment
}
void object::shoot(point tarPos)
{ // si cible à proximité
turn(direction(tarPos));
fire(tarPos); // tourne vers la cible
fire(tarPos); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
float distCent; // rayon de la zone
float r; // valeur aléatoire
int ifTarget; // si on a trouvé une cible et quel genre
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = -65; // prend les coordonnée
center.y = 255; // du centre de la zone
center.z = 0; // à patrouiller
distCent = 140; // rayon de la zone
motor(1,1); // en avant toute
ifTarget = 0; // pas de cible précise
while ( true ) // répète à l'infini
{
target = radar(list);
if(target.position.y > 180)
{
if(distance2d(position, target.position)<40)
{
shoot(target.position);
}
else
{
head(target.position);
}
}
else Random(center, distCent);
}
}
void object::head(point tarPos)
{
float mp;// puissance du moteur
mp = direction(tarPos)/180;
//if (mp>1) mp = 1;
//if (mp<-1) mp = -1;
if (mp>0)
{
motor(1-mp,1);
}
else
{
motor(1,1+mp);
}
wait(1);
}
void object::Random(point center, float distCent)
{
if (distance2d(position, center) > distCent or topo(position)<2)
{
HorsZone(center, distCent);
}
else
{
DansZone();
}
}
void object::HorsZone(point center, float distCent)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
wait(1); //tant que pas dans la zone
}
while (distance2d(position, center) > distCent or topo(position)<2);
}
void object::DansZone()
{ //si elle est bien dans la zone
float r = rand();
if (r > 0.8)
{ //dans un cas sur dix
motor (1, 0.8); // tourne à droite
wait(rand()*2); // pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.2)
{ //dans un cas sur dix
motor (0.8, 1); // tourne à gauche
wait(rand()*2); // pendant un moment
motor (1, 1); // puis tout droit
}
motor(1,1);
wait(1); // attend un moment
}
void object::shoot(point tarPos)
{ // si cible à proximité
turn(direction(tarPos));
fire(tarPos); // tourne vers la cible
fire(tarPos); // et tire deux fois
motor(1,1); // avance
wait(1.5); // pendant 1.5 s
}

View File

@ -1,13 +1,13 @@
extern void object::Recharge1()
{
point start; // variable for initial pos.
object item; // info. about power station
start = position; // store initial position
item = radar(PowerStation); // look for station
goto(item.position); // go to the power station
wait(5); // wait 5 seconds
goto(start); // go back to initial pos.
}
extern void object::Recharge1()
{
point start; // variable for initial pos.
object item; // info. about power station
start = position; // store initial position
item = radar(PowerStation); // look for station
goto(item.position); // go to the power station
wait(5); // wait 5 seconds
goto(start); // go back to initial pos.
}

View File

@ -1,18 +1,18 @@
extern void object::Recharge2()
{
point start; // variable for initial pos.
object item; // info. about power station
start = position; // store initial position
item = radar(PowerStation); // look for station
goto(item.position); // go to the power station
while ( energyCell.energyLevel < 1 )
{
wait(1); // wait until recharged
}
goto(start); // go back to initial pos.
message("Recharge completed");
}
extern void object::Recharge2()
{
point start; // variable for initial pos.
object item; // info. about power station
start = position; // store initial position
item = radar(PowerStation); // look for station
goto(item.position); // go to the power station
while ( energyCell.energyLevel < 1 )
{
wait(1); // wait until recharged
}
goto(start); // go back to initial pos.
message("Recharge completed");
}

View File

@ -1,18 +1,18 @@
extern void object::Recharge3()
{
point start; // variable for initial pos.
object item; // info. about power station
start = position; // store initial position
item = radar(PowerCaptor); // look for station
goto(item.position); // go to the power station
while ( energyCell.energyLevel < 1 )
{
wait(1); // wait until recharged
}
goto(start); // go back to initial pos.
message("Recharge completed");
}
extern void object::Recharge3()
{
point start; // variable for initial pos.
object item; // info. about power station
start = position; // store initial position
item = radar(PowerCaptor); // look for station
goto(item.position); // go to the power station
while ( energyCell.energyLevel < 1 )
{
wait(1); // wait until recharged
}
goto(start); // go back to initial pos.
message("Recharge completed");
}

View File

@ -1,57 +1,57 @@
extern void object::Convert( )
{
object p;
point pConvert;
p = radar(Converter);
if ( p == null )
{
message("Vous devez d'abord construire un convertisseur");
return;
}
pConvert = p.position;
while ( true )
{
if ( load.category != TitaniumOre )
{
p = radar(TitaniumOre);
if ( p == null )
{
message("Minerai pas trouvé");
return;
}
goto(p.position);
grab(); // prend minerai
p = radar(Converter);
if ( p == null )
{
message("Convertisseur pas trouvé");
return;
}
goto(p.position);
drop(); // dépose minerai
move(-4);
wait(15); // attend conversion
move(4);
grab(); // prend métal
move(-4);
}
p = radar(SpaceShip);
if ( p == null )
{
message("Vaisseau spatial pas trouvé");
return;
}
goto(p.position);
drop(); // dépose minerai
if ( energyCell.energyLevel < 0.25 )
{
message("Veuillez changer la pile");
return;
}
}
}
extern void object::Convert( )
{
object p;
point pConvert;
p = radar(Converter);
if ( p == null )
{
message("Vous devez d'abord construire un convertisseur");
return;
}
pConvert = p.position;
while ( true )
{
if ( load.category != TitaniumOre )
{
p = radar(TitaniumOre);
if ( p == null )
{
message("Minerai pas trouvé");
return;
}
goto(p.position);
grab(); // prend minerai
p = radar(Converter);
if ( p == null )
{
message("Convertisseur pas trouvé");
return;
}
goto(p.position);
drop(); // dépose minerai
move(-4);
wait(15); // attend conversion
move(4);
grab(); // prend métal
move(-4);
}
p = radar(SpaceShip);
if ( p == null )
{
message("Vaisseau spatial pas trouvé");
return;
}
goto(p.position);
drop(); // dépose minerai
if ( energyCell.energyLevel < 0.25 )
{
message("Veuillez changer la pile");
return;
}
}
}

View File

@ -1,11 +1,11 @@
extern void object::SwitchCell1()
{
grab(InFront); // take the new cell in front
drop(Behind); // and drop it behind
grab(EnergyCell); // take the cell from the bot
drop(InFront); // and drop it in front
grab(Behind); // take the new cell
drop(EnergyCell); // and drop it on the bot
}
extern void object::SwitchCell1()
{
grab(InFront); // take the new cell in front
drop(Behind); // and drop it behind
grab(EnergyCell); // take the cell from the bot
drop(InFront); // and drop it in front
grab(Behind); // take the new cell
drop(EnergyCell); // and drop it on the bot
}

View File

@ -1,8 +1,8 @@
extern void object::Flash( )
{
while ( true )
{
if ( energyCell.energyLevel == 0 ) break;
wait(1);
}
}
extern void object::Flash( )
{
while ( true )
{
if ( energyCell.energyLevel == 0 ) break;
wait(1);
}
}

View File

@ -1,47 +1,47 @@
extern void object::Activity( )
{
float d1, d2;
errmode(0); // ne stoppe pas si erreur
while ( true )
{
d1 = 2+rand()*2;
d2 = 1+rand()*3;
turn(-50);
turn(110);
turn(30);
move(d1);
wait(0.5);
turn(-90);
if ( rand() < 0.5 )
{
wait(2+rand()*2);
}
else
{
turn(-60);
turn(110);
turn(-50);
}
turn(-90);
move(d1+d2);
wait(0.5);
turn(90);
if ( rand() < 0.5 )
{
wait(2+rand()*2);
}
else
{
turn(-30);
turn(60);
turn(-30);
}
turn(90);
move(d2);
wait(0.5);
turn(-90);
}
}
extern void object::Activity( )
{
float d1, d2;
errmode(0); // ne stoppe pas si erreur
while ( true )
{
d1 = 2+rand()*2;
d2 = 1+rand()*3;
turn(-50);
turn(110);
turn(30);
move(d1);
wait(0.5);
turn(-90);
if ( rand() < 0.5 )
{
wait(2+rand()*2);
}
else
{
turn(-60);
turn(110);
turn(-50);
}
turn(-90);
move(d1+d2);
wait(0.5);
turn(90);
if ( rand() < 0.5 )
{
wait(2+rand()*2);
}
else
{
turn(-30);
turn(60);
turn(-30);
}
turn(90);
move(d2);
wait(0.5);
turn(-90);
}
}

View File

@ -1,16 +1,16 @@
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
turn(-144);
move(2);
turn(-90);
wait(5+rand()*8);
turn(-90);
move(2);
turn(-36);
wait(2+rand()*5);
}
}
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
turn(-144);
move(2);
turn(-90);
wait(5+rand()*8);
turn(-90);
move(2);
turn(-36);
wait(2+rand()*5);
}
}

View File

@ -1,22 +1,22 @@
extern void object::Activity( )
{
float dist;
errmode(0); // ne stoppe pas si erreur
while ( true )
{
dist = 2+rand()*3;
turn(90);
move(dist);
wait(0.5);
turn(-90);
wait(2+rand()*3);
turn(-90);
move(dist);
wait(0.5);
turn(90);
wait(1+rand()*1);
}
}
extern void object::Activity( )
{
float dist;
errmode(0); // ne stoppe pas si erreur
while ( true )
{
dist = 2+rand()*3;
turn(90);
move(dist);
wait(0.5);
turn(-90);
wait(2+rand()*3);
turn(-90);
move(dist);
wait(0.5);
turn(90);
wait(1+rand()*1);
}
}

View File

@ -1,10 +1,10 @@
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
goto(15,-6, 0,0,1);
goto(2,-6, 0,0,1);
}
}
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
goto(15,-6, 0,0,1);
goto(2,-6, 0,0,1);
}
}

View File

@ -1,13 +1,13 @@
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
wait(2);
goto(-13,-16, 0,0,1);
turn(180);
goto(14,-12, 0,0,1);
turn(180);
}
}
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
wait(2);
goto(-13,-16, 0,0,1);
turn(180);
goto(14,-12, 0,0,1);
turn(180);
}
}

View File

@ -1,29 +1,29 @@
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
goto(-10,-12, 0,0,1);
wait(1);
grab();
turn(180);
goto( -3,-12, 0,0,1);
drop();
wait(1);
turn(180);
goto(-10,-12, 0,0,1);
turn(180);
goto( -3,-12, 0,0,1);
wait(1);
grab();
turn(180);
goto(-10,-12, 0,0,1);
drop();
turn(180);
goto( -3,-12, 0,0,1);
turn(180);
}
}
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
goto(-10,-12, 0,0,1);
wait(1);
grab();
turn(180);
goto( -3,-12, 0,0,1);
drop();
wait(1);
turn(180);
goto(-10,-12, 0,0,1);
turn(180);
goto( -3,-12, 0,0,1);
wait(1);
grab();
turn(180);
goto(-10,-12, 0,0,1);
drop();
turn(180);
goto( -3,-12, 0,0,1);
turn(180);
}
}

View File

@ -1,23 +1,23 @@
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
motor(-0.2, 0.2);
wait(1);
motor(0.2, -0.2);
wait(1);
motor(0, 0);
wait(4);
motor(0.4, -0.4);
wait(2);
motor(0, 0);
wait(1);
motor(-0.4, 0.4);
wait(2);
motor(0, 0);
wait(1);
}
}
extern void object::Activity( )
{
errmode(0); // ne stoppe pas si erreur
while ( true )
{
motor(-0.2, 0.2);
wait(1);
motor(0.2, -0.2);
wait(1);
motor(0, 0);
wait(4);
motor(0.4, -0.4);
wait(2);
motor(0, 0);
wait(1);
motor(-0.4, 0.4);
wait(2);
motor(0, 0);
wait(1);
}
}

View File

@ -1,18 +1,18 @@
extern void object::KillAnt1()
{
object item; // info. about object
goto(-30, 0); // go west
aim(0); // aim straight
while ( true ) // repeat forever:
{
item = radar(AlienAnt, 0, 360, 0, 40);
if ( item != null ) // ant detected ?
{
turn(direction(item.position));
fire(0.5); // shoot 0.5 s
}
wait(1); // wait 1 second
}
}
extern void object::KillAnt1()
{
object item; // info. about object
goto(-30, 0); // go west
aim(0); // aim straight
while ( true ) // repeat forever:
{
item = radar(AlienAnt, 0, 360, 0, 40);
if ( item != null ) // ant detected ?
{
turn(direction(item.position));
fire(0.5); // shoot 0.5 s
}
wait(1); // wait 1 second
}
}

View File

@ -1,48 +1,48 @@
extern void object::Produce( )
{
point path[4];
int i;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
path[0].x = cmdline(0);
path[0].y = cmdline(1);
path[1].x = cmdline(2);
path[1].y = cmdline(3);
path[2].x = cmdline(4);
path[2].y = cmdline(5);
path[3].x = cmdline(6);
path[3].y = cmdline(7);
i = 1;
while ( true )
{
goto(path[i%4]);
if ( i%5 == 4 && WaspCount() < 2 )
{
produce(position, orientation, AlienWasp, "wasp01.txt");
}
i ++;
}
}
int object::WaspCount()
{
object item;
int total = 0;
int i = 0;
while ( true )
{
item = retobject(i++);
if ( item == null ) return total;
if ( item.category == AlienWasp )
{
total ++;
}
}
}
extern void object::Produce( )
{
point path[4];
int i;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
path[0].x = cmdline(0);
path[0].y = cmdline(1);
path[1].x = cmdline(2);
path[1].y = cmdline(3);
path[2].x = cmdline(4);
path[2].y = cmdline(5);
path[3].x = cmdline(6);
path[3].y = cmdline(7);
i = 1;
while ( true )
{
goto(path[i%4]);
if ( i%5 == 4 && WaspCount() < 2 )
{
produce(position, orientation, AlienWasp, "wasp01.txt");
}
i ++;
}
}
int object::WaspCount()
{
object item;
int total = 0;
int i = 0;
while ( true )
{
item = retobject(i++);
if ( item == null ) return total;
if ( item.category == AlienWasp )
{
total ++;
}
}
}

View File

@ -1,74 +1,74 @@
extern void object::Produce( )
{
point path[7];
int i;
float r;
errmode(0); // ne stoppe pas si erreur
ipf(10); // 10 instructions / second
while ( ismovie() != 0 ) wait(1);
path[0].x = cmdline(0);
path[0].y = cmdline(1);
path[1].x = cmdline(2);
path[1].y = cmdline(3);
path[2].x = cmdline(4);
path[2].y = cmdline(5);
path[3].x = cmdline(6);
path[3].y = cmdline(7);
path[4].x = cmdline(8);
path[4].y = cmdline(9);
path[5].x = cmdline(10);
path[5].y = cmdline(11);
path[6].x = cmdline(12);
path[6].y = cmdline(13);
i = 1;
while ( true )
{
goto(path[i%7]);
if ( rand() < 0.2 ) // attaqueuse 1x / 5
{
produce(position, orientation, AlienAnt, "antattsw.txt");
}
else
{
if ( AlienCount() < 10 )
{
r = rand();
if( r < 0.3 )
{
produce(position, orientation, AlienAnt, "antt41.txt");
}
if( r >= 0.6 )
{
produce(position, orientation, AlienAnt, "antt42.txt");
}
if( r < 0.6 and r >= 0.3 )
{
produce(position, orientation, AlienAnt, "antt43.txt");
}
}
}
i ++;
}
}
int object::AlienCount()
{
object item;
int total = 0;
int i = 0;
while ( true )
{
item = retobject(i++);
if ( item == null ) return total;
if ( item.category == AlienAnt )
{
total ++;
}
}
}
extern void object::Produce( )
{
point path[7];
int i;
float r;
errmode(0); // ne stoppe pas si erreur
ipf(10); // 10 instructions / second
while ( ismovie() != 0 ) wait(1);
path[0].x = cmdline(0);
path[0].y = cmdline(1);
path[1].x = cmdline(2);
path[1].y = cmdline(3);
path[2].x = cmdline(4);
path[2].y = cmdline(5);
path[3].x = cmdline(6);
path[3].y = cmdline(7);
path[4].x = cmdline(8);
path[4].y = cmdline(9);
path[5].x = cmdline(10);
path[5].y = cmdline(11);
path[6].x = cmdline(12);
path[6].y = cmdline(13);
i = 1;
while ( true )
{
goto(path[i%7]);
if ( rand() < 0.2 ) // attaqueuse 1x / 5
{
produce(position, orientation, AlienAnt, "antattsw.txt");
}
else
{
if ( AlienCount() < 10 )
{
r = rand();
if( r < 0.3 )
{
produce(position, orientation, AlienAnt, "antt41.txt");
}
if( r >= 0.6 )
{
produce(position, orientation, AlienAnt, "antt42.txt");
}
if( r < 0.6 and r >= 0.3 )
{
produce(position, orientation, AlienAnt, "antt43.txt");
}
}
}
i ++;
}
}
int object::AlienCount()
{
object item;
int total = 0;
int i = 0;
while ( true )
{
item = retobject(i++);
if ( item == null ) return total;
if ( item.category == AlienAnt )
{
total ++;
}
}
}

View File

@ -1,49 +1,49 @@
extern void object::Run()
{
point circuit[];
int i, max;
i = 0;
circuit[i].x = 35; circuit[i].y = 55; circuit[i++].z = 10;
circuit[i].x = 37; circuit[i].y = 90; circuit[i++].z = 10;
circuit[i].x = 98; circuit[i].y = 82; circuit[i++].z = 10;
circuit[i].x = 134; circuit[i].y = 104; circuit[i++].z = 10;
circuit[i].x = 112; circuit[i].y = 161; circuit[i++].z = 10;
circuit[i].x = 148; circuit[i].y = 190; circuit[i++].z = 10;
circuit[i].x = 205; circuit[i].y = 216; circuit[i++].z = 10;
circuit[i].x = 244; circuit[i].y = 219; circuit[i++].z = 10;
circuit[i].x = 255; circuit[i].y = 76; circuit[i++].z = 4;
circuit[i].x = 185; circuit[i].y = 45; circuit[i++].z = 10;
circuit[i].x = 162; circuit[i].y = -1; circuit[i++].z = 10;
circuit[i].x = 139; circuit[i].y = -45; circuit[i++].z = 90;
circuit[i].x = 165; circuit[i].y = -80; circuit[i++].z = 10;
circuit[i].x = 235; circuit[i].y =-134; circuit[i++].z = 10;
circuit[i].x = 226; circuit[i].y =-203; circuit[i++].z = 10;
circuit[i].x = 185; circuit[i].y =-262; circuit[i++].z = 90;
circuit[i].x = 173; circuit[i].y =-300; circuit[i++].z = 90;
circuit[i].x = 144; circuit[i].y =-340; circuit[i++].z = 90;
circuit[i].x = 35; circuit[i].y =-322; circuit[i++].z = 10;
circuit[i].x = -27; circuit[i].y =-240; circuit[i++].z = 10;
circuit[i].x = -87; circuit[i].y =-250; circuit[i++].z = 10;
circuit[i].x =-137; circuit[i].y =-259; circuit[i++].z = 10;
circuit[i].x =-182; circuit[i].y =-274; circuit[i++].z = 10;
max = i;
// for ( i=0 ; i<max ; i++ )
// {
// produce(circuit[i], 0, WayPoint, "");
// }
grab();
for ( i=0 ; i<max ; i++ )
{
goto(circuit[i], circuit[i].z, 1,1);
// message(i);
}
goto(-233, -215, 10, 0,1);
drop();
goto(-333, -64, 20, 1,1);
}
extern void object::Run()
{
point circuit[];
int i, max;
i = 0;
circuit[i].x = 35; circuit[i].y = 55; circuit[i++].z = 10;
circuit[i].x = 37; circuit[i].y = 90; circuit[i++].z = 10;
circuit[i].x = 98; circuit[i].y = 82; circuit[i++].z = 10;
circuit[i].x = 134; circuit[i].y = 104; circuit[i++].z = 10;
circuit[i].x = 112; circuit[i].y = 161; circuit[i++].z = 10;
circuit[i].x = 148; circuit[i].y = 190; circuit[i++].z = 10;
circuit[i].x = 205; circuit[i].y = 216; circuit[i++].z = 10;
circuit[i].x = 244; circuit[i].y = 219; circuit[i++].z = 10;
circuit[i].x = 255; circuit[i].y = 76; circuit[i++].z = 4;
circuit[i].x = 185; circuit[i].y = 45; circuit[i++].z = 10;
circuit[i].x = 162; circuit[i].y = -1; circuit[i++].z = 10;
circuit[i].x = 139; circuit[i].y = -45; circuit[i++].z = 90;
circuit[i].x = 165; circuit[i].y = -80; circuit[i++].z = 10;
circuit[i].x = 235; circuit[i].y =-134; circuit[i++].z = 10;
circuit[i].x = 226; circuit[i].y =-203; circuit[i++].z = 10;
circuit[i].x = 185; circuit[i].y =-262; circuit[i++].z = 90;
circuit[i].x = 173; circuit[i].y =-300; circuit[i++].z = 90;
circuit[i].x = 144; circuit[i].y =-340; circuit[i++].z = 90;
circuit[i].x = 35; circuit[i].y =-322; circuit[i++].z = 10;
circuit[i].x = -27; circuit[i].y =-240; circuit[i++].z = 10;
circuit[i].x = -87; circuit[i].y =-250; circuit[i++].z = 10;
circuit[i].x =-137; circuit[i].y =-259; circuit[i++].z = 10;
circuit[i].x =-182; circuit[i].y =-274; circuit[i++].z = 10;
max = i;
// for ( i=0 ; i<max ; i++ )
// {
// produce(circuit[i], 0, WayPoint, "");
// }
grab();
for ( i=0 ; i<max ; i++ )
{
goto(circuit[i], circuit[i].z, 1,1);
// message(i);
}
goto(-233, -215, 10, 0,1);
drop();
goto(-333, -64, 20, 1,1);
}

View File

@ -1,6 +1,6 @@
extern void object::Outward()
{
shield(1,15); // activate the shield
goto(6,160); // go close to the key
shield(0,15); // deactivate the shield
}
extern void object::Outward()
{
shield(1,15); // activate the shield
goto(6,160); // go close to the key
shield(0,15); // deactivate the shield
}

View File

@ -1,6 +1,6 @@
extern void object::Return()
{
shield(1,15); // activate the shield
goto(8,60); // go to the spaceship
shield(0,15); // deactivate the shield
}
extern void object::Return()
{
shield(1,15); // activate the shield
goto(8,60); // go to the spaceship
shield(0,15); // deactivate the shield
}

View File

@ -1,33 +1,33 @@
extern void object::FollowPhazer()
{
object item; // info. about phazer
point dest; // position where to go
float dist; // distance to phazer
item = radar(PhazerShooter);
if ( item == null )
{
message("No phazer found");
return; // stop the program
}
shield(1, 25); // activate the shield
while ( true ) // repeat forever
{
item = radar(PhazerShooter);// look for phazer
if ( item == null ) break;
dist = distance(item.position, position);
if ( dist < 5 )
{ // if closer than 5 m:
wait(1); // wait
}
else // otherwise:
{ // Calculate a position 5 m before the phazer
dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
goto(dest, 0, 1, 1); // and go there
}
}
}
extern void object::FollowPhazer()
{
object item; // info. about phazer
point dest; // position where to go
float dist; // distance to phazer
item = radar(PhazerShooter);
if ( item == null )
{
message("No phazer found");
return; // stop the program
}
shield(1, 25); // activate the shield
while ( true ) // repeat forever
{
item = radar(PhazerShooter);// look for phazer
if ( item == null ) break;
dist = distance(item.position, position);
if ( dist < 5 )
{ // if closer than 5 m:
wait(1); // wait
}
else // otherwise:
{ // Calculate a position 5 m before the phazer
dest.x = (item.position.x-position.x)*((dist-5)/dist)+position.x;
dest.y = (item.position.y-position.y)*((dist-5)/dist)+position.y;
dest.z = (item.position.z-position.z)*((dist-5)/dist)+position.z;
goto(dest, 0, 1, 1); // and go there
}
}
}

View File

@ -1,63 +1,63 @@
extern void object::Attack( )
{
int enemy;
object p;
float dist;
point nav1, nav2, nav3, nav4, dest;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
// enemy = WheeledGrabber;
enemy = WingedOrgaShooter;
while ( true )
{
p = radar(enemy, 0, 360, 0, 50);
if ( p == null )
{
nav1.x = position.x+2.5;
nav1.y = position.y+2.5;
nav2.x = position.x+2.5;
nav2.y = position.y-2.5;
nav3.x = position.x-2.5;
nav3.y = position.y-2.5;
nav4.x = position.x-2.5;
nav4.y = position.y+2.5;
while ( true )
{
goto(nav1);
p = radar(enemy, 0, 360, 0, 50);
if ( p != null ) break;
goto(nav2);
p = radar(enemy, 0, 360, 0, 50);
if ( p != null ) break;
goto(nav3);
p = radar(enemy, 0, 360, 0, 50);
if ( p != null ) break;
goto(nav4);
p = radar(enemy, 0, 360, 0, 50);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 7.5 )
{
fire();
}
else
{
dest.x = (position.x+p.position.x)/2;
dest.y = (position.y+p.position.y)/2;
dest.z = (position.z+p.position.z)/2;
goto(dest);
}
}
}
}
extern void object::Attack( )
{
int enemy;
object p;
float dist;
point nav1, nav2, nav3, nav4, dest;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
// enemy = WheeledGrabber;
enemy = WingedOrgaShooter;
while ( true )
{
p = radar(enemy, 0, 360, 0, 50);
if ( p == null )
{
nav1.x = position.x+2.5;
nav1.y = position.y+2.5;
nav2.x = position.x+2.5;
nav2.y = position.y-2.5;
nav3.x = position.x-2.5;
nav3.y = position.y-2.5;
nav4.x = position.x-2.5;
nav4.y = position.y+2.5;
while ( true )
{
goto(nav1);
p = radar(enemy, 0, 360, 0, 50);
if ( p != null ) break;
goto(nav2);
p = radar(enemy, 0, 360, 0, 50);
if ( p != null ) break;
goto(nav3);
p = radar(enemy, 0, 360, 0, 50);
if ( p != null ) break;
goto(nav4);
p = radar(enemy, 0, 360, 0, 50);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 7.5 )
{
fire();
}
else
{
dest.x = (position.x+p.position.x)/2;
dest.y = (position.y+p.position.y)/2;
dest.z = (position.z+p.position.z)/2;
goto(dest);
}
}
}
}

View File

@ -1,74 +1,74 @@
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point dest;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = AlienNest;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 30);
if ( p == null )
{
wait(2);
}
else
{
dist = distance(p.position, position);
if ( dist <= 10 )
{
fire();
}
else
{
prox = dist-5;
if ( prox > 25 ) prox = 25;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
}
}
}
}
extern void object::Attack( )
{
int list[];
int i;
object p;
float dist, prox;
point dest;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
list[i++] = Derrick;
list[i++] = BotFactory;
list[i++] = PowerStation;
list[i++] = Converter;
list[i++] = RepairCenter;
list[i++] = DefenseTower;
list[i++] = AlienNest;
list[i++] = ResearchCenter;
list[i++] = RadarStation;
list[i++] = ExchangePost;
list[i++] = PowerPlant;
list[i++] = AutoLab;
list[i++] = NuclearPlant;
while ( true )
{
p = radar(list, 0, 360, 0, 30);
if ( p == null )
{
wait(2);
}
else
{
dist = distance(p.position, position);
if ( dist <= 10 )
{
fire();
}
else
{
prox = dist-5;
if ( prox > 25 ) prox = 25;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
}
}
}
}

View File

@ -1,59 +1,59 @@
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
while ( true )
{
p = radar(list, 0, 360, 0, 10);
if ( p == null ) break;
fire();
}
goto(nav1);
while ( true )
{
p = radar(list, 0, 360, 0, 10);
if ( p == null ) break;
fire();
}
goto(nav2);
}
}
extern void object::Attack( )
{
int list[], i;
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
nav1.x = cmdline(0);
nav1.y = cmdline(1);
nav2.x = cmdline(2);
nav2.y = cmdline(3);
while ( true )
{
while ( true )
{
p = radar(list, 0, 360, 0, 10);
if ( p == null ) break;
fire();
}
goto(nav1);
while ( true )
{
p = radar(list, 0, 360, 0, 10);
if ( p == null ) break;
fire();
}
goto(nav2);
}
}

View File

@ -1,102 +1,102 @@
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 10);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<0)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<0);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.7);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.7, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
fire();
}
}
}
extern void object::Attack( )
{
int list[], i; // liste des objets cherchés
object target; // info sur la cible
point center; // coordonnées du centre de la zone
point lastPos; // dernière position (pr test si bloquée)
float distCent; // rayon de la zone
float r; // valeur aléatoire
errmode(0); // ne stoppe pas si erreur
while ( ismovie() != 0 ) wait(1);
i = 0;
list[i++] = WingedGrabber;
list[i++] = TrackedGrabber;
list[i++] = WheeledGrabber;
list[i++] = LeggedGrabber;
list[i++] = WingedShooter;
list[i++] = TrackedShooter;
list[i++] = WheeledShooter;
list[i++] = LeggedShooter;
list[i++] = WingedOrgaShooter;
list[i++] = TrackedOrgaShooter;
list[i++] = WheeledOrgaShooter;
list[i++] = LeggedOrgaShooter;
list[i++] = WingedSniffer;
list[i++] = TrackedSniffer;
list[i++] = WheeledSniffer;
list[i++] = LeggedSniffer;
list[i++] = Thumper;
list[i++] = PhazerShooter;
list[i++] = Recycler;
list[i++] = Shielder;
list[i++] = Subber;
list[i++] = Me;
center.x = cmdline(0); // prend les coordonnée
center.y = cmdline(1); // du centre de la zone
center.z = 0; // à patrouiller
distCent = cmdline(2); // rayon de la zone
lastPos = position; // initialise
motor(1,1); // en avant toute
while ( true ) // répère à l'infini
{
target = radar(list, 0, 360, 0, 10);
if (target == null or topo(position)<0)// pas de cible à proximité
{ // ou pieds dans l'eau
if (distance2d(position, center) > distCent or topo(position)<0)
{ // si la fourmi est en dehors de la zone
motor(0, 0); //s'arrête
wait(0.5); //marque un arrêt
motor (-0.5, -0.5);//recule lentement
wait (1.5); //attend qu'ait reculé
turn(direction(center));
motor (1, 1); //puis en avant toute
do
{
lastPos = position;
wait(1); //tant que pas dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
turn(direction(center));
}
}
while (distance2d(position, center) > distCent or topo(position)<0);
}
else
{ //si elle est bien dans la zone
if (distance2d(lastPos, position) < 0.2)
{ //si elle est bloquée par obstacle
turn(rand()*360-180);
motor(1,1);
wait(1);
}
r = rand();
if (r > 0.6)
{ //dans un cas sur dix
motor (1, 0.7);// tourne à droite
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
if (r < 0.4)
{ //dans un cas sur dix
motor (0.7, 1);// tourne à gauche
wait(rand()*3);// pendant un moment
motor (1, 1); // puis tout droit
}
lastPos = position;
wait(1); //attend un moment
}
}
else
{ // si cible à proximité
fire();
}
}
}

View File

@ -1,20 +1,20 @@
extern void object::Attack( )
{
point traject[10];
int nb, i;
errmode(0);
nb = cmdline(0)+1;
traject[0] = position;
for ( i=1 ; i<nb ; i++ )
{
traject[i].x = cmdline((i-1)*2+1);
traject[i].y = cmdline((i-1)*2+2);
}
for ( i=1 ; true ; i++ )
{
goto(traject[i%nb] ,0,0,2);
}
}
extern void object::Attack( )
{
point traject[10];
int nb, i;
errmode(0);
nb = cmdline(0)+1;
traject[0] = position;
for ( i=1 ; i<nb ; i++ )
{
traject[i].x = cmdline((i-1)*2+1);
traject[i].y = cmdline((i-1)*2+2);
}
for ( i=1 ; true ; i++ )
{
goto(traject[i%nb] ,0,0,2);
}
}

View File

@ -1,21 +1,21 @@
extern void object::Attack( )
{
point traject[10];
int nb, i;
errmode(0);
nb = cmdline(0)+1;
traject[0] = position;
for ( i=1 ; i<nb ; i++ )
{
traject[i].x = cmdline((i-1)*2+1);
traject[i].y = cmdline((i-1)*2+2);
}
for ( i=1 ; true ; i++ )
{
goto(traject[i%nb], 0,0,2);
sniff();
}
}
extern void object::Attack( )
{
point traject[10];
int nb, i;
errmode(0);
nb = cmdline(0)+1;
traject[0] = position;
for ( i=1 ; i<nb ; i++ )
{
traject[i].x = cmdline((i-1)*2+1);
traject[i].y = cmdline((i-1)*2+2);
}
for ( i=1 ; true ; i++ )
{
goto(traject[i%nb], 0,0,2);
sniff();
}
}

View File

@ -1,12 +1,12 @@
extern void object::Solution()
{
turn(90);
while (true)
{
motor(1,-1);
fire(2);
motor(-1,1);
fire(2);
}
}
extern void object::Solution()
{
turn(90);
while (true)
{
motor(1,-1);
fire(2);
motor(-1,1);
fire(2);
}
}

View File

@ -1,18 +1,18 @@
extern void object::Solution()
{
object item;
jet(0.2);
while(position.z < 20)
{
wait(0.2);
}
jet(0);
while(true)
{
item = radar(AlienAnt);
turn(direction(item.position));
fire(1);
}
}
extern void object::Solution()
{
object item;
jet(0.2);
while(position.z < 20)
{
wait(0.2);
}
jet(0);
while(true)
{
item = radar(AlienAnt);
turn(direction(item.position));
fire(1);
}
}

View File

@ -1,22 +1,22 @@
extern void object::Solution()
{
object item;
jet(0.2);
while(position.z < 20)
{
wait(0.2);
}
jet(0);
while(true)
{
item = radar(AlienAnt);
turn(direction(item.position));
while (radar(AlienAnt, 0, 360, 0, 40) == null)
{
wait(0.2);
}
fire(1);
}
}
extern void object::Solution()
{
object item;
jet(0.2);
while(position.z < 20)
{
wait(0.2);
}
jet(0);
while(true)
{
item = radar(AlienAnt);
turn(direction(item.position));
while (radar(AlienAnt, 0, 360, 0, 40) == null)
{
wait(0.2);
}
fire(1);
}
}

View File

@ -1,28 +1,28 @@
extern void object::Solution()
{
object item;
aim(-20);
jet(0.2);
while (position.z < 10)
{
wait(0.2);
}
while (true)
{
while (radar(AlienAnt, 0, 360, 0, 20) == null)
{
item = radar(AlienAnt);
turn(direction(item.position));
motor(1,1);
wait(0.2);
}
fire(1);
}
}
extern void object::Solution()
{
object item;
aim(-20);
jet(0.2);
while (position.z < 10)
{
wait(0.2);
}
while (true)
{
while (radar(AlienAnt, 0, 360, 0, 20) == null)
{
item = radar(AlienAnt);
turn(direction(item.position));
motor(1,1);
wait(0.2);
}
fire(1);
}
}

View File

@ -1,35 +1,35 @@
extern void object::Solution()
{
object item;
aim(-20);
while (true)
{
while (radar(AlienAnt, 0, 360, 0, 20) == null)
{
item = radar(AlienAnt);
turn(direction(item.position));
motor(1,1);
jet(0);
if (position.z-topo(position) < 6)
{
jet(1);
}
if (position.z-topo(position) > 9)
{
jet(-1);
}
wait(0.2);
}
fire(1);
}
}
extern void object::Solution()
{
object item;
aim(-20);
while (true)
{
while (radar(AlienAnt, 0, 360, 0, 20) == null)
{
item = radar(AlienAnt);
turn(direction(item.position));
motor(1,1);
jet(0);
if (position.z-topo(position) < 6)
{
jet(1);
}
if (position.z-topo(position) > 9)
{
jet(-1);
}
wait(0.2);
}
fire(1);
}
}

View File

@ -1,14 +1,14 @@
extern void object::Solution()
{
grab();
turn(90);
drop();
turn(-180);
grab();
turn(90);
drop();
}
extern void object::Solution()
{
grab();
turn(90);
drop();
turn(-180);
grab();
turn(90);
drop();
}

View File

@ -1,18 +1,18 @@
extern void object::Solution()
{
object item;
while(true)
{
item = radar(PowerCell);
goto(item.position);
grab();
item = radar(WingedShooter);
goto(item.position);
drop();
}
}
extern void object::Solution()
{
object item;
while(true)
{
item = radar(PowerCell);
goto(item.position);
grab();
item = radar(WingedShooter);
goto(item.position);
drop();
}
}

View File

@ -1,33 +1,32 @@
extern void object::Solution( )
{
aim(-3);
while ( true )
{
object target;
float a, b;
target = radar(TargetBot);
if ( target == null ) break;
a = direction(target.position);
turn(a);
target = radar(TargetBot);
if ( target == null ) break;
b = direction(target.position);
if ( a == b ) // standing still ?
{
wait(0.2);
target = radar(TargetBot);
if ( target == null ) break;
a = direction(target.position);
if ( a == b )
{
fire(2);
wait(2);
}
}
}
}
extern void object::Solution( )
{
aim(-3);
while ( true )
{
object target;
float a, b;
target = radar(TargetBot);
if ( target == null ) break;
a = direction(target.position);
turn(a);
target = radar(TargetBot);
if ( target == null ) break;
b = direction(target.position);
if ( a == b ) // standing still ?
{
wait(0.2);
target = radar(TargetBot);
if ( target == null ) break;
a = direction(target.position);
if ( a == b )
{
fire(2);
wait(2);
}
}
}
}

View File

@ -1,10 +1,10 @@
extern void object::Chasse( )
{
while ( true )
{
float x = 10+rand()*20;
float y = -62;
goto(x,y,0);
wait(1);
}
}
extern void object::Chasse( )
{
while ( true )
{
float x = 10+rand()*20;
float y = -62;
goto(x,y,0);
wait(1);
}
}

View File

@ -1,10 +1,10 @@
extern void object::Chasse( )
{
while ( true )
{
float x = 33;
float y = -85+rand()*20;
goto(x,y,0);
wait(1);
}
}
extern void object::Chasse( )
{
while ( true )
{
float x = 33;
float y = -85+rand()*20;
goto(x,y,0);
wait(1);
}
}

View File

@ -1,10 +1,10 @@
extern void object::Chasse( )
{
while ( true )
{
float x = 10+rand()*20;
float y = -88;
goto(x,y,0);
wait(1);
}
}
extern void object::Chasse( )
{
while ( true )
{
float x = 10+rand()*20;
float y = -88;
goto(x,y,0);
wait(1);
}
}

View File

@ -1,10 +1,10 @@
extern void object::Chasse( )
{
while ( true )
{
float x = 7;
float y = -85+rand()*20;
goto(x,y,0);
wait(1);
}
}
extern void object::Chasse( )
{
while ( true )
{
float x = 7;
float y = -85+rand()*20;
goto(x,y,0);
wait(1);
}
}

View File

@ -1,17 +1,16 @@
extern void object::Solution( )
{
point start;
start = position; // remember starting position
motor(1, 1); // full throttle
while ( true ) // repeat forever
{
float len = distance(position, start);
if ( len > 25-2 )
{
motor( (25-len)/2, (25-len)/2 );
}
}
}
extern void object::Solution( )
{
point start;
start = position; // remember starting position
motor(1, 1); // full throttle
while ( true ) // repeat forever
{
float len = distance(position, start);
if ( len > 25-2 )
{
motor( (25-len)/2, (25-len)/2 );
}
}
}

View File

@ -1,19 +1,19 @@
extern void object::Solution( )
{
while ( true )
{
float left, right;
left = radar(WayPoint, 45, 120, 0, 20);
right = radar(WayPoint, -45, 120, 0, 20);
if ( left == 0 && right == 0 ) // nothing ?
{
turn(180); // turn around
}
else
{
motor(left, right);
}
}
}
extern void object::Solution( )
{
while ( true )
{
float left, right;
left = radar(WayPoint, 45, 120, 0, 20);
right = radar(WayPoint, -45, 120, 0, 20);
if ( left == 0 && right == 0 ) // nothing ?
{
turn(180); // turn around
}
else
{
motor(left, right);
}
}
}

View File

@ -1,11 +1,11 @@
extern void object::Solution( )
{
float dir;
for ( int i=0 ; i<5 ; i=i+1 )
{
move(20);
dir = receive("Direction");
turn(dir);
}
}
extern void object::Solution( )
{
float dir;
for ( int i=0 ; i<5 ; i=i+1 )
{
move(20);
dir = receive("Direction");
turn(dir);
}
}

View File

@ -1,16 +1,16 @@
extern void object::Solution( )
{
float dir, len;
while ( true )
{
dir = receive("Direction");
if ( dir == nan ) break;
len = receive("Length");
if ( len == nan ) break;
turn(dir);
move(len);
}
}
extern void object::Solution( )
{
float dir, len;
while ( true )
{
dir = receive("Direction");
if ( dir == nan ) break;
len = receive("Length");
if ( len == nan ) break;
turn(dir);
move(len);
}
}

View File

@ -1,33 +1,33 @@
extern void object::Solution( )
{
while ( true )
{
object target;
float dir, len;
target = radar(TargetBot);
if ( target == null )
{
motor(0, 0); // stop
break;
}
len = distance(position, target.position);
if ( len < 5 ) // too close ?
{
motor(len/5-1, len/5-1); // move backward
}
else
{
dir = direction(target.position);
if ( dir < 0 ) // on the right ?
{
motor(1, 1+dir/90);
}
else // on the left ?
{
motor(1-dir/90, 1);
}
}
}
}
extern void object::Solution( )
{
while ( true )
{
object target;
float dir, len;
target = radar(TargetBot);
if ( target == null )
{
motor(0, 0); // stop
break;
}
len = distance(position, target.position);
if ( len < 5 ) // too close ?
{
motor(len/5-1, len/5-1); // move backward
}
else
{
dir = direction(target.position);
if ( dir < 0 ) // on the right ?
{
motor(1, 1+dir/90);
}
else // on the left ?
{
motor(1-dir/90, 1);
}
}
}
}

View File

@ -1,43 +1,42 @@
extern void object::Hare( )
{
int nb = 0;
while ( true )
{
point dest;
float dist;
object bot;
do
{
dest.x = 8+rand()*24;
dest.y = -89.5+rand()*24;
dist = distance(dest, position);
}
while ( dist < 10 );
goto(dest);
wait(2);
bot = radar(PracticeBot, 0, 360, 0, 10);
if ( bot == null )
{
nb = 0;
message("Failure, you are too far away. Start again 10x.");
}
else
{
nb ++;
if ( nb < 10 )
{
message("Distance OK, "+(10-nb)+" more to come");
}
else
{
message("Well done, let's go home.");
goto(-2, -77.5, 0);
break;
}
}
}
}
extern void object::Hare( )
{
int nb = 0;
while ( true )
{
point dest;
float dist;
object bot;
do
{
dest.x = 8+rand()*24;
dest.y = -89.5+rand()*24;
dist = distance(dest, position);
}
while ( dist < 10 );
goto(dest);
wait(2);
bot = radar(PracticeBot, 0, 360, 0, 10);
if ( bot == null )
{
nb = 0;
message("Failure, you are too far away. Start again 10x.");
}
else
{
nb ++;
if ( nb < 10 )
{
message("Distance OK, "+(10-nb)+" more to come");
}
else
{
message("Well done, let's go home.");
goto(-2, -77.5, 0);
break;
}
}
}
}

View File

@ -1,10 +1,10 @@
extern void object::Solution( )
{
for ( int i=0 ; i<6 ; i=i+1 ) // repeat 6 times
{
move(5); // move 5m forward
turn(90); // quarter turn left
fire(1); // shoot
turn(-90); // quarter turn right
}
}
extern void object::Solution( )
{
for ( int i=0 ; i<6 ; i=i+1 ) // repeat 6 times
{
move(5); // move 5m forward
turn(90); // quarter turn left
fire(1); // shoot
turn(-90); // quarter turn right
}
}

View File

@ -1,10 +1,10 @@
extern void object::Solution( )
{
for ( int i=0 ; i<4 ; i=i+1 ) // repeat 4 times
{
move(10); // move 10m forward
turn(90); // quarter turn left
fire(1); // destroy the target
turn(-180); // turns around
}
}
extern void object::Solution( )
{
for ( int i=0 ; i<4 ; i=i+1 ) // repeat 4 times
{
move(10); // move 10m forward
turn(90); // quarter turn left
fire(1); // destroy the target
turn(-180); // turns around
}
}

View File

@ -1,16 +1,16 @@
extern void object::CollectTitanium1()
{
// 1) Variable definition.
object item; // info. about objects
// 2) Go to the titanium ore and grab it.
item = radar(TitaniumOre);// look for titanium ore
goto(item.position); // go to the position
grab(); // grab the titanium
// 3) Go to the converter and drop it.
item = radar(Converter); // look for converter
goto(item.position); // go to the position
drop(); // drop the titanium
move(-2.5); // step back 2.5 m
}
extern void object::CollectTitanium1()
{
// 1) Variable definition.
object item; // info. about objects
// 2) Go to the titanium ore and grab it.
item = radar(TitaniumOre);// look for titanium ore
goto(item.position); // go to the position
grab(); // grab the titanium
// 3) Go to the converter and drop it.
item = radar(Converter); // look for converter
goto(item.position); // go to the position
drop(); // drop the titanium
move(-2.5); // step back 2.5 m
}

View File

@ -1,24 +1,24 @@
extern void object::CollectTitanium2()
{
// 1) Variable definition.
object item; // info. about objects
// 2) Go to the titanium ore and grab it.
item = radar(TitaniumOre);// look for titanium ore
goto(item.position); // go to the position
grab(); // grab the titanium
// 3) Go to the converter and drop it.
item = radar(Converter); // look for converter
goto(item.position); // go to the position
drop(); // drop the titanium
move(-2.5); // step back 2.5 m
// 4) If power cell half empty, recharges.
if ( energyCell.energyLevel < 0.5 )
{ // if so:
item = radar(PowerStation); // look for station
goto(item.position); // go there
wait(5); // wait
}
}
extern void object::CollectTitanium2()
{
// 1) Variable definition.
object item; // info. about objects
// 2) Go to the titanium ore and grab it.
item = radar(TitaniumOre);// look for titanium ore
goto(item.position); // go to the position
grab(); // grab the titanium
// 3) Go to the converter and drop it.
item = radar(Converter); // look for converter
goto(item.position); // go to the position
drop(); // drop the titanium
move(-2.5); // step back 2.5 m
// 4) If power cell half empty, recharges.
if ( energyCell.energyLevel < 0.5 )
{ // if so:
item = radar(PowerStation); // look for station
goto(item.position); // go there
wait(5); // wait
}
}

View File

@ -1,48 +1,48 @@
extern void object::CollectTitanium3()
{
// 1) Variable definition.
object item; // info. about objects
while (true) // repeat forever
{
// 2) Go to the titanium ore and grab it.
item = radar(TitaniumOre);// look for titanium ore
goto(item.position); // go to the position
grab(); // grab the titanium
// 3) Go to the converter and drop it.
item = radar(Converter); // look for converter
goto(item.position); // go to the position
drop(); // drop the titanium
move(-2.5); // step back 2.5 m
// 4) Wait until titanium converted and grabs
do
{
wait(1); // wait for cube
item = radar(Titanium, 0, 45, 0, 5);
}
while ( item == null );
goto(item.position);
grab(); // take it
// 5) Go to free space and drop it
goto(space(position)); // go to free space
drop(); // drop titanium
// If power cell half empty, recharges.
if ( energyCell.energyLevel < 0.5 )
{ // if so:
item = radar(PowerStation);
if ( item != null ) // station found ?
{
goto(item.position); // go there
while ( energyCell.energyLevel < 1 )
{ // until recharged:
wait(1); // wait
}
}
}
}
}
extern void object::CollectTitanium3()
{
// 1) Variable definition.
object item; // info. about objects
while (true) // repeat forever
{
// 2) Go to the titanium ore and grab it.
item = radar(TitaniumOre);// look for titanium ore
goto(item.position); // go to the position
grab(); // grab the titanium
// 3) Go to the converter and drop it.
item = radar(Converter); // look for converter
goto(item.position); // go to the position
drop(); // drop the titanium
move(-2.5); // step back 2.5 m
// 4) Wait until titanium converted and grabs
do
{
wait(1); // wait for cube
item = radar(Titanium, 0, 45, 0, 5);
}
while ( item == null );
goto(item.position);
grab(); // take it
// 5) Go to free space and drop it
goto(space(position)); // go to free space
drop(); // drop titanium
// If power cell half empty, recharges.
if ( energyCell.energyLevel < 0.5 )
{ // if so:
item = radar(PowerStation);
if ( item != null ) // station found ?
{
goto(item.position); // go there
while ( energyCell.energyLevel < 1 )
{ // until recharged:
wait(1); // wait
}
}
}
}
}

View File

@ -1,50 +1,50 @@
extern void object::CollectTitanium4()
{
// 1) Variable definition.
object item; // info. about objects
while (true) // repeat forever
{
// 2) Go to the titanium ore and grab it.
item = radar(TitaniumOre);// look for titanium ore
goto(item.position); // go to the position
grab(); // grab the titanium
// 3) Go to the converter and drop it.
item = radar(Converter); // look for converter
goto(item.position); // go to the position
drop(); // drop the titanium
move(-2.5); // step back 2.5 m
// 4) Wait until titanium converted and grabs
do
{
wait(1); // wait for cube
item = radar(Titanium, 0, 45, 0, 5);
}
while ( item == null );
goto(item.position);
grab(); // take it
// 5) Go to free space and drop it
goto(space(position)); // go to free space
drop(); // drop titanium
// If power cell half empty, recharges.
if ( energyCell.energyLevel < 0.5 )
{ // if so:
item = radar(PowerCaptor);
if ( item != null ) // station found ?
{
goto(item.position); // go there
while ( energyCell.energyLevel < 1 )
{ // until recharged:
wait(1); // wait
}
}
}
}
}
extern void object::CollectTitanium4()
{
// 1) Variable definition.
object item; // info. about objects
while (true) // repeat forever
{
// 2) Go to the titanium ore and grab it.
item = radar(TitaniumOre);// look for titanium ore
goto(item.position); // go to the position
grab(); // grab the titanium
// 3) Go to the converter and drop it.
item = radar(Converter); // look for converter
goto(item.position); // go to the position
drop(); // drop the titanium
move(-2.5); // step back 2.5 m
// 4) Wait until titanium converted and grabs
do
{
wait(1); // wait for cube
item = radar(Titanium, 0, 45, 0, 5);
}
while ( item == null );
goto(item.position);
grab(); // take it
// 5) Go to free space and drop it
goto(space(position)); // go to free space
drop(); // drop titanium
// If power cell half empty, recharges.
if ( energyCell.energyLevel < 0.5 )
{ // if so:
item = radar(PowerCaptor);
if ( item != null ) // station found ?
{
goto(item.position); // go there
while ( energyCell.energyLevel < 1 )
{ // until recharged:
wait(1); // wait
}
}
}
}
}

View File

@ -1,26 +1,26 @@
extern void object::Solution( )
{
object front, left, right;
front = radar(Barrier, 0, 45, 0, 5);
left = radar(Barrier, 90, 45, 0, 5);
right = radar(Barrier, -90, 45, 0, 5);
if ( front == null )
{
move(5);
return;
}
if ( left == null )
{
turn(90);
move(5);
return;
}
if ( right == null )
{
turn(-90);
move(5);
return;
}
}
extern void object::Solution( )
{
object front, left, right;
front = radar(Barrier, 0, 45, 0, 5);
left = radar(Barrier, 90, 45, 0, 5);
right = radar(Barrier, -90, 45, 0, 5);
if ( front == null )
{
move(5);
return;
}
if ( left == null )
{
turn(90);
move(5);
return;
}
if ( right == null )
{
turn(-90);
move(5);
return;
}
}

View File

@ -1,28 +1,28 @@
extern void object::Solution( )
{
while ( true )
{
object front, left, right;
front = radar(Barrier, 0, 45, 0, 5);
left = radar(Barrier, 90, 45, 0, 5);
right = radar(Barrier, -90, 45, 0, 5);
if ( front == null )
{
move(5);
continue;
}
if ( left == null )
{
turn(90);
continue;
}
if ( right == null )
{
turn(-90);
continue;
}
break;
}
}
extern void object::Solution( )
{
while ( true )
{
object front, left, right;
front = radar(Barrier, 0, 45, 0, 5);
left = radar(Barrier, 90, 45, 0, 5);
right = radar(Barrier, -90, 45, 0, 5);
if ( front == null )
{
move(5);
continue;
}
if ( left == null )
{
turn(90);
continue;
}
if ( right == null )
{
turn(-90);
continue;
}
break;
}
}

View File

@ -1,10 +1,10 @@
extern void object::Solution( )
{
move(20); // go to checkpoint 1
turn(90);
move(20); // go to checkpoint 2
turn(-90);
move(20); // go to checkpoint 3
turn(-90);
move(20); // go to finishing pad
}
extern void object::Solution( )
{
move(20); // go to checkpoint 1
turn(90);
move(20); // go to checkpoint 2
turn(-90);
move(20); // go to checkpoint 3
turn(-90);
move(20); // go to finishing pad
}

View File

@ -1,15 +1,15 @@
extern void object::Solution( )
{
float dist, dir;
dist = 20;
dir = 90;
move(dist); // go to checkpoint 1
turn(dir);
move(dist); // go to checkpoint 2
turn(-dir);
move(dist); // go to checkpoint 3
turn(-dir);
move(dist); // goeto finishing pad
}
extern void object::Solution( )
{
float dist, dir;
dist = 20;
dir = 90;
move(dist); // go to checkpoint 1
turn(dir);
move(dist); // go to checkpoint 2
turn(-dir);
move(dist); // go to checkpoint 3
turn(-dir);
move(dist); // goeto finishing pad
}

View File

@ -1,15 +1,15 @@
extern void object::Solution( )
{
float dist, dir;
dist = 20;
dir = 90;
move(dist);
turn(dir);
move(dist*2);
turn(dir);
move(dist);
turn(dir);
move(dist);
}
extern void object::Solution( )
{
float dist, dir;
dist = 20;
dir = 90;
move(dist);
turn(dir);
move(dist*2);
turn(dir);
move(dist);
turn(dir);
move(dist);
}

View File

@ -1,31 +1,31 @@
extern void object::ServiceTower1()
{
object tower; // info. about tower
object station; // info. about station
// 1) go to the defense tower
tower = radar(DefenseTower); // look for tower
goto(tower.position); // go there
while ( true ) // repeat forever
{
// 2) wait until power cell is empty
while ( tower.energyCell.energyLevel > 0.2 )
{
wait(2);
}
grab(); // grab the power cell
// 3) go to the power station to recharge
station = radar(PowerStation);
goto(station.position); // go there
while ( load.energyLevel < 1 )
{
wait(1); // wait until recharged
}
// 4) go back to defense tower
goto(tower.position); // go to tower
drop(); // drop the power cell
}
}
extern void object::ServiceTower1()
{
object tower; // info. about tower
object station; // info. about station
// 1) go to the defense tower
tower = radar(DefenseTower); // look for tower
goto(tower.position); // go there
while ( true ) // repeat forever
{
// 2) wait until power cell is empty
while ( tower.energyCell.energyLevel > 0.2 )
{
wait(2);
}
grab(); // grab the power cell
// 3) go to the power station to recharge
station = radar(PowerStation);
goto(station.position); // go there
while ( load.energyLevel < 1 )
{
wait(1); // wait until recharged
}
// 4) go back to defense tower
goto(tower.position); // go to tower
drop(); // drop the power cell
}
}

View File

@ -1,15 +1,14 @@
extern void object::Solution( )
{
Square(15);
Square(25);
}
void object::Square(float length)
{
for ( int i=0 ; i<4 ; i=i+1 )
{
move(length);
turn(90);
}
}
extern void object::Solution( )
{
Square(15);
Square(25);
}
void object::Square(float length)
{
for ( int i=0 ; i<4 ; i=i+1 )
{
move(length);
turn(90);
}
}

View File

@ -1,18 +1,18 @@
void object::Part(float length)
{
for ( int i=0 ; i<2 ; i=i+1 )
{
move(length);
turn(90);
}
}
extern void object::Solution( )
{
float rest = 25;
while ( rest > 0 )
{
Part(rest);
rest = rest-5;
}
}
void object::Part(float length)
{
for ( int i=0 ; i<2 ; i=i+1 )
{
move(length);
turn(90);
}
}
extern void object::Solution( )
{
float rest = 25;
while ( rest > 0 )
{
Part(rest);
rest = rest-5;
}
}

View File

@ -1,24 +1,24 @@
extern void object::Solution( )
{
object item;
float dir, dist;
while ( true )
{
do
{
item = radar(AlienAnt, 0, 360, 0, 100);
}
while ( item == null );
dir = direction(item.position);
turn(dir);
dist = distance(item.position, position);
if ( dist < 40 )
{
fire(0.2);
wait(2);
}
}
}
extern void object::Solution( )
{
object item;
float dir, dist;
while ( true )
{
do
{
item = radar(AlienAnt, 0, 360, 0, 100);
}
while ( item == null );
dir = direction(item.position);
turn(dir);
dist = distance(item.position, position);
if ( dist < 40 )
{
fire(0.2);
wait(2);
}
}
}

View File

@ -1,53 +1,53 @@
extern void object::Attack( )
{
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
wait(5);
while ( true )
{
p = radar(WheeledShooter);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(WheeledShooter);
if ( p != null ) break;
goto(nav2);
p = radar(WheeledShooter);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 25 && !advance )
{
fire(p.position);
advance = true;
wait(2);
}
else
{
prox = dist-5;
if ( prox > 25 ) prox = 25;
if ( prox < 15 ) prox = 15;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}
extern void object::Attack( )
{
object p;
float dist, prox;
point nav1, nav2, dest;
boolean advance = true;
wait(5);
while ( true )
{
p = radar(WheeledShooter);
if ( p == null )
{
nav1.x = position.x-5;
nav1.y = position.y;
nav2.x = position.x+5;
nav2.y = position.y;
while ( true )
{
goto(nav1);
p = radar(WheeledShooter);
if ( p != null ) break;
goto(nav2);
p = radar(WheeledShooter);
if ( p != null ) break;
}
}
else
{
dist = distance(p.position, position);
if ( dist <= 25 && !advance )
{
fire(p.position);
advance = true;
wait(2);
}
else
{
prox = dist-5;
if ( prox > 25 ) prox = 25;
if ( prox < 15 ) prox = 15;
dest.x = (position.x-p.position.x)*prox/dist + p.position.x;
dest.y = (position.y-p.position.y)*prox/dist + p.position.y;
dest.z = (position.z-p.position.z)*prox/dist + p.position.z;
goto(dest);
advance = false;
}
}
}
}

View File

@ -1,26 +1,25 @@
extern void object::Solution( )
{
while ( true )
{
object spot;
float dir;
spot = radar(WayPoint);
if ( spot == null ) // no more ?
{
motor(0, 0); // stops
break;
}
dir = direction(spot.position);
if ( dir < 0 ) // on the right ?
{
motor(1, 1+dir/90);
}
else // on the left ?
{
motor(1-dir/90, 1);
}
}
}
extern void object::Solution( )
{
while ( true )
{
object spot;
float dir;
spot = radar(WayPoint);
if ( spot == null ) // no more ?
{
motor(0, 0); // stops
break;
}
dir = direction(spot.position);
if ( dir < 0 ) // on the right ?
{
motor(1, 1+dir/90);
}
else // on the left ?
{
motor(1-dir/90, 1);
}
}
}

View File

@ -1,32 +1,32 @@
extern void object::Sow( )
{
while ( true )
{
float x, y;
x = 8+rand()*24;
y = -89.5+rand()*24;
goto(x,y,0);
produce(position, 0, WayPoint, "");
while ( Compte(WayPoint) >= 20 )
{
wait(2);
}
}
}
int Compte(int cat)
{
int i, total;
object p;
total = 0;
for ( i=0 ; i<10000 ; i++ )
{
p = retobject(i);
if ( p == null ) break;
if ( p.category == cat ) total ++;
}
return total;
}
extern void object::Sow( )
{
while ( true )
{
float x, y;
x = 8+rand()*24;
y = -89.5+rand()*24;
goto(x,y,0);
produce(position, 0, WayPoint, "");
while ( Compte(WayPoint) >= 20 )
{
wait(2);
}
}
}
int Compte(int cat)
{
int i, total;
object p;
total = 0;
for ( i=0 ; i<10000 ; i++ )
{
p = retobject(i);
if ( p == null ) break;
if ( p.category == cat ) total ++;
}
return total;
}

View File

@ -1,14 +1,14 @@
extern void object::Remote( )
{
send("order", 1, 100); // send "grab" order
wait(5);
send("order", 3, 100); // send "move(10)" order
wait(5);
send("order", 2, 100); // send "drop" order
wait(5);
send("order", 4, 100); // send "move(-10)" order
wait(5);
}
extern void object::Remote( )
{
send("order", 1, 100); // send "grab" order
wait(5);
send("order", 3, 100); // send "move(10)" order
wait(5);
send("order", 2, 100); // send "drop" order
wait(5);
send("order", 4, 100); // send "move(-10)" order
wait(5);
}

View File

@ -1,46 +1,46 @@
extern void object::Slave( )
{
float order;
errmode(0); // don't stop on errors
while ( true )
{
// wait for order completion ...
while ( !testinfo("order", 100) )
{
wait(1);
}
// get the order
order = receive("order", 100);
if ( order == 1 )
{
message("grab( )");
grab();
}
else if ( order == 2 )
{
message("drop( )");
drop();
}
else if ( order == 3 )
{
message("move(10)");
move(10);
}
else if ( order == 4 )
{
message("move(-10)");
move(-10);
}
else
{
message("Unknown order");
}
// signal "end of work"
deleteinfo("order", 100);
}
}
extern void object::Slave( )
{
float order;
errmode(0); // don't stop on errors
while ( true )
{
// wait for order completion ...
while ( !testinfo("order", 100) )
{
wait(1);
}
// get the order
order = receive("order", 100);
if ( order == 1 )
{
message("grab( )");
grab();
}
else if ( order == 2 )
{
message("drop( )");
drop();
}
else if ( order == 3 )
{
message("move(10)");
move(10);
}
else if ( order == 4 )
{
message("move(-10)");
move(-10);
}
else
{
message("Unknown order");
}
// signal "end of work"
deleteinfo("order", 100);
}
}

View File

@ -1,25 +1,25 @@
extern void object::Remote( )
{
SendToPost(1, 20); // move(20);
SendToPost(2, 90); // turn(90);
SendToPost(1, 20); // move(20);
SendToPost(2, 90); // turn(90);
SendToPost(1, 10); // move(10);
SendToPost(2, 90); // turn(90);
SendToPost(1, 10); // move(10);
SendToPost(2,-90); // turn(-90);
SendToPost(1, 10); // move(10);
}
void object::SendToPost(float order, float param)
{
// send the order and the parameter
send("order", order, 100);
send("param", param, 100);
// wait for end of work
while ( testinfo("order", 100) )
{
wait(1);
}
}
extern void object::Remote( )
{
SendToPost(1, 20); // move(20);
SendToPost(2, 90); // turn(90);
SendToPost(1, 20); // move(20);
SendToPost(2, 90); // turn(90);
SendToPost(1, 10); // move(10);
SendToPost(2, 90); // turn(90);
SendToPost(1, 10); // move(10);
SendToPost(2,-90); // turn(-90);
SendToPost(1, 10); // move(10);
}
void object::SendToPost(float order, float param)
{
// send the order and the parameter
send("order", order, 100);
send("param", param, 100);
// wait for end of work
while ( testinfo("order", 100) )
{
wait(1);
}
}

View File

@ -1,35 +1,35 @@
extern void object::Slave( )
{
float order, param;
while ( true )
{
// wait for order ...
while ( !testinfo("order", 100) )
{
wait(1);
}
// read the order and the parameter
order = receive("order", 100);
param = receive("param", 100);
if ( order == 1 )
{
message("move("+param+")");
move(param);
}
else if ( order == 2 )
{
message("turn("+param+")");
turn(param);
}
else
{
message("Unknown order");
}
// signal "end of work"
deleteinfo("order", 100);
}
}
extern void object::Slave( )
{
float order, param;
while ( true )
{
// wait for order ...
while ( !testinfo("order", 100) )
{
wait(1);
}
// read the order and the parameter
order = receive("order", 100);
param = receive("param", 100);
if ( order == 1 )
{
message("move("+param+")");
move(param);
}
else if ( order == 2 )
{
message("turn("+param+")");
turn(param);
}
else
{
message("Unknown order");
}
// signal "end of work"
deleteinfo("order", 100);
}
}

View File

@ -1,22 +1,22 @@
extern void object::Remote3( )
{
SendOrder("move(20)");
SendOrder("turn(90)");
SendOrder("move(20)");
SendOrder("turn(90)");
SendOrder("move(10)");
SendOrder("turn(90)");
SendOrder("move(10)");
SendOrder("turn(-90)");
SendOrder("move(10)");
}
void object::SendOrder(string order)
{
exchange list();
while ( list.put(order) == false )
{
wait(1);
}
}
extern void object::Remote3( )
{
SendOrder("move(20)");
SendOrder("turn(90)");
SendOrder("move(20)");
SendOrder("turn(90)");
SendOrder("move(10)");
SendOrder("turn(90)");
SendOrder("move(10)");
SendOrder("turn(-90)");
SendOrder("move(10)");
}
void object::SendOrder(string order)
{
exchange list();
while ( list.put(order) == false )
{
wait(1);
}
}

View File

@ -1,52 +1,52 @@
public class exchange
{
static private string m_order = "";
// Put an order
synchronized bool put(string order)
{
if ( m_order == "" )
{
m_order = order;
return true;
}
else
{
return false;
}
}
// Get an order
synchronized string get()
{
string ret = m_order;
m_order = "";
return ret;
}
}
extern void object::Slave3( )
{
exchange list();
string todo;
while ( true )
{
while ( true )
{
todo = list.get();
if ( todo != "" ) break;
wait(1);
}
message(todo);
if ( strfind(todo, "move") == 0 )
{
move(strval(strmid(todo,5)));
}
if ( strfind(todo, "turn") == 0 )
{
turn(strval(strmid(todo,5)));
}
}
}
public class exchange
{
static private string m_order = "";
// Put an order
synchronized bool put(string order)
{
if ( m_order == "" )
{
m_order = order;
return true;
}
else
{
return false;
}
}
// Get an order
synchronized string get()
{
string ret = m_order;
m_order = "";
return ret;
}
}
extern void object::Slave3( )
{
exchange list();
string todo;
while ( true )
{
while ( true )
{
todo = list.get();
if ( todo != "" ) break;
wait(1);
}
message(todo);
if ( strfind(todo, "move") == 0 )
{
move(strval(strmid(todo,5)));
}
if ( strfind(todo, "turn") == 0 )
{
turn(strval(strmid(todo,5)));
}
}
}

View File

@ -1,26 +1,26 @@
extern void object::Remote4( )
{
SendOrder(1, 20); // move(20);
SendOrder(2, 90); // turn(90);
SendOrder(1, 20); // move(20);
SendOrder(2, 90); // turn(90);
SendOrder(1, 10); // move(10);
SendOrder(2, 90); // turn(90);
SendOrder(1, 10); // move(10);
SendOrder(2,-90); // turn(-90);
SendOrder(1, 10); // move(10);
}
void object::SendOrder(float order, float param)
{
exchange list();
order todo();
todo.m_type = order;
todo.m_param = param;
while ( list.put(todo) == false )
{
wait(1);
}
}
extern void object::Remote4( )
{
SendOrder(1, 20); // move(20);
SendOrder(2, 90); // turn(90);
SendOrder(1, 20); // move(20);
SendOrder(2, 90); // turn(90);
SendOrder(1, 10); // move(10);
SendOrder(2, 90); // turn(90);
SendOrder(1, 10); // move(10);
SendOrder(2,-90); // turn(-90);
SendOrder(1, 10); // move(10);
}
void object::SendOrder(float order, float param)
{
exchange list();
order todo();
todo.m_type = order;
todo.m_param = param;
while ( list.put(todo) == false )
{
wait(1);
}
}

View File

@ -1,68 +1,68 @@
public class order
{
int m_type = nan;
float m_param;
}
public class exchange
{
static private order m_order = new order;
// Put an order
synchronized bool put(order a)
{
if ( m_order.m_type == nan )
{
m_order = a;
return true;
}
else
{
return false;
}
}
// Get an order
synchronized order get()
{
return m_order;
}
// Delete an order.
synchronized void delete()
{
m_order.m_type = nan;
}
}
extern void object::Slave4( )
{
exchange list();
order todo;
while ( true )
{
while ( true )
{
todo = list.get();
if ( todo.m_type != nan ) break;
wait(1);
}
if ( todo.m_type == 1 )
{
message("move("+todo.m_param+")");
move(todo.m_param);
}
else if ( todo.m_type == 2 )
{
message("turn("+todo.m_param+")");
turn(todo.m_param);
}
else
{
message("Unknown order");
}
list.delete();
}
}
public class order
{
int m_type = nan;
float m_param;
}
public class exchange
{
static private order m_order = new order;
// Put an order
synchronized bool put(order a)
{
if ( m_order.m_type == nan )
{
m_order = a;
return true;
}
else
{
return false;
}
}
// Get an order
synchronized order get()
{
return m_order;
}
// Delete an order.
synchronized void delete()
{
m_order.m_type = nan;
}
}
extern void object::Slave4( )
{
exchange list();
order todo;
while ( true )
{
while ( true )
{
todo = list.get();
if ( todo.m_type != nan ) break;
wait(1);
}
if ( todo.m_type == 1 )
{
message("move("+todo.m_param+")");
move(todo.m_param);
}
else if ( todo.m_type == 2 )
{
message("turn("+todo.m_param+")");
turn(todo.m_param);
}
else
{
message("Unknown order");
}
list.delete();
}
}

View File

@ -1,22 +1,22 @@
extern void object::Remote5( )
{
SendOrder(1, 20); // move(20);
SendOrder(2, 90); // turn(90);
SendOrder(1, 20); // move(20);
SendOrder(2, 90); // turn(90);
SendOrder(1, 10); // move(10);
SendOrder(2, 90); // turn(90);
SendOrder(1, 10); // move(10);
SendOrder(2,-90); // turn(-90);
SendOrder(1, 10); // move(10);
}
void object::SendOrder(float order, float param)
{
exchange list();
order todo();
todo.m_type = order;
todo.m_param = param;
list.put(todo);
}
extern void object::Remote5( )
{
SendOrder(1, 20); // move(20);
SendOrder(2, 90); // turn(90);
SendOrder(1, 20); // move(20);
SendOrder(2, 90); // turn(90);
SendOrder(1, 10); // move(10);
SendOrder(2, 90); // turn(90);
SendOrder(1, 10); // move(10);
SendOrder(2,-90); // turn(-90);
SendOrder(1, 10); // move(10);
}
void object::SendOrder(float order, float param)
{
exchange list();
order todo();
todo.m_type = order;
todo.m_param = param;
list.put(todo);
}

View File

@ -1,62 +1,62 @@
public class order
{
int m_type;
float m_param;
}
public class exchange
{
static private order m_fifo[] = null;
// Put an order into the fifo
synchronized void put(order a)
{
m_fifo[sizeof(m_fifo)] = a;
}
// Get an order from the fifo
synchronized order get()
{
if ( sizeof(m_fifo) == 0 ) return null;
order a = m_fifo[0];
order copy[] = null;
for ( int i=1 ; i<sizeof(m_fifo) ; i++ )
{
copy[i-1] = m_fifo[i];
}
m_fifo = copy;
return a;
}
}
extern void object::Slave5( )
{
exchange list();
order todo;
while ( true )
{
while ( true )
{
todo = list.get();
if ( todo != null ) break;
wait(1);
}
if ( todo.m_type == 1 )
{
message("move("+todo.m_param+")");
move(todo.m_param);
}
else if ( todo.m_type == 2 )
{
message("turn("+todo.m_param+")");
turn(todo.m_param);
}
else
{
message("Unknown order");
}
}
}
public class order
{
int m_type;
float m_param;
}
public class exchange
{
static private order m_fifo[] = null;
// Put an order into the fifo
synchronized void put(order a)
{
m_fifo[sizeof(m_fifo)] = a;
}
// Get an order from the fifo
synchronized order get()
{
if ( sizeof(m_fifo) == 0 ) return null;
order a = m_fifo[0];
order copy[] = null;
for ( int i=1 ; i<sizeof(m_fifo) ; i++ )
{
copy[i-1] = m_fifo[i];
}
m_fifo = copy;
return a;
}
}
extern void object::Slave5( )
{
exchange list();
order todo;
while ( true )
{
while ( true )
{
todo = list.get();
if ( todo != null ) break;
wait(1);
}
if ( todo.m_type == 1 )
{
message("move("+todo.m_param+")");
move(todo.m_param);
}
else if ( todo.m_type == 2 )
{
message("turn("+todo.m_param+")");
turn(todo.m_param);
}
else
{
message("Unknown order");
}
}
}

Some files were not shown because too many files have changed in this diff Show More