2016-10-02 3 views
0

ゲーム内で私は別のファイルから変数を呼び出そうとします。今他のファイルから 'メイン'変数にアクセスしますか?

var roleHarvester = require('role.harvester'); 
var roleUpgrader = require('role.upgrader'); 
var roleBuilder = require('role.builder'); 
var roleVoyager = require('role.voyager'); 
var roleAttacker = require('role.attacker'); 
var roleTransporter = require('role.transporter'); 
var roleHealer = require('role.healer'); 
var roleRepairer = require('role.repairer'); 

module.exports.loop = function() { 

    for(var name in Memory.creeps) { 
     if(!Game.creeps[name]) { 
      delete Memory.creeps[name]; 
      console.log('Clearing non-existing creep memory:', name); 
     } 
    } 

    var harvesters = _.filter(Game.creeps, (creep) => creep.memory.role == 'harvester'); 
    console.log('Harvesters: ' + harvesters.length); 

    var upgraders = _.filter(Game.creeps, (creep) => creep.memory.role == 'upgrader'); 
    console.log('Upgraders: ' + upgraders.length); 

    var builders = _.filter(Game.creeps, (creep) => creep.memory.role == 'builder'); 
    console.log('Builders: ' + builders.length); 

    var voyagers = _.filter(Game.creeps, (creep) => creep.memory.role == 'voyager'); 
    console.log('Voyagers: ' + voyagers.length); 

    var attackers = _.filter(Game.creeps, (creep) => creep.memory.role == 'attacker'); 
    console.log('Attackers: ' + attackers.length); 

    var transporters = _.filter(Game.creeps, (creep) => creep.memory.role == 'transporter'); 
    console.log('Transporters: ' + transporters.length); 

    var healers = _.filter(Game.creeps, (creep) => creep.memory.role == 'healer'); 
    console.log('Healers: ' + healers.length); 

    var repairers = _.filter(Game.creeps, (creep) => creep.memory.role == 'repairer'); 
    console.log('Repairers: ' + repairers.length); 


    if(harvesters.length < 3) { 
     var newName = Game.spawns['SpawnZone'].createCreep([WORK,WORK,CARRY,CARRY,CARRY,CARRY,MOVE], creepName = Creep.getRandomName("[Harvester]"), {role: 'harvester'}); 
     console.log('Spawning new harvester: ' + newName); 
    } 

    if(upgraders.length < 3 && harvesters.length > 2) { 
     var newName = Game.spawns['SpawnZone'].createCreep([WORK,CARRY,CARRY,CARRY,MOVE,MOVE], creepName = Creep.getRandomName("[Upgrader]"), {role: 'upgrader'}); 
     console.log('Spawning new upgrader: ' + newName); 
    } 

    if(builders.length < 2 && harvesters.length > 2) { 
     var newName = Game.spawns['SpawnZone'].createCreep([WORK,CARRY,CARRY,MOVE,MOVE], creepName = Creep.getRandomName("[Builder]"), {role: 'builder'}); 
     console.log('Spawning new builder: ' + newName); 
    } 

    if(voyagers.length < 0 && harvesters.length > 2) { 
     var newName = Game.spawns['SpawnZone'].createCreep([MOVE], creepName = Creep.getRandomName("[Voyager]"), {role: 'voyager'}); 
     console.log('Spawning new voyager: ' + newName); 
    } 

    if(attackers.length < 0 && harvesters.length > 2) { 
     var newName = Game.spawns['SpawnZone'].createCreep([ATTACK,ATTACK,MOVE], creepName = Creep.getRandomName("[Attacker]"), {role: 'attacker'}); 
     console.log('Spawning new Attacker: ' + newName); 
    } 

    if(transporters.length < 0 && harvesters.length > 2) { 
     var newName = Game.spawns['SpawnZone'].createCreep([WORK,CARRY,MOVE], creepName = Creep.getRandomName("[Transporter]"), {role: 'transporter'}); 
     console.log('Spawning new Transporter: ' + newName); 
    } 

    if(healers.length < 0 && harvesters.length > 2) { 
     var newName = Game.spawns['SpawnZone'].createCreep([HEAL,MOVE,MOVE], creepName = Creep.getRandomName("[Healer]"), {role: 'healer'}); 
     console.log('Spawning new Healer: ' + newName); 
    } 

    if(repairers.length < 0 && harvesters.length > 2) { 
     var newName = Game.spawns['SpawnZone'].createCreep([CARRY,CARRY,WORK,MOVE,MOVE], creepName = Creep.getRandomName("[Repairer]"), {role: 'repairer'}); 
     console.log('Spawning new Repairer: ' + newName); 
    } 




    for(var name in Game.creeps) { 
     var creep = Game.creeps[name]; 
     if(creep.memory.role == 'harvester') { roleHarvester.run(creep); } 
     if(creep.memory.role == 'upgrader') { roleUpgrader.run(creep); } 
     if(creep.memory.role == 'builder') { roleBuilder.run(creep); } 
     if(creep.memory.role == 'voyager') { roleVoyager.run(creep); } 
     if(creep.memory.role == 'attacker') { roleAttacker.run(creep); } 
     if(creep.memory.role == 'transporter') { roleTransporter.run(creep); } 
     if(creep.memory.role == 'healer') { roleHealer.run(creep); } 
     if(creep.memory.role == 'repairer') { roleRepairer.run(creep); } 
    } 
} 

私はメインから変数をチェックする必要がIF-Elseステートメントを記述しようとする私のrole.builderファイルから:私のメインのファイルザッツ

if (main.harvesters.length > 2){...} 

しかし、私は取得エラー 'メインOSが定義されていません' どうすればメインファイルを呼び出すことができますか?

答えて

0

今すぐ自分自身を見つけました。 私はこのliek何かを作る場合:あなたは繰り返す:

var count = _.filter(Game.creeps, (creep) => creep.memory.role == 'harvester'); 

Iがあれば、それ以外の「count.length」VAR :)

2

で簡単にあなたが何をしようとしては非常に非効率的であることを確認することができますGame.creepsコレクションを複数回(少なくとも8回カウントした)。

{ 
    harvester: [Creep, Creep, Creep], 
    builder: [Creep], 
    upgrader: [Creep, Creep, Creep] 
} 
:あなたが役割でゾッとをカウントしたい場合、私はあなたがその特定のロール内のすべてのゾッの鍵の受け渡しの後ろでキーとしてそれぞれの役割を持つオブジェクトを返します

var groups = _.groupBy(Game.creeps, (c) => { return c.memory.role; }); 

これを使用することをお勧め

低レベルの部屋は高いレベルの部屋とは違ったふるまいをするはずです(高いレベルの部屋はおそらく這い上がりが少ないという意味で)。

ゲームオブジェクトのライフタイムについては考えていませんが、クリープ更新ルーチンの開始時にGame.roomsをループすると、以下のようにすぐに利用できるようになり、一度ループするだけです。

for (var name in Game.rooms) { 
    var room = Game.rooms[name]; 
    room.roles = _.groupBy(room.find(FIND_MY_CREEPS), (c) => { return c.memory.role; }); 
} 
関連する問題