提交screeps代码,第一次。
This commit is contained in:
commit
075b8cbe4a
|
|
@ -0,0 +1,14 @@
|
||||||
|
module.exports = {
|
||||||
|
run(creep) {
|
||||||
|
if (creep.carry.energy < creep.carryCapacity){
|
||||||
|
if(ERR_NOT_IN_RANGE==creep.withdraw(Game.spawns.Spawn1,RESOURCE_ENERGY)){
|
||||||
|
creep.moveTo(Game.spawns.Spawn1);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
let construction_site=creep.room.find(FIND_CONSTRUCTION_SITES);
|
||||||
|
if(ERR_NOT_IN_RANGE==creep.build(construction_site[0])){
|
||||||
|
creep.moveTo(construction_site[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
module.exports = {
|
||||||
|
run(creep) {
|
||||||
|
if (Game.spawns.Spawn1.store.getFreeCapacity(RESOURCE_ENERGY) == 0) {
|
||||||
|
if (creep.transfer(Game.spawns.Spawn1.room.controller, RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(Game.spawns.Spawn1.room.controller.pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
module.exports = {
|
||||||
|
run(creep) {
|
||||||
|
//分配source
|
||||||
|
if (creep.carry.energy < creep.carryCapacity) {
|
||||||
|
let sources = creep.room.find(FIND_SOURCES);
|
||||||
|
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(sources[0]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(Game.spawns['Spawn1']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
init(){
|
||||||
|
if(!Memory.Source){
|
||||||
|
Memory.Source=new Object();
|
||||||
|
Memory.Source.Energy=[];
|
||||||
|
// let sources = creep.room.find(FIND_SOURCES);
|
||||||
|
|
||||||
|
// for(let source in sources){
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
const init=require('init')
|
||||||
|
const harvester = require('harvester');
|
||||||
|
const picker = require('picker');
|
||||||
|
const util = require('utils');
|
||||||
|
const transfer = require('transfer');
|
||||||
|
module.exports.loop = function () {
|
||||||
|
init.init();
|
||||||
|
Creep.prototype.action = action;
|
||||||
|
if ((_(Game.creeps).filter({ memory: { role: 'harvester' } }).size() + _(Game.creeps).filter({ memory: { role: 'picker' } }).size()) < 2) {
|
||||||
|
createHarvestCreep();
|
||||||
|
} else {
|
||||||
|
if (_(Game.creeps).filter({ memory: { role: 'transfer' } }).size() < 2) {
|
||||||
|
createTransferCreep();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
chanage_role();
|
||||||
|
assign_task();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function action() {
|
||||||
|
let role = this.memory.role;
|
||||||
|
// this.say(`${role}`);
|
||||||
|
switch (role) {
|
||||||
|
case "harvester":
|
||||||
|
harvester.run(this)
|
||||||
|
break;
|
||||||
|
case "picker":
|
||||||
|
picker.run(this)
|
||||||
|
break;
|
||||||
|
case "transfer":
|
||||||
|
transfer.run(this)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function assign_task() {
|
||||||
|
for (const creep_id in Game.creeps) {
|
||||||
|
let creep = Game.creeps[creep_id];
|
||||||
|
creep.action();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function chanage_role() {
|
||||||
|
if (_(Game.creeps).filter({ memory: { role: 'transfer' } }).size() > 0) {
|
||||||
|
let harvester_array = _(Game.creeps).filter({ memory: { role: 'harvester' } }).value();
|
||||||
|
// console.log(harvester_array[0].memory.role);
|
||||||
|
for (let harvester_creep of harvester_array) {
|
||||||
|
harvester_creep.memory.role = 'picker';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let picker_array = _(Game.creeps).filter({ memory: { role: 'picker' } }).value();
|
||||||
|
// console.log(harvester_array[0].memory.role);
|
||||||
|
for (let picker_creep of picker_array) {
|
||||||
|
picker_creep.memory.role = 'harvester';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_creep_with_name(inlcude_string) {
|
||||||
|
let creeps = [];
|
||||||
|
for (const creep_id in Game.creeps) {
|
||||||
|
let creep = Game.creeps[creep_id];
|
||||||
|
if (creep.name.include(inlcude_string)) {
|
||||||
|
creeps.push(creep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return creeps;
|
||||||
|
}
|
||||||
|
|
||||||
|
function count(hash_container) {
|
||||||
|
return Object.keys(hash_container).length
|
||||||
|
}
|
||||||
|
|
||||||
|
function createHarvestCreep() {
|
||||||
|
//create new creep
|
||||||
|
let new_creep_name = "AUTO_CREATE_Harvester_" + util.uuid();
|
||||||
|
let Re_code;
|
||||||
|
Re_code = Game.spawns['Spawn1'].createCreep([MOVE, CARRY, WORK], new_creep_name)
|
||||||
|
if (Re_code == new_creep_name) {
|
||||||
|
Game.creeps[new_creep_name].memory.role = 'harvester';
|
||||||
|
console.log('Create new creep name ' + new_creep_name);
|
||||||
|
} else {
|
||||||
|
console.log(`failed to create harvester with code ${Re_code}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function createTransferCreep() {
|
||||||
|
//create new creep
|
||||||
|
let new_creep_name = "AUTO_CREATE_Transfer_" + util.uuid();
|
||||||
|
let Re_code;
|
||||||
|
Re_code = Game.spawns['Spawn1'].createCreep([MOVE, CARRY, CARRY], new_creep_name);
|
||||||
|
if (new_creep_name == Re_code) {
|
||||||
|
Game.creeps[new_creep_name].memory.role = 'transfer';
|
||||||
|
console.log('Create new creep name ' + new_creep_name);
|
||||||
|
} else {
|
||||||
|
console.log(`failed to create transfer with code ${Re_code}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
//只收集,不运输
|
||||||
|
module.exports = {
|
||||||
|
run(creep) {
|
||||||
|
let sources = creep.room.find(FIND_SOURCES);
|
||||||
|
let Re_code=creep.harvest(sources[0]);
|
||||||
|
if ( Re_code== ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(sources[0]);
|
||||||
|
}else{
|
||||||
|
if(OK==Re_code){
|
||||||
|
creep.harvest(sources[0]);
|
||||||
|
creep.drop(RESOURCE_ENERGY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
const utils=require('utils')
|
||||||
|
// const harvester = require("./harvester");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
run(creep) {
|
||||||
|
if (creep.carry.energy < creep.carryCapacity) {
|
||||||
|
let harvester_array = _(Game.creeps).filter({ memory: { role: 'picker' } }).value();
|
||||||
|
let harvester_creep=harvester_array[0];
|
||||||
|
let target_harvester_pos=harvester_creep.pos;
|
||||||
|
let my_pos=creep.pos;
|
||||||
|
// console.log("distance "+utils.distance(target_harvester_pos,my_pos))
|
||||||
|
if(utils.distance(target_harvester_pos,my_pos)>1.5){//在附近就是1或者1.414
|
||||||
|
|
||||||
|
creep.moveTo(target_harvester_pos);
|
||||||
|
}else{
|
||||||
|
//find dropped source
|
||||||
|
let found=creep.room.lookForAt(LOOK_ENERGY,target_harvester_pos);
|
||||||
|
if(found.length>0){
|
||||||
|
creep.pickup(found[0])
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
if (creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(Game.spawns['Spawn1']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
module.exports = {
|
||||||
|
uuid() {
|
||||||
|
//6位
|
||||||
|
let _uuid = "";
|
||||||
|
for (let i = 0; i < 6; i++) {
|
||||||
|
if (Math.random() > 0.5) {
|
||||||
|
//大于0.5就是数字,小于则是字母
|
||||||
|
_uuid = _uuid + (Math.round((Math.random() * 100)) % 10 );
|
||||||
|
} else {
|
||||||
|
_uuid = _uuid + String.fromCharCode(97 + (Math.round(Math.random() * 100)) % 26);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _uuid;
|
||||||
|
},
|
||||||
|
distance(pos1,pos2){
|
||||||
|
if(pos1.roomName==pos2.roomName){
|
||||||
|
return Math.sqrt(Math.pow((pos1.x-pos2.x),2)+Math.pow((pos1.y-pos2.y),2));
|
||||||
|
}
|
||||||
|
return -1;//如果不在一个房间内,就返回负数。
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue