📜 ⬆️ ⬇️

We create the robot on HabraWars

Hello!
Probably many have already heard about the project called HabraWars , if briefly - this is a game for programmers, in which you write artificial intelligence for your own robot on JS.

I think that this will not be my first article on this topic, if only because here I am not going to disclose the whole topic, but only part of it. But first, I think you need to form some kind of robot concept ... Immediately I say that in js I am far from specialized and in general my knowledge of this language is rather poor in my opinion ... So, how should our robot look from the inside and it should be logic, no matter how obvious it may sound, but logic is a rather complicated thing, it will control the robot, asking questions (such as: “Does a projectile fly at me”) and, based on answers, call functions responsible for a robot ... But I will not start with logic (I myself have not even started writing it :)), but I will start with functions responsible for performing the actions assigned by logic.

So let's get started. In this post it will be discussed exactly the attack of our robot (in the next one, probably dodging bullets, read defense). To begin with we throw such a dry code:
this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  1. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  2. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  3. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  4. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  5. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  6. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  7. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  8. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  9. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  10. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  11. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  12. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  13. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  14. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  15. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  16. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  17. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  18. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  19. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  20. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  21. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  22. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  23. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  24. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  25. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  26. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  27. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  28. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  29. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  30. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  31. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  32. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  33. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  34. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  35. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  36. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  37. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  38. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  39. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  40. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  41. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  42. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  43. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  44. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  45. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  46. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  47. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  48. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  49. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  50. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  51. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  52. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  53. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  54. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  55. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  56. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  57. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  58. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  59. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
  60. this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .
this .enemyId = 0; this .action = function (my_state, enemies, shots, params ){ if (! this .enemyId){ // , /* ID , ... */ this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); } for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } if ( typeof (enemy) == 'undefined' ){ // , ... this .enemyId = this .getNearestEnemy( enemies, {x: my_state.x, y: my_state.y}, my_state.angle ); for ( var key in enemies){ if (enemies[key][ 'id' ] == this .enemyId) var enemy = enemies[key]; } } /* ( ) , , -1 , 1 ... 0 ... : 3 , 90 12- ... */ var angle = this .getAngleDeflection( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle ); /* : c^2 = a^2 + b^2 - ... => c = sqrt(a^2 + b^2) */ var distanceToEnemy = Math.sqrt( Math.pow(enemy.x - my_state.x, 2) + Math.pow(enemy.y - my_state.y, 2) ); return [ 0.5, angle, this .fire( {x: my_state.x, y: my_state.y}, {x: enemy.x, y: enemy.y}, my_state.angle, distanceToEnemy ), distanceToEnemy ]; }; * This source code was highlighted with Source Code Highlighter .

')
I hope with the comments in the code everything is clear ... So, we have several methods that have not yet been described, but are used, which means we need to write them, this is what we will write right now:


We describe the getNearestEnemy method (enemies, myCoords, myAngle):
  1. this .getNearestEnemy = function (enemies, myCoords, myAngle) {
  2. var howLong = Array (); // This array will contain the ID of the enemies and its range from us
  3. var distance = Array (); // This array will contain the ID and range of the nearest enemy to us
  4. for ( var i = 0; i <enemies.length; i ++) {
  5. howLong [i] = Array ();
  6. / *
  7. Get directions in degrees from us to the enemy
  8. * /
  9. var direction = get_direction (myCoords.x, myCoords.y, enemies [i] [ 'x' ], enemies [i] [ 'y' ]);
  10. / *
  11. Now the difference between our direction and the direction towards the enemy. This difference also matters
  12. because time spent on turning too
  13. * /
  14. direction = angle_size (direction, myAngle);
  15. / *
  16. Now summarize the distance and angle difference ...
  17. * /
  18. howLong [i] [ 'distance' ] = Math.sqrt (
  19. Math.pow ([i] [ 'x' ] - myCoords.x, 2)
  20. + Math.pow (enemies [i] [ 'y' ] - myCoords.y, 2)
  21. ) + direction;
  22. howLong [i] [ 'id' ] = enemies [i] [ 'id' ];
  23. }
  24. for ( var i = 0; i <howLong.length; i ++) { // Here we select the ID of the nearest robot
  25. if (! i) distance = howLong [i];
  26. else if (distance [ 'distance' ]> howLong [i] [ 'distance' ]) distance = howLong [i];
  27. }
  28. return distance [ 'id' ];
  29. };
* This source code was highlighted with Source Code Highlighter .


Now getAngleDeflection (myCoords, enemyCoords, myAngle) method:
  1. this .getAngleDeflection = function (myCoords, enemyCoords, myAngle) { // Well, everything seems to be clear here)
  2. return get_angle_control (
  3. myAngle,
  4. get_direction (myCoords [ 'x' ], myCoords [ 'y' ], enemyCoords [ 'x' ], enemyCoords [ 'y' ])
  5. );
  6. };
* This source code was highlighted with Source Code Highlighter .


And the last method is fire (myCoords, enemyCoords, myAngle, distance), it tells us to shoot or not (for example, if we have 100 percent energy but the robot has not yet had time to aim, then it is NOT necessary to shoot):
  1. this .fire = function (myCoords, enemyCoords, myAngle, distance) {
  2. var direction = get_direction (myCoords [ 'x' ], myCoords [ 'y' ], enemyCoords [ 'x' ], enemyCoords [ 'y' ]);
  3. var angle = angle_size (direction, myAngle); // Equalize for variable angle difference
  4. if (distance! = 0 && angle! = 0) { // If any of the variables is zero, then theoretically you can shoot
  5. / *
  6. 10 divided by the product of distance and angle difference, we obtain the coefficient of "focus"
  7. * /
  8. if (10 / (distance * angle)> 0.6) return true ;
  9. else return false ;
  10. } else return true ;
  11. }
* This source code was highlighted with Source Code Highlighter .


Everything is ready, now you can assemble our robot in pieces:
  1. this .getNearestEnemy = function (enemies, myCoords, myAngle) {
  2. var howLong = Array ();
  3. var distance = Array ();
  4. for ( var i = 0; i <enemies.length; i ++) {
  5. howLong [i] = Array ();
  6. var direction = get_direction (myCoords.x, myCoords.y, enemies [i] [ 'x' ], enemies [i] [ 'y' ]);
  7. direction = angle_size (direction, myAngle);
  8. howLong [i] [ 'distance' ] = Math.sqrt (
  9. Math.pow ([i] [ 'x' ] - myCoords.x, 2)
  10. + Math.pow (enemies [i] [ 'y' ] - myCoords.y, 2)
  11. ) + direction;
  12. howLong [i] [ 'id' ] = enemies [i] [ 'id' ];
  13. }
  14. for ( var i = 0; i <howLong.length; i ++) {
  15. if (! i) distance = howLong [i];
  16. else if (distance [ 'distance' ]> howLong [i] [ 'distance' ]) distance = howLong [i];
  17. }
  18. return distance [ 'id' ];
  19. };
  20. this .getAngleDeflection = function (myCoords, enemyCoords, myAngle) {
  21. return get_angle_control (
  22. myAngle,
  23. get_direction (myCoords [ 'x' ], myCoords [ 'y' ], enemyCoords [ 'x' ], enemyCoords [ 'y' ])
  24. );
  25. };
  26. this .fire = function (myCoords, enemyCoords, myAngle, distance) {
  27. var direction = get_direction (myCoords [ 'x' ], myCoords [ 'y' ], enemyCoords [ 'x' ], enemyCoords [ 'y' ]);
  28. var angle = angle_size (direction, myAngle);
  29. if (distance! = 0 && angle! = 0) {
  30. if (10 / (distance * angle)> 0.6) return true ;
  31. else return false ;
  32. } else return true ;
  33. }
  34. this .enemyId = 0;
  35. this .action = function (my_state, enemies, shots, params ) {
  36. if (! this .enemyd) {
  37. this .enemyId = this. getNearestEnemy (
  38. enemies,
  39. {x: my_state.x, y: my_state.y},
  40. my_state.angle
  41. );
  42. }
  43. for ( var key in enemies) {
  44. if (enemies [key] [ 'id' ] == this .enemyId) var enemy = enemies [key];
  45. }
  46. if ( typeof (enemy) == 'undefined' ) {
  47. this .enemyId = this. getNearestEnemy (
  48. enemies,
  49. {x: my_state.x, y: my_state.y},
  50. my_state.angle
  51. );
  52. for ( var key in enemies) {
  53. if (enemies [key] [ 'id' ] == this .enemyId) var enemy = enemies [key];
  54. }
  55. }
  56. var angle = this .getAngleDeflection (
  57. {x: my_state.x, y: my_state.y},
  58. {x: enemy.x, y: enemy.y},
  59. my_state.angle
  60. );
  61. var distanceToEnemy = Math.sqrt (
  62. Math.pow (enemy.x - my_state.x, 2)
  63. + Math.pow (enemy.y - my_state.y, 2)
  64. );
  65. return [
  66. 0.5,
  67. angle,
  68. this .fire (
  69. {x: my_state.x, y: my_state.y},
  70. {x: enemy.x, y: enemy.y},
  71. my_state.angle,
  72. distanceToEnemy
  73. ),
  74. distanceToEnemy
  75. ];
  76. };
* This source code was highlighted with Source Code Highlighter .


Of course, this is not all and you can think of a lot more, for example, often if the robot shoots from far away, the bullet does not reach, this can be corrected if you know the direction of the enemy's movement ...

Source: https://habr.com/ru/post/76946/


All Articles