提交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