前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Screeps入门: harvest,upgrader,builder初级自动化

Screeps入门: harvest,upgrader,builder初级自动化

作者头像
烤粽子
发布2021-08-03 15:50:01
7020
发布2021-08-03 15:50:01
举报
请添加图片描述
请添加图片描述

文章目录

前言

这篇博客给想要入坑Screeps但是不知道一开始不知道如何下手的玩家的教程,关于要不要入坑这篇博文介绍的很详细:Screeps 介绍及入坑,其他关于Screeps的信息也空余参考如下文档: 中文官方文档 官方教程 Screeps API Screep 中文教程目录

设计

这篇文章主要设计了初步自动化运行的代码,在找到并确定一个合适的房间后,选取某合适的位置设定为spawn(可以将其理解为虫族母巢),前期先确定使用如下三个角色

harvester

采矿者

将能量或元素矿开采出来并存入指定的结构中

upgrader

升级者

从指定的结构中取出能量升级房间控制器

builder

建造者

从指定的结构中取出能量并建造结构

角色设计

harvester

主要设计思路是假如这个harvester的store还有空间,那么就先找到一个source,然后到他附近收集能源,能源收集足够之后,遍历各个建筑,找出需要补充能量的建筑,然后去各个补充能量。

代码语言:javascript
复制
var roleHarvester = {

    /** @param {Creep} creep **/
    run: function(creep) {
	    if(creep.store.getFreeCapacity() > 0) { // 背包未满 采矿
            var sources = creep.room.find(FIND_SOURCES);
            if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
                creep.moveTo(sources[0], {visualizePathStyle: {stroke: '#ffaa00'}});
            }
        }
        else {
            var targets = creep.room.find(FIND_STRUCTURES, { //找出需要补充能量的建筑
                    filter: (structure) => {
                        return (structure.structureType == STRUCTURE_EXTENSION || 
                                structure.structureType == STRUCTURE_SPAWN ||
                                structure.structureType == STRUCTURE_TOWER) &&
                            structure.store.getFreeCapacity(RESOURCE_ENERGY) > 0;
                    }
            });
            if(targets.length > 0) { // 需要维护的建筑数目 > 0
                if(creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
                    creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
                }
            }
        }
	}
};

module.exports = roleHarvester;

upgrader

upgrader主要是升级控制器用的,设计思路是用upgrading来设定是否是升级状态,是的话就去升级控制器,不是的话就去采集能量。

代码语言:javascript
复制
var roleUpgrader = {

    /** @param {Creep} creep **/
    run: function(creep) {

        if(creep.memory.upgrading && creep.store[RESOURCE_ENERGY] == 0) {  // 升级状态&&能量不足的时候,变为采集者
            creep.memory.upgrading = false; 
            creep.say('
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 设计
  • 角色设计
    • harvester
      • upgrader
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档