screeps: world入门教程代码1:创建基地(spawn)和普通收集者(harvester)

1.在main函数编写如下代码,Game包含所有元素的信息。

Game.spawns包含所有生成项的哈希值,每个creep可以设置7个值(对应7个技能属性):

可以通过Game.spawns['基地名称'].spawnCreep([属性1, 属性2,......], 'creep的名称')来设置

  • WORK– 能够收集能量, 建造和修复结构, 升级控制器.
  • MOVE– 移动能力。
  • CARRY– 传递能量的能力.
  • ATTACK– 短程攻击能力。
  • RANGED_ATTACK– 远程攻击能力。
  • HEAL– 治愈他人的能力。
  • CLAIM- 声称领土控制权的能力。
  • TOUGH– “空”部分,唯一目的是防御。

这7个技能属性可以自由搭配,根据你的需要来构建独一无二的属性值。简单来说,属性值越多,creep的移动速度越慢,当受到攻击时,对应部位的属性也会受到伤害。

module.export是node.js中导出模块的方法,loop是游戏的核心循环函数之一,它在每一轮游戏更新时被调用。for循环遍历了Game.creeps中所有creep的名称(下文可见)。

2.使用for循环,对创建的creep的行为进行定义,定义一个sources,让生成的creep去寻找地图里面的资源,此时如果资源在地图范围里面,并且creep还有剩余空间(getFreeCapacity())搭载资源,则creep移动到sources所在位置收集资源,否则,返回ERR_NOT_IN_RANGE的错误信息。当creep的剩余空间为0的时候,则会让creep移动到基地去存放资源,当然,和寻找资源的时候一样,能否回到基地也是要在地图范围以内,否则也是会弹出错误信息。

3.创建一个新的JavaScript文件,命名为role.harvester,这个文件代码可以编写一个模块,用来控制main函数里面的creep的行为,这样可以在mian函数中直接调用role.harvester模块中的方法,从而减少main函数里面的代码量。

require是node.js中用于加载模块的方法,roleHarvester变量包含了从role.harvester.js文件中提取的对象或者函数。

游戏遍历所有的creeps,并且roleHarvester.run(creep)方法调用了从role.harvester.js导入的run方法,然后传递当前的creep作为参数。

4.总结

在screeps: world的入门教程里面,使用了很多JavaScript的基础语法:

Game.spawns['Spawn1'].spawnCreep( [WORK, CARRY, MOVE], 'Harvester1' );

这一句代码,使用了连续方法调用,首先使用了[]来访问Game.spawns对象的属性,'Spawn1'作为字符串键用来获取Game.spawns 对象中对应的 spawn。然后便是调用了spawnCreep方法来创建新的creep,这一个方法接收bodypart数组和一个creep的名称作为参数,即方法调用时传递了参数。bodypart数组里面的含有creep的技能属性,harvester1为字符串字面量,用来命名新的creep。

var creep = Game.creeps['Harvester1'];

这一句代码是JavaScript里面变量声明,使用var关键字声明了一个变量creep,并将其初始化为Game.creeps对象中名为Harvester1的creep。此外,在ES6规则中,为了规范变量的声明,可以使用let关键字const关键字来声明变量,两者作用域会有不同。

var sources = creep.room.find(FIND_SOURCES);

这一句代码是JavaScript的数组方法,调用find方法来寻找地图中的资源,FIND_SOURCES是预定义的常量,用来表示地图中的资源。

module.export.loop = function()require()是node.js里面的两个重要方法,分别用来导出模块加载模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值