程序员专属游戏 Screeps:使用 JS/TS 代码控制自己的殖民地
Screeps 是一款面向编程爱好者的开源 MMO RTS 沙盒游戏,其核心机制是为您的单位编写AI。您可以通过编写 JavaScript 来控制自己的殖民地。
Screeps 的游戏模式类似红警、星际争霸、魔兽、帝国时代等,但是和这些游戏不同,你无法通过鼠标或者键盘控制你的角色,你需要编写 JavaScript 代码来控制你的单位去完成各项任务。
您的殖民地可以采集资源,建造单位,征服领土或是与其他殖民地进行贸易。您征服的土地越多,您扩展疆域的能力和在游戏世界中的影响力也就越大。但是请注意,意图控制相同区域的多个玩家可能会引发一场战争!
Steam售价:65元。我是前不久搞促销的时候半价买的。
进入游戏后选择一个资源丰富、地形不错的地图,创建自己的基地,默认名字为 Spawn1
。全局对象 Game
的 spawns
包含了所有的基地(母巢),因此 Game.spawns['Spawn1']
或者 Game.spawns.Spawn1
就是我们刚才创建的基地。
使用 spawnCreep
方法我们可以创建自己的第一个单位(creep) :
Game.spawns['Spawn1'].spawnCreep( [WORK, CARRY, MOVE], 'creeper1' );
上面代码创建了一个名字为 creeper1 的单位。接下来我们编写代码,让他去采集资源:
module.exports.loop = function () {var creep = Game.creeps['creeper1'];var sources = creep.room.find(FIND_SOURCES);if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE){creep.moveTo(sources[0]);}
}
Game.creeps['creeper1']从全局对象 Game 的 creeps 属性中根据名字找到刚才创建的 creep(单位)
从当前房间 creep.room中寻找特定建筑,我们传入的参数是 FIND_SOURCES,因此我们寻找的所有 source(资源)
命令 creep 去采集所有 source 中的第 1 个 source
要想采集资源,需要 creep 在资源的附近,我们需要编写代码让 creep 移动过去,然后判断两者的距离再采集。但是有个讨巧的方式,我们可以通过判断 harvest 函数的返回值来实现。如果返回了 ERR_NOT_IN_RANGE。说明 creep 距离 source 太远,此时我们就调用 creep.moveTo 方法。
最后是整个程序的入口。Screeps 规定程序的入口文件是 main.js,在主文件中需要导出一个 loop 函数。这样整个过程就永不间断地执行下去。
这只是一个简单的例子,你还可以发挥自己的想象力,开发不同的算法和策略来经营自己的殖民地。
通过算法你可以给房间的物品安排特定的布局以提高资源的产量和利用率:
当有敌人侵入时你可以防守,甚至可以主动去进攻别人,扩大自己的殖民地:
你不需要一直盯在电脑前,只需要把代码上传,然后是不是查看一下自己的基地就可以了。
Screeps 支持搭建私服,服务器代码使用 Node.js 编写,并且在 GitHub 开源。
我上周末也搭建了一个:screeps.devtips.cn。目前已经运行了一周,基本运行平稳。
服务器中有 20*20 共 400 个房间,80% 以上的房间都是相对平坦的地形,并配有 2 个资源采集点。
相关链接:
游戏官网:https://screeps.com
我的私服地址:https://screeps.devtips.cn
程序员专属游戏 Screeps:使用 JS/TS 代码控制自己的殖民地相关推荐
- 做一份程序员专属的日历
做一份程序员专属的日历 #嘿小猿代码日历# 曾经用过挺多日历类的产品,比如果壳的物种日历,豆瓣的电影日历,每每翻开一页纸就有一种收获一份小礼物的欣喜. 作为一名程序猿,我对日历这样桌面小物件的使用方式 ...
- 文本编辑--程序员专属技能
文本编辑–获得更加强大的文档处理能力(程序员专属) 文章目录 文本编辑--获得更加强大的文档处理能力(程序员专属) 1.typora(markdown神器) 1.1 概述 1.2 安装 1.3 官网 ...
- 前端html继承的方式,好程序员web前端教程之JS继承实现方式解析
好程序员 web 前端教程 之JS 继承实现方式解析 , JS 是 Web 前端三要素之一,也是每一个初学前端的同学遭遇的第一条拦路虎.很多人反应 JS 学习不易,各类知识点概念及应用常常让人抓耳挠腮 ...
- java喷泉编码_好程序员Java教程分享使用JS实现简单喷泉效果
原标题:好程序员Java教程分享使用JS实现简单喷泉效果 好程序员Java教程分享使用JS实现简单喷泉效果,最近,在教学生使用JS的基本操作,为了练习JS的基本作用,特地写了一个喷泉效果,代码如下: ...
- web程序前后台功能实现_好程序员web前端教程之JS继承实现方式解析
好程序员web前端教程之JS继承实现方式解析,JS是Web前端三要素之一,也是每一个初学前端的同学遭遇的第一条拦路虎.很多人反应JS学习不易,各类知识点概念及应用常常让人抓耳挠腮.在接下来的北京Web ...
- 速领,我给大家做了程序员专属红包封面~
了不起的程序员们,新年快乐!最近微信红包提供了定制封面,很多品牌都纷纷定制了自己的专属红包封面. 但是,作为具有数百万群体的程序员们,怎么能没有一款专属于他们的红包封面呢? 于是,真的有人设计了一款专 ...
- 引入js_好程序员web前端教程分享js中的模块化一
好程序员web前端教程分享js中的模块化一:我们知道最常见的模块化方案有CommonJS.AMD.CMD.ES6,AMD规范一般用于浏览器,异步的,因为模块加载是异步的,js解释是同步的,所以有时候导 ...
- spinbox的valuechanged 不响应键盘_程序员和游戏爱好者必备,双十一热身:2019年最好的机械键盘...
作为长时间与键盘为伍的程序员,都应该拥有一块自己的机械键盘. 甚至有人说,程序员首先是打字员,其次才是程序员.高阶的程序员甚至可以用键盘完成所有事情,而不需要鼠标. 作为一个专业人士,请对你的手好一点 ...
- fastposter v2.6.2 发布 程序员专属海报生成器
fastposter v2.6.2 发布 程序员专属海报生成器
最新文章
- 人工智能:从经典计算机到量子计算机,弱AI进阶到强AI时代?
- CentOS安装PPTP ×××
- 程序猿要什么爱情,陪你未来的是键盘和代码啊!
- Quarkus的其他(非标准)CDI功能
- Eclipse run configrations 配置
- mysql中in的使用
- 嵌入式linux 零基础-实践起步 --- 001 --- linux的版本
- xp python转化为exe_使用Py2exe从python脚本生成的exe在xp上不起作用
- 剑指offer——29.顺时针打印矩阵(不熟)
- 目前最完整的前端框架 Vue.js 全面介绍
- 足不出户逛里约 神马搜索推出奥运会蓝光页面
- 【编程好习惯】引入中间变量使程序更易读
- php com adodb,php COM 连接ADODB.Connection数据库
- iOS各大名人的博客
- 基于压缩传感的脉冲GPR成像技术研究(硕士学位论文初稿20120104)
- 盖世神器PowerPro使用视频教程-1. 程序的安装概述
- 集体备课模板_幼儿园集体备课教案模板课件(19页)-原创力文档
- 总结图扑软件可实现的可视化效果案例分享
- 计算机网络设备网关属于固定资产,财政六大类常用固定资产分类及代码
- 甘特图模板--项目管理模板
热门文章
- MySql连接数据库常用参数及代码示例
- Android 4g 很慢,手机4G网络突然变慢?这样设置一下,仅需要五步!保证你快很多!...
- 计算机中丢失openal32.dll无法启动游戏,缺少openal32period;dll 解决办法 | 手游网游页游攻略大全...
- 机器学习笔记一——常用优化算法—GD、BGD、SCD、MBGD
- 数据库常用增、删、改、查sql语句
- 火线精英服务器怎样可以稳定,火线精英怎么操控好速度慢威力大的斩月
- 花栗鼠科技大学的计算机组成原理实验最终的结课考核方式是提交一份报告。然而作为任课老师,萝老师不希望大家过于内卷,所以指定了如下规定:每份报告有一个卷面基础分 在此基础上:若是报告字数低于
- w ndows8系统没有声音怎么,Windows8没有声音怎么回事 Windows8没有声音解决方法
- 从入坑到出坑,我对王者荣耀的看法
- Flutter耳返和双声道功能的实现