Frame 1
game.main(this);
Symbol 20480 MovieClip [__Packages.sector] Frame 0
class sector
{
var lines;
function sector (pI, pJ) {
lines = new Array();
}
function addLine(pObj) {
lines.push(pObj);
}
function resetDrawn() {
for (var k in lines) {
lines[k].drawn = false;
}
}
function resetCollided() {
for (var k in lines) {
lines[k].collided = false;
}
}
function collide(pObj) {
for (var i in lines) {
lines[i].collide(pObj);
}
}
function draw(pMC) {
for (var i in lines) {
lines[i].draw(pMC);
}
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20481 MovieClip [__Packages.dna] Frame 0
class dna
{
var radius, px, py, dampConstant, springConstant, score;
function dna () {
radius = new Array();
var _local2 = 0;
for ( ; _local2 < 4 ; _local2++) {
radius.push(5 + rnd(20));
}
px = new Array();
var _local3 = 0;
for ( ; _local3 < 4 ; _local3++) {
px.push(rnd(150));
}
py = new Array();
var _local4 = 0;
for ( ; _local4 < 4 ; _local4++) {
py.push(rnd(100));
}
dampConstant = rnd(0.5);
springConstant = rnd(0.5);
score = undefined;
}
function rnd(p) {
return(Math.random() * p);
}
static function crossVars(p1, p2) {
var _local4 = Math.random();
return((_local4 * p1) + ((1 - _local4) * p2));
}
static function cross(m1, m2) {
var _local4 = Math.random();
var _local5 = new dna();
var _local6 = 0;
for ( ; _local6 < 4 ; _local6++) {
_local5.radius[_local6] = crossVars(m1.radius[_local6], m2.radius[_local6]);
}
var _local7 = 0;
for ( ; _local7 < 4 ; _local7++) {
_local5.px[_local7] = crossVars(m1.px[_local7], m2.px[_local7]);
}
var _local8 = 0;
for ( ; _local8 < 4 ; _local8++) {
_local5.py[_local8] = crossVars(m1.py[_local8], m2.py[_local8]);
}
_local5.dampConstant = crossVars(m1.dampConstant, m2.dampConstant);
_local5.springConstant = crossVars(m1.springConstant, m2.springConstant);
return(_local5);
}
function mutate() {
var _local2 = 0;
for ( ; _local2 < 4 ; _local2++) {
if (rnd(100) > 95) {
radius[_local2] = 5 + rnd(20);
}
}
var _local3 = 0;
for ( ; _local3 < 4 ; _local3++) {
if (rnd(100) > 95) {
px[_local3] = rnd(150);
}
}
var _local4 = 0;
for ( ; _local4 < 4 ; _local4++) {
if (rnd(100) > 95) {
py[_local4] = rnd(100);
}
}
if (rnd(100) > 95) {
dampConstant = rnd(0.5);
}
if (rnd(100) > 95) {
springConstant = rnd(0.5);
}
}
function id() {
var _local2 = "dna: r[";
for (var i in radius) {
_local2 = _local2 + (Math.round(radius[i]) + ((i == 0) ? "]" : ","));
}
_local2 = _local2 + " px[";
for (var i in px) {
_local2 = _local2 + (Math.round(px[i]) + ((i == 0) ? "]" : ","));
}
_local2 = _local2 + " py[";
for (var i in py) {
_local2 = _local2 + (Math.round(py[i]) + ((i == 0) ? "]" : ","));
}
_local2 = _local2 + ((((" s[" + Math.round(dampConstant * 10)) + ",") + Math.round(springConstant * 10)) + "]");
return(_local2);
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20482 MovieClip [__Packages.vehicle] Frame 0
class vehicle
{
var mymc, masses, springs, head, rearWheel, frontWheel;
function vehicle (p) {
mymc = _root.createEmptyMovieClip("vehiclemc", 3);
masses = new Array();
springs = new Array();
masses.push(new mass(new cartesian(p.px[0], -10 - p.py[0]), this));
masses.push(new mass(new cartesian(p.px[1], -10 - p.py[1]), this));
masses.push(new wheel(new cartesian(p.px[2], -10 - p.py[2]), this));
masses.push(new wheel(new cartesian(p.px[3], -10 - p.py[3]), this));
springs.push(new spring(masses[0], masses[1], this));
springs.push(new spring(masses[0], masses[2], this));
springs.push(new spring(masses[1], masses[3], this));
springs.push(new spring(masses[0], masses[3], this));
springs.push(new spring(masses[1], masses[2], this));
springs.push(new spring(masses[2], masses[3], this));
head = masses[0];
rearWheel = masses[2];
frontWheel = masses[3];
for (var i in masses) {
masses[i].radius = p.radius[i];
}
for (var i in springs) {
springs[i].springConstant = p.springConstant;
springs[i].dampConstant = p.dampConstant;
}
}
function kill() {
mymc.removeMovieClip();
}
function meanPos() {
var _local2 = new cartesian(0, 0);
for (var i in masses) {
_local2.inc(masses[i].pos);
}
_local2 = _local2.factor(1 / masses.length);
return(_local2);
}
function control() {
var _local2 = (_root.key.accelerate ? 1 : 0);
rearWheel.motor = rearWheel.motor + (((_local2 * 0.5) - rearWheel.motor) / 10);
rearWheel.brake = _root.key.brake;
frontWheel.brake = _root.key.brake;
var _local3 = (_root.key.left ? 1 : 0);
_local3 = _local3 + (_root.key.right ? -1 : 0);
springs[0].rotate(_local3 / 8);
springs[5].rotate(_local3 / 8);
}
function draw() {
mymc.clear();
for (var i in masses) {
masses[i].draw();
}
for (var i in springs) {
springs[i].draw();
}
}
function update() {
control();
for (var i in springs) {
springs[i].update();
}
for (var i in masses) {
masses[i].update();
}
control();
for (var i in springs) {
springs[i].update();
}
for (var i in masses) {
masses[i].update();
}
if (masses[0].contact || (masses[1].contact)) {
_root.ga.score();
}
}
//ASSetPropFlags(_local1, null, 1);
var dir = 1;
}
Symbol 20483 MovieClip [__Packages.mass] Frame 0
class mass
{
var pos, old, vel, parent, radius, friction, collide, grav, contact;
function mass (pPos, pParent) {
pos = new cartesian(pPos.x, pPos.y);
old = new cartesian(pPos.x, pPos.y);
vel = new cartesian(0, 0);
parent = pParent;
radius = 10;
friction = 0.2;
collide = true;
grav = true;
}
function drive(pDir) {
pos.inc(pDir.factor((-pDir.dot(vel)) * friction));
contact = true;
}
function draw() {
var _local2 = pos.toScreen();
plot.dircle(parent.mymc, _local2.x, _local2.y, radius * _root.cam.zoom, 16711680);
}
function update() {
if (grav) {
vel.inc(_root.grav);
}
vel = vel.factor(0.99);
pos.inc(vel);
contact = false;
if (collide) {
_root.sectors.collide(this);
}
vel = pos.sub(old);
old.equ(pos);
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20484 MovieClip [__Packages.game] Frame 0
class game
{
function game () {
}
static function restart() {
_root.player.kill();
_root.player = undefined;
_root.grav = new cartesian(0, 0.3);
_root.cam.auto = true;
}
static function main() {
console.startup();
plot.rect(_root, 0, 0, 499, 399, 16777215);
_root.size = new cartesian(500, 400);
_root.center = new cartesian(250, 200);
_root.grav = new cartesian(0, 0.3);
_root.key = new keyHandler();
_root.mouse = new mouseHandler();
_root.cam = new cameraHandler();
_root.sectors = new sectorHandler();
_root.player = undefined;
_root.ga = new gaHandler();
_root.timer = 0;
_root.gamePause = false;
_root.sectors = parser.loadMap("-18 1i 18 1i 84 1i ai n bl 11 dh k ea 1b fi 13 gq n i4 11 j2 p k0 8 l6 a lq p mq 16 nj 11 om f pk 3 rb a s4 a sg a t2 -5 tj -h ur -a v8 8 101 p 114 k 122 u 12t 13 13r p 14p 5 15q -7 16e 0 172 -7 17t -c 18k -2 1al -2 1bq -k 1ct -15 1dr -10 1e5 -r 1en -1a 1gb -1n 1h4 -p 1hm 0 1if 5 1j5 3 1k6 -c 1kv 5 1lj i 1n5 21,-18 1i -au 1i -gs 1i,1n5 21 1nf 21 1ok 1n 1pd 1i 1qg 11 1r4 1d 1sc 13 1t5 u 1v9 0,212 -f 21k -h 22k -10 23l -1f 24q -10 25c -r 25r -r 26f -15 27a -1i 286 -1a 28q -k 2a4 k 2b5 s 2ca k 2dn -a 2fe -r 2g0 -f 2h3 -10 2i1 -1f 2jg -p 2k9 -7 2lp d 2o1 1g 2og 2g 2p2 2q 2r3 26 2ru 1q 2tt 1s 2v0 1s 303 1b 313 n 32q p 34u u 35u 0 36q -m 37t -u 38h -u 39c -1a 39u -1k 3b1 -2n 3cg -3l 3dh -2n 3gv -1a 3jh -1a 3ll -21 3o0 -44 3ou -50 3qi -4t 3rq -42 3t2 -3o 3up -49,3up -49 3vq -31 40q -2d 42k -26 45l -1a 47a k 488 1i 4ao f 4c5 -a 4e6 3 4fb -7 4h2 -10 4ii -1n 4kj -1d 4lh -1d 4mu -2i 4ns -31 4pt -49 4rr -39 4t3 -34 4tn -2s 4vr -1u 505 -1a 515 -1s 51i -1p 526 -1i 52l -1p 53e -1s 53q -1a 54h -1f 557 -1p 565 -15 56f -p 573 -f 592 1s 5ac 2o 5cb 2v 5ee 2e 5g5 1i 5gn 2g 5h8 1d 5i1 1g 5ie 1n 5jh 16 5kp p 5m1 -c,5nt -1f 5oo -10 5pp -1d 5qn -1k 5sl n 5uu 13 60l n 619 1g 611 21 62c 21 630 2g 62j 39 63m 37 64i 39 66o 37 68f 2v 6ad 2j 6be 2v 6ce 3m 6dk 3h 6gj 1s 6ic i 6kl -2 6lb p 6lv d 6me 0 6nj d 6o7 f 6o3 4f 6p3 50 6ql 4a 6rh 4a 6sc 4r 6ta 53 6vt 68 72a 6d 74b 63 76m 5n 783 55 79q 53 7bh 4f 7d1 2j 7ee f 7hc -p 7iu a 7ke s 7nq 2q 7pj 1v 7rs 1i 7um 1n,5lv -b 5nt -1f,1v7 1 212 -e##");
_root.onEnterFrame = function () {
_root.key.update();
_root.mouse.update();
if (!_root.gamePause) {
_root.ga.update();
_root.player.update();
}
_root.cam.update();
_root.sectors.draw();
_root.player.draw();
};
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20485 MovieClip [__Packages.spring] Frame 0
class spring
{
var m1, m2, parent, leff, lrest, dampConstant, springConstant;
function spring (pm1, pm2, pParent) {
m1 = pm1;
m2 = pm2;
parent = pParent;
leff = (lrest = m2.pos.sub(m1.pos).length());
dampConstant = 0.5;
springConstant = 0.7;
}
function draw() {
var _local2 = m1.pos.toScreen();
var _local3 = m2.pos.toScreen();
parent.mymc.lineStyle(1, 11184810);
parent.mymc.moveTo(_local2.x, _local2.y);
parent.mymc.lineTo(_local3.x, _local3.y);
}
function contract(p1, p2) {
leff = leff + (((lrest - p1) - leff) / p2);
}
function rotate(p) {
var _local3 = m2.pos.sub(m1.pos);
var _local4 = new cartesian((-_local3.y) / leff, _local3.x / leff);
m1.pos.inc(_local4.factor(p));
m2.pos.inc(_local4.factor(-p));
}
function update() {
var _local2 = m2.pos.sub(m1.pos);
var _local3 = _local2.length();
if (_local3 < 1) {
return(undefined);
}
_local2 = _local2.factor(1 / _local3);
var _local4 = _local2.factor((_local3 - leff) * springConstant);
var _local5 = m2.vel.sub(m1.vel).dot(_local2) * dampConstant;
_local4.inc(_local2.factor(_local5));
m2.vel.inc(_local4.factor(-1));
m1.vel.inc(_local4);
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20486 MovieClip [__Packages.sectorHandler] Frame 0
class sectorHandler
{
var mymc, sectorSize, sectors, lines, onScreen;
function sectorHandler () {
mymc = _root.createEmptyMovieClip("linemc", 2);
sectorSize = 100;
sectors = new Array();
lines = new Array();
onScreen = new Array();
}
function kill() {
mymc.removeMovieClip();
}
function addRef(pX, pY, pObj) {
if (pObj.length < 3) {
return(undefined);
}
var _local5 = Math.floor(pX / sectorSize);
var _local6 = Math.floor(pY / sectorSize);
if (sectors[_local5] == undefined) {
sectors[_local5] = new Array();
}
if (sectors[_local5][_local6] == undefined) {
sectors[_local5][_local6] = new sector(_local5, _local6);
}
sectors[_local5][_local6].addLine(pObj);
}
function newLine(pX1, pY1, pX2, pY2) {
var _local6 = new line(pX1, pY1, pX2, pY2);
if (!_local6.remove) {
var _local7 = bresenham.getSectors(new cartesian(pX1, pY1), new cartesian(pX2, pY2), sectorSize);
for (var i in _local7) {
addRef(_local7[i].x, _local7[i].y, _local6, 1);
}
lines.push(_local6);
}
}
function collide(pObj) {
var _local3 = Math.floor((pObj.pos.x / sectorSize) - 0.5);
var _local4 = Math.floor((pObj.pos.y / sectorSize) - 0.5);
sectors[_local3][_local4].resetCollided();
sectors[_local3 + 1][_local4].resetCollided();
sectors[_local3 + 1][_local4 + 1].resetCollided();
sectors[_local3][_local4 + 1].resetCollided();
sectors[_local3][_local4].collide(pObj);
sectors[_local3 + 1][_local4].collide(pObj);
sectors[_local3 + 1][_local4 + 1].collide(pObj);
sectors[_local3][_local4 + 1].collide(pObj);
}
function draw() {
mymc.clear();
var _local2 = new cartesian(0, 0);
_local2 = _local2.toReal();
var _local3 = new cartesian(500, 400);
_local3 = _local3.toReal();
_local2.x = Math.floor(_local2.x / sectorSize);
_local2.y = Math.floor(_local2.y / sectorSize);
_local3.x = Math.floor(_local3.x / sectorSize);
_local3.y = Math.floor(_local3.y / sectorSize);
onScreen = new Array();
var _local4 = _local2.x;
for ( ; _local4 <= _local3.x ; _local4++) {
var _local5 = _local2.y;
for ( ; _local5 <= _local3.y ; _local5++) {
onScreen.push(sectors[_local4][_local5]);
}
}
for (var i in onScreen) {
onScreen[i].resetDrawn(mymc);
}
for (var i in onScreen) {
onScreen[i].draw(mymc);
}
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20487 MovieClip [__Packages.line] Frame 0
class line
{
var p1, p2, pp, length, remove, drawn, collided;
function line (pX1, pY1, pX2, pY2) {
p1 = new cartesian(Math.round(pX1), Math.round(pY1));
p2 = new cartesian(Math.round(pX2), Math.round(pY2));
pp = p2.sub(p1);
length = pp.length();
remove = (length < 3) || (length > 100000);
}
function draw(pMC) {
if (drawn) {
return(undefined);
}
drawn = true;
var _local3 = p1.toScreen();
var _local4 = p2.toScreen();
pMC.lineStyle(2 * _root.cam.zoom, 0, 100);
pMC.moveTo(_local3.x, _local3.y);
pMC.lineTo(_local4.x, _local4.y);
}
function collide(pMass) {
if (collided) {
return(undefined);
}
collided = true;
var _local3 = pMass.pos;
var _local4 = pMass.vel;
var _local5 = pMass.radius;
var _local6 = new cartesian(0, 0);
var _local7 = 0;
var _local8 = _local3.sub(p1);
var _local9 = (_local8.dot(pp) / length) / length;
if ((_local9 >= 0) && (_local9 <= 1)) {
var _local10 = (((((_local8.x * pp.y) - (_local8.y * pp.x)) * (((_local8.x - _local4.x) * pp.y) - ((_local8.y - _local4.y) * pp.x))) < 0) ? -1 : 1);
_local6 = _local8.sub(pp.factor(_local9));
_local7 = _local6.length();
if ((_local7 < _local5) || (_local10 < 0)) {
_local3.inc(_local6.factor(((_local5 * _local10) - _local7) / _local7));
pMass.drive(new cartesian((-_local6.y) / _local7, _local6.x / _local7));
return(undefined);
}
}
if (((_local9 * length) < (-_local5)) || ((_local9 * length) > (length + _local5))) {
return(undefined);
}
var _local11 = ((_local9 > 0) ? (p2) : (p1));
_local6 = _local3.sub(_local11);
_local7 = _local6.length();
if (_local7 < _local5) {
_local3.inc(_local6.factor((_local5 - _local7) / _local7));
pMass.drive(new cartesian((-_local6.y) / _local7, _local6.x / _local7));
return(undefined);
}
}
function erase(m) {
var _local3 = 15;
var _local4 = new cartesian(0, 0);
var _local5 = 0;
var _local6 = m.sub(p1);
var _local7 = (_local6.dot(pp) / length) / length;
if ((_local7 >= 0) && (_local7 <= 1)) {
_local4 = _local6.sub(pp.factor(_local7));
_local5 = _local4.length();
if (_local5 < _local3) {
remove = true;
_root.sectors.remove(p1, p2);
}
}
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20488 MovieClip [__Packages.cartesian] Frame 0
class cartesian
{
var x, y;
function cartesian (pX, pY) {
x = pX;
y = pY;
}
function toScreen() {
return(new cartesian(((x - _root.cam.pos.x) * _root.cam.zoom) + 250, ((y - _root.cam.pos.y) * _root.cam.zoom) + 200));
}
function toReal() {
return(new cartesian(((x - 250) / _root.cam.zoom) + _root.cam.pos.x, ((y - 200) / _root.cam.zoom) + _root.cam.pos.y));
}
function equ(p) {
x = p.x;
y = p.y;
}
function add(p) {
return(new cartesian(x + p.x, y + p.y));
}
function sub(p) {
return(new cartesian(x - p.x, y - p.y));
}
function inc(p) {
x = x + p.x;
y = y + p.y;
}
function factor(p) {
return(new cartesian(x * p, y * p));
}
function dot(p) {
return((x * p.x) + (y * p.y));
}
function length() {
return(Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));
}
function lenSqr() {
return(Math.pow(x, 2) + Math.pow(y, 2));
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20489 MovieClip [__Packages.plot] Frame 0
class plot
{
function plot () {
}
static function rect(pMC, x1, y1, x2, y2, col, col2, alpha) {
if (col == undefined) {
col = 0;
}
if (col2 == undefined) {
col2 = 0;
}
if (alpha == undefined) {
alpha = 100;
}
pMC.lineStyle(1, col2, alpha);
pMC.beginFill(col, alpha);
pMC.moveTo(x1, y1);
pMC.lineTo(x2, y1);
pMC.lineTo(x2, y2);
pMC.lineTo(x1, y2);
pMC.lineTo(x1, y1);
pMC.endFill();
}
static function circle(pMC, cx, cy, r, col) {
pMC.lineStyle(1, col);
pMC.moveTo(cx + r, cy);
var _local7 = 0;
while ((_local7++) < 16) {
pMC.lineTo(cx + (r * kx[_local7]), cy + (r * ky[_local7]));
}
}
static function dircle(pMC, cx, cy, r, col) {
pMC.lineStyle(1, col);
pMC.moveTo(cx + r, cy);
var _local7 = 0;
while ((_local7++) < 16) {
(((_local7 / 2) == Math.floor(_local7 / 2)) ? (pMC.lineTo(cx + (r * kx[_local7]), cy + (r * ky[_local7]))) : (pMC.moveTo(cx + (r * kx[_local7]), cy + (r * ky[_local7]))));
}
}
static function wheel(pMC, cx, cy, r, col, angle) {
pMC.lineStyle(1, col);
pMC.moveTo(cx + r, cy);
var _local8 = 0;
while ((_local8++) < 16) {
pMC.lineTo(cx + (r * kx[_local8]), cy + (r * ky[_local8]));
}
pMC.lineStyle(1, 11184810);
pMC.moveTo(cx - (r * Math.cos(angle)), cy - (r * Math.sin(angle)));
pMC.lineTo(cx + (r * Math.cos(angle)), cy + (r * Math.sin(angle)));
}
//ASSetPropFlags(_local1, null, 1);
static var kx = new Array(1, 0.924, 0.707, 0.383, 0, -0.383, -0.707, -0.924, -1, -0.924, -0.707, -0.383, 0, 0.383, 0.707, 0.924, 1);
static var ky = new Array(0, 0.383, 0.707, 0.924, 1, 0.924, 0.707, 0.383, 0, -0.383, -0.707, -0.924, -1, -0.924, -0.707, -0.383, 0);
}
Symbol 20490 MovieClip [__Packages.parser] Frame 0
class parser
{
function parser () {
}
static function loadMap(p) {
var _local3 = p.split("#")[0].split(" ");
var _local4 = p.split("#")[0].split(",");
var _local5 = new sectorHandler();
_local3 = p.split("#");
var _local6 = _local3[0].split(",");
var _local7 = 0;
for ( ; _local7 < _local6.length ; _local7++) {
_local3 = _local6[_local7].split(" ");
if (_local3.length >= 4) {
var _local8 = new Array();
var _local9 = 0;
for ( ; _local9 < _local3.length ; _local9++) {
_local8.push(_global.parseInt(_local3[_local9], 32));
}
var _local10 = _local8[0];
var _local11 = _local8[1];
var _local12 = 2;
while (_local12 < (_local8.length - 1)) {
_local5.newLine(_local10, _local11, _local8[_local12], _local8[_local12 + 1]);
_local10 = _local8[_local12];
_local11 = _local8[_local12 + 1];
_local12 = _local12 + 2;
}
}
}
return(_local5);
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20491 MovieClip [__Packages.wheel] Frame 0
#initclip
if (!wheel) {
//(_global.wheel = function (pPos, pParent) {
super();
this.pos = new cartesian(pPos.x, pPos.y);
this.old = new cartesian(pPos.x, pPos.y);
this.vel = new cartesian(0, 0);
this.parent = pParent;
this.radius = 10;
this.motor = 0;
this.angle = 0;
this.speed = 0;
}) extends mass
var _local1 = (_global.wheel /* register */).prototype;
_local1.drive = function (pDir) {
this.pos.inc(pDir.factor(this.motor * this.parent.dir));
if (this.brake) {
this.pos.inc(pDir.factor((-pDir.dot(this.vel)) * 0.3));
}
this.speed = pDir.dot(this.vel) / this.radius;
this.angle = this.angle + this.speed;
this.contact = true;
};
_local1.draw = function () {
var _local2 = this.pos.toScreen();
plot.wheel(this.parent.mymc, _local2.x, _local2.y, this.radius * _root.cam.zoom, 255, this.angle);
};
ASSetPropFlags(_local1, null, 1);
}
#endinitclip
Symbol 20492 MovieClip [__Packages.mouseHandler] Frame 0
class mouseHandler
{
var pos, real, old, grid, down, press, release;
function mouseHandler () {
pos = new cartesian(0, 0);
real = new cartesian(0, 0);
old = new Object();
grid = false;
Mouse.addListener(this);
}
function onMouseDown() {
down = true;
}
function onMouseUp() {
down = false;
}
function onMouseWheel(delta) {
_root.cam.auto = false;
_root.cam.tzoom = _root.cam.tzoom + (delta / 8);
if (_root.cam.tzoom < 0.4) {
_root.cam.tzoom = 0.4;
}
if (_root.cam.tzoom > 2) {
_root.cam.tzoom = 2;
}
}
function update() {
old.pos = new cartesian(pos.x, pos.y);
pos.x = _root._xmouse;
pos.y = _root._ymouse;
real = pos.toReal();
if (grid) {
real.x = Math.round(real.x / 10) * 10;
real.y = Math.round(real.y / 10) * 10;
}
if ((!old.down) && (down)) {
press = true;
}
if (old.down && (!down)) {
release = true;
}
if (old.press) {
press = false;
}
if (old.release) {
release = false;
}
old.down = down;
old.press = press;
old.release = release;
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20493 MovieClip [__Packages.keyHandler] Frame 0
class keyHandler
{
var letGo, pause_lg, accelerate, left, right, brake, w, s, a, d;
function keyHandler () {
}
function update() {
if (Key.isDown(Key.ENTER) && (letGo)) {
letGo = false;
game.restart();
}
if (!Key.isDown(Key.ENTER)) {
letGo = true;
}
if (Key.isDown(80) && (pause_lg)) {
pause_lg = false;
_root.gamePause = !_root.gamePause;
}
if (!Key.isDown(80)) {
pause_lg = true;
}
accelerate = Key.isDown(Key.UP);
accelerate = true;
left = Key.isDown(Key.LEFT);
right = Key.isDown(Key.RIGHT);
brake = Key.isDown(Key.DOWN);
w = Key.isDown(87);
s = Key.isDown(83);
a = Key.isDown(65);
d = Key.isDown(68);
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20494 MovieClip [__Packages.bresenham] Frame 0
class bresenham
{
function bresenham () {
}
static function getSectors(p1, p2, sectorSize) {
var _local5 = new Array();
var _local6 = new cartesian(p1.x, p1.y);
var _local7 = (p2.y - p1.y) / (p2.x - p1.x);
var _local8 = new cartesian(((p1.x < p2.x) ? 1 : -1), ((p1.y < p2.y) ? 1 : -1));
var _local9 = Math.round;
var _local10 = Math.floor;
var _local11 = Math.ceil;
var _local12 = Math.pow;
var _local13 = true;
if (_local10((_local6.x - 1) / sectorSize) != _local10(p2.x / sectorSize)) {
_local13 = false;
}
if (_local10((_local6.y - 1) / sectorSize) != _local10(p2.y / sectorSize)) {
_local13 = false;
}
var _local14 = 0;
_local5.push(p1);
do {
var _local15 = _local10(_local6.x / sectorSize) == _local10(p2.x / sectorSize);
var _local16 = _local10(_local6.y / sectorSize) == _local10(p2.y / sectorSize);
if (_local15 && (_local16)) {
break;
}
var _local17 = new cartesian();
_local17.x = _local9(_local10((_local6.x / sectorSize) + _local8.x) * sectorSize);
if (_local8.x < 0) {
_local17.x = _local9(_local11(((_local6.x + 1) / sectorSize) + _local8.x) * sectorSize) - 1;
}
_local17.y = _local9(p1.y + ((_local17.x - p1.x) * _local7));
var _local18 = new cartesian();
_local18.y = _local9(_local10((_local6.y / sectorSize) + _local8.y) * sectorSize);
if (_local8.y < 0) {
_local18.y = _local9(_local11(((_local6.y + 1) / sectorSize) + _local8.y) * sectorSize) - 1;
}
_local18.x = _local9(p1.x + ((_local18.y - p1.y) / _local7));
if ((_local12(_local17.x - p1.x, 2) + _local12(_local17.y - p1.y, 2)) < (_local12(_local18.x - p1.x, 2) + _local12(_local18.y - p1.y, 2))) {
_local6 = _local17;
_local5.push(_local6);
} else {
_local6 = _local18;
_local5.push(_local6);
}
} while ((_local14++) < 5000);
return(_local5);
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20495 MovieClip [__Packages.console] Frame 0
class console
{
function console () {
}
static function write(pText, overWrite) {
if (overWrite == true) {
_root.consoletext.text = pText + newline;
}
_root.consoletext.text = _root.consoletext.text + (pText + newline);
var _local4 = _root.consoletext.text.split("\r");
if (_local4.length > 25) {
_root.consoletext.text = _root.consoletext.text.substr(_local4[0].length + 1);
}
}
static function startup() {
_root.createTextField("consoletext", 0, 5, 0, 470, 400);
var _local2 = new TextFormat();
_local2.font = "_typewriter";
_local2.size = 10;
_local2.align = "left";
_local2.color = 11193514 /* 0xAACCAA */;
_root.consoletext.setNewTextFormat(_local2);
_root.consoletext.border = false;
_root.consoletext.selectable = false;
}
//ASSetPropFlags(_local1, null, 1);
}
Symbol 20496 MovieClip [__Packages.cameraHandler] Frame 0
class cameraHandler
{
var pos;
function cameraHandler () {
pos = new cartesian(0, 0);
}
function update() {
pos.x = pos.x + ((_root.player.head.pos.x - pos.x) / 5);
pos.y = pos.y + ((_root.player.head.pos.y - pos.y) / 5);
zoom = zoom + ((tzoom - zoom) / 5);
if (_global.isNaN(pos.x) || (_global.isNaN(pos.y))) {
pos = new cartesian(0, 0);
zoom = 1;
}
if (_global.isNaN(zoom)) {
zoom = 1;
}
}
//ASSetPropFlags(_local1, null, 1);
var zoom = 2;
var tzoom = 0.6;
}
Symbol 20497 MovieClip [__Packages.gaHandler] Frame 0
class gaHandler
{
var timer, mymc, gen, means, graph, best, ind;
function gaHandler () {
timer = 0;
mymc = _root.createEmptyMovieClip("gamc", 4);
console.write("building primordial soup...done", "gaHandler::gaHandler", "C:\\Documents and Settings\\abk\\My Documents\\Flash\\ga\\classes\\ga/gaHandler.as", 136);
gen = new Array();
means = new Array();
graph = new Array();
best = 0;
var _local2 = 0;
for ( ; _local2 < genSize ; _local2++) {
gen.push(new dna());
}
console.write("------------------", "gaHandler::gaHandler", "C:\\Documents and Settings\\abk\\My Documents\\Flash\\ga\\classes\\ga/gaHandler.as", 142);
ind = 0;
next();
}
function drawGraph() {
mymc.clear();
var _local2 = 200 / graph.length;
plot.rect(mymc, 290, 10, 490, 110, 15658751, 11184810, 50);
var _local3 = 200 / graph.length;
var _local4 = 100 / best;
mymc.lineStyle(2, 0);
mymc.moveTo(290, 110);
var _local5 = 0;
for ( ; _local5 < graph.length ; _local5++) {
mymc.lineTo(290 + ((_local5 + 1) * _local3), 110 - (graph[_local5] * _local4));
}
mymc.lineStyle(1, 43520);
mymc.moveTo(290, 110);
var _local6 = 0;
for ( ; _local6 < graph.length ; _local6++) {
mymc.lineTo(290 + ((_local6 + 1) * _local3), 110 - (means[_local6] * _local4));
}
}
function select() {
console.write("select", "gaHandler::select", "C:\\Documents and Settings\\abk\\My Documents\\Flash\\ga\\classes\\ga/gaHandler.as", 41);
gen.sortOn(["score"], Array.NUMERIC);
gen.reverse();
graph.push(gen[0].score);
var _local2 = 0;
for (var i in gen) {
_local2 = _local2 + gen[i].score;
}
means.push(_local2 / gen.length);
var _local3 = new Array();
var _local4 = 0;
for ( ; _local4 < gen.length ; _local4++) {
var _local5 = _local4 % 5;
_local3.push(gen[_local5]);
}
gen = _local3;
}
function randint(p) {
return(Math.floor(Math.random() * p));
}
function crossover() {
console.write("crossover", "gaHandler::crossover", "C:\\Documents and Settings\\abk\\My Documents\\Flash\\ga\\classes\\ga/gaHandler.as", 67);
var _local2 = new Array();
var _local3 = gen.length;
while (_local2.length < (_local3 - 1)) {
var _local4 = randint(gen.length);
var _local5 = gen[_local4];
gen.splice(_local4, 1);
var _local6 = randint(gen.length);
var _local7 = gen[_local6];
gen.splice(_local6, 1);
_local2.push(dna.cross(_local5, _local7));
_local2.push(dna.cross(_local5, _local7));
}
gen = _local2;
}
function mutate() {
console.write("mutate", "gaHandler::mutate", "C:\\Documents and Settings\\abk\\My Documents\\Flash\\ga\\classes\\ga/gaHandler.as", 92);
for (var i in gen) {
gen[i].mutate();
}
}
function nextgen() {
console.write("------------------", "gaHandler::nextgen", "C:\\Documents and Settings\\abk\\My Documents\\Flash\\ga\\classes\\ga/gaHandler.as", 98);
select();
crossover();
mutate();
drawGraph();
ind = 0;
}
function score() {
gen[ind].score = Math.floor(_root.player.meanPos().x);
best = ((gen[ind].score > best) ? (gen[ind].score) : (best));
ind++;
if (ind > (genSize - 1)) {
nextgen();
}
next();
}
function next() {
console.write((("individual " + (ind + 1)) + " of ") + gen.length, "gaHandler::next", "C:\\Documents and Settings\\abk\\My Documents\\Flash\\ga\\classes\\ga/gaHandler.as", 119);
game.restart();
_root.player = new vehicle(gen[ind]);
}
function update() {
if ((timer++) > 300) {
score();
timer = 0;
}
}
//ASSetPropFlags(_local1, null, 1);
var genSize = 20;
}