313 lines
5.2 KiB
Plaintext
313 lines
5.2 KiB
Plaintext
![]() |
object radarGuepe(point orig, float dist)
|
|||
|
{
|
|||
|
int i;
|
|||
|
object pr, r;
|
|||
|
float mindist;
|
|||
|
|
|||
|
i = 0;
|
|||
|
mindist = 1000;
|
|||
|
while (i<30)
|
|||
|
{
|
|||
|
pr = radar(i);
|
|||
|
if (pr != null)
|
|||
|
{
|
|||
|
|
|||
|
if (F(orig, pr.position) < mindist and pr.category == AlienWasp and pr.altitude > 3)
|
|||
|
{
|
|||
|
mindist = distance(orig, pr.position);
|
|||
|
r = pr;
|
|||
|
}
|
|||
|
}
|
|||
|
i = i+1;
|
|||
|
}
|
|||
|
if (mindist < dist) return(r); else return(null);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
class Guepe
|
|||
|
{
|
|||
|
|
|||
|
point pos;
|
|||
|
|
|||
|
|
|||
|
void cherche(point orig, float dist)
|
|||
|
{
|
|||
|
object p;
|
|||
|
point o;
|
|||
|
|
|||
|
p = radarGuepe(orig, dist);
|
|||
|
while (p == null)
|
|||
|
{
|
|||
|
wait(0.1);
|
|||
|
p = radarGuepe(orig, dist);
|
|||
|
}
|
|||
|
|
|||
|
pos.x = p.position.x;
|
|||
|
pos.y = p.position.y;
|
|||
|
pos.z = p.position.z;
|
|||
|
|
|||
|
//o = p.position;
|
|||
|
//wait(0.1);
|
|||
|
|
|||
|
//vitessex = (p.position.x - o.x)/0.1;
|
|||
|
//vitessey = (p.position.y - o.y)/0.1;
|
|||
|
//vitessez = (p.position.z - o.z)/0.1;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void tire(point orig, float orient)
|
|||
|
{
|
|||
|
//float t = 3; //temps d'anticipation
|
|||
|
float angle;
|
|||
|
point cible;
|
|||
|
|
|||
|
cible.x = pos.x;// + t*vitessex;
|
|||
|
cible.y = pos.y;// + t*vitessey;
|
|||
|
cible.z = pos.z;// + t*vitessez;
|
|||
|
|
|||
|
if (cible.x == 0) angle = 90; else
|
|||
|
angle = atan(cible.y / cible.x);
|
|||
|
if (cible.x < 0) angle = angle + 180;
|
|||
|
angle = angle - orient;
|
|||
|
if (angle > 180) angle = angle - 360;
|
|||
|
if (angle < -180) angle = angle + 360;
|
|||
|
turn(angle);
|
|||
|
|
|||
|
angle = atan((cible.z-orig.z) / distance2d(orig, cible));
|
|||
|
aim(angle);
|
|||
|
|
|||
|
fire(0.1);
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
extern void object::Fourmi6()
|
|||
|
{
|
|||
|
//fps(1000);
|
|||
|
Guepe guepe = new Guepe();
|
|||
|
|
|||
|
while (true)
|
|||
|
{
|
|||
|
guepe.cherche(position, 50);
|
|||
|
|
|||
|
guepe.tire(position, orientation);
|
|||
|
}
|
|||
|
}
|
|||
|
object radarGuepe(point orig, float dist)
|
|||
|
{
|
|||
|
int i;
|
|||
|
object pr, r;
|
|||
|
float mindist;
|
|||
|
|
|||
|
i = 0;
|
|||
|
mindist = 1000;
|
|||
|
while (i<30)
|
|||
|
{
|
|||
|
pr = radar(i);
|
|||
|
if (pr != null)
|
|||
|
{
|
|||
|
|
|||
|
if (F(orig, pr.position) < mindist and pr.category == AlienWasp and pr.altitude > 3)
|
|||
|
{
|
|||
|
mindist = distance(orig, pr.position);
|
|||
|
r = pr;
|
|||
|
}
|
|||
|
}
|
|||
|
i = i+1;
|
|||
|
}
|
|||
|
if (mindist < dist) return(r); else return(null);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
class Guepe
|
|||
|
{
|
|||
|
|
|||
|
point pos;
|
|||
|
|
|||
|
|
|||
|
void cherche(point orig, float dist)
|
|||
|
{
|
|||
|
object p;
|
|||
|
point o;
|
|||
|
|
|||
|
p = radarGuepe(orig, dist);
|
|||
|
while (p == null)
|
|||
|
{
|
|||
|
wait(0.1);
|
|||
|
p = radarGuepe(orig, dist);
|
|||
|
}
|
|||
|
|
|||
|
pos.x = p.position.x;
|
|||
|
pos.y = p.position.y;
|
|||
|
pos.z = p.position.z;
|
|||
|
|
|||
|
//o = p.position;
|
|||
|
//wait(0.1);
|
|||
|
|
|||
|
//vitessex = (p.position.x - o.x)/0.1;
|
|||
|
//vitessey = (p.position.y - o.y)/0.1;
|
|||
|
//vitessez = (p.position.z - o.z)/0.1;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void tire(point orig, float orient)
|
|||
|
{
|
|||
|
//float t = 3; //temps d'anticipation
|
|||
|
float angle;
|
|||
|
point cible;
|
|||
|
|
|||
|
cible.x = pos.x;// + t*vitessex;
|
|||
|
cible.y = pos.y;// + t*vitessey;
|
|||
|
cible.z = pos.z;// + t*vitessez;
|
|||
|
|
|||
|
if (cible.x == 0) angle = 90; else
|
|||
|
angle = atan(cible.y / cible.x);
|
|||
|
if (cible.x < 0) angle = angle + 180;
|
|||
|
angle = angle - orient;
|
|||
|
if (angle > 180) angle = angle - 360;
|
|||
|
if (angle < -180) angle = angle + 360;
|
|||
|
turn(angle);
|
|||
|
|
|||
|
angle = atan((cible.z-orig.z) / distance2d(orig, cible));
|
|||
|
aim(angle);
|
|||
|
|
|||
|
fire(0.1);
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
extern void object::Fourmi6()
|
|||
|
{
|
|||
|
//fps(1000);
|
|||
|
Guepe guepe = new Guepe();
|
|||
|
|
|||
|
while (true)
|
|||
|
{
|
|||
|
guepe.cherche(position, 50);
|
|||
|
|
|||
|
guepe.tire(position, orientation);
|
|||
|
}
|
|||
|
}
|
|||
|
object radarGuepe(point orig, float dist)
|
|||
|
{
|
|||
|
int i;
|
|||
|
object pr, r;
|
|||
|
float mindist;
|
|||
|
|
|||
|
i = 0;
|
|||
|
mindist = 1000;
|
|||
|
while (i<30)
|
|||
|
{
|
|||
|
pr = radar(i);
|
|||
|
if (pr != null)
|
|||
|
{
|
|||
|
|
|||
|
if (F(orig, pr.position) < mindist and pr.category == AlienWasp and pr.altitude > 3)
|
|||
|
{
|
|||
|
mindist = distance(orig, pr.position);
|
|||
|
r = pr;
|
|||
|
}
|
|||
|
}
|
|||
|
i = i+1;
|
|||
|
}
|
|||
|
if (mindist < dist) return(r); else return(null);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
class Guepe
|
|||
|
{
|
|||
|
|
|||
|
point pos;
|
|||
|
|
|||
|
|
|||
|
void cherche(point orig, float dist)
|
|||
|
{
|
|||
|
object p;
|
|||
|
point o;
|
|||
|
|
|||
|
p = radarGuepe(orig, dist);
|
|||
|
while (p == null)
|
|||
|
{
|
|||
|
wait(0.1);
|
|||
|
p = radarGuepe(orig, dist);
|
|||
|
}
|
|||
|
|
|||
|
pos.x = p.position.x;
|
|||
|
pos.y = p.position.y;
|
|||
|
pos.z = p.position.z;
|
|||
|
|
|||
|
//o = p.position;
|
|||
|
//wait(0.1);
|
|||
|
|
|||
|
//vitessex = (p.position.x - o.x)/0.1;
|
|||
|
//vitessey = (p.position.y - o.y)/0.1;
|
|||
|
//vitessez = (p.position.z - o.z)/0.1;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void tire(point orig, float orient)
|
|||
|
{
|
|||
|
//float t = 3; //temps d'anticipation
|
|||
|
float angle;
|
|||
|
point cible;
|
|||
|
|
|||
|
cible.x = pos.x;// + t*vitessex;
|
|||
|
cible.y = pos.y;// + t*vitessey;
|
|||
|
cible.z = pos.z;// + t*vitessez;
|
|||
|
|
|||
|
if (cible.x == 0) angle = 90; else
|
|||
|
angle = atan(cible.y / cible.x);
|
|||
|
if (cible.x < 0) angle = angle + 180;
|
|||
|
angle = angle - orient;
|
|||
|
if (angle > 180) angle = angle - 360;
|
|||
|
if (angle < -180) angle = angle + 360;
|
|||
|
turn(angle);
|
|||
|
|
|||
|
angle = atan((cible.z-orig.z) / distance2d(orig, cible));
|
|||
|
aim(angle);
|
|||
|
|
|||
|
fire(0.1);
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
extern void object::Fourmi6()
|
|||
|
{
|
|||
|
//fps(1000);
|
|||
|
Guepe guepe = new Guepe();
|
|||
|
|
|||
|
while (true)
|
|||
|
{
|
|||
|
guepe.cherche(position, 50);
|
|||
|
|
|||
|
guepe.tire(position, orientation);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public extern void TestTableau ()
|
|||
|
{
|
|||
|
int tableau [ 12 ] ;
|
|||
|
|
|||
|
point array[ 12 ] [ 14 ] ;
|
|||
|
|
|||
|
point z<>ro ( 1, 2 ) ;
|
|||
|
point a = z<>ro ;
|
|||
|
|
|||
|
for ( int i = 0 ; i < 10 ; i++ ) array[ i ] [ i ]= z<>ro ;
|
|||
|
|
|||
|
array[ 5 ] [3 ] . x =1.5 ;
|
|||
|
|
|||
|
array[ 2 ] [ 2 ] . y = array[ 5 ] [ 5 ] . x ;
|
|||
|
|
|||
|
array[ 4 ] = array [ 2 ] ;
|
|||
|
|
|||
|
for ( int i = 0 ; i < 10 ; i++ ) for ( int j = 0 ; j < 4 ; j++ ) println ( i, j, array [ i ] [ j ] ) ;
|
|||
|
|
|||
|
show( z<>ro, a, array );
|
|||
|
|
|||
|
}
|
|||
|
|