边写 Javascript 代码边玩游戏 – WarriorJS

在 github 上看到这个有趣的项目 – WarriorJS ,项目的内容写着 – 令人兴奋的程序设计和人工智慧游戏,Ok 我坦白我是看到人工智慧被这个专案所吸引,但是玩了两个关卡,还是不知道这个游戏跟人工智慧有什么关系,不过这个游戏的最大亮点反而是 – 透过写 Javascript 来破游戏所设下的关卡

这个游戏没有酷炫的声光效果,也没有图形介面,只有文字介面( 想起了以前很热门的 MUD ) ,可以一边在 VS Code 编辑器上编码,然后在 VS Code 内建的 console 中执行程序看看你写的 Javascript 代码是不是可以顺利破游戏给你的任务 ,听起来很有趣,因为都是文字介面,刚开始玩也有点摸不着头绪,以下简单介绍这个游戏要如何启动,和如何玩,希望这个游戏会帮助你回想一下当初开始学编程的乐趣

游戏背景介绍

在 WarriorJS 中,你穿着勇士般的盔甲,爬上一座高塔,到达顶端的 JavaScript 之剑。传说持剑者因为使用 JavaScript 语言变得豁然开朗,但是要注意的是: 这个过程并不容易。在每层楼上,你需要编写 JavaScript 来指导战士与敌人战斗,拯救俘虏,活着走上楼梯。

无论你是程序设计新手还是 JavaScript 大师,WarriorJS 都会让你的技能受到考验。 你敢接受挑战吗?

( 以上游戏说明翻译自 github 开源项目中的游戏介绍 )

开始安装游戏

1. 使用 npm 安装

npm install –global @warriorjs/cli复制代码

2. 建立你自己的战士

到终端机执行 warriorjs ,程式会提醒你目前没有 warriorjs 这个目录,是否要建立,选 Yes ,接下来帮战士取一个名称,选一个要挑战的塔等级 ( 一开始似乎只有 beginner 可以选 )

建立好后,warriorjs 程式会帮你在 warriorjs 这个目录建立一个战士名称-begineer目录,使用 VS Code 来打开这个目录,先看看目录中的 README.md ,这就是游戏给你的第一道关卡任务说明,是使用 markdown 语法写的

第一关还蛮简单的只要走到楼梯就算过关了,里面的 @ 就是战士你, > 代表楼梯,还有你的生命值 HP = 20 ,还有战士的能力,第一关只有走路 warrior.walk()

接下来就要开始写程式来完成第一个关卡的任务,打开 Player.js ,然后在 playTurn 这个 function 中输入 warrior.walk() ,写好后要记得储存

打开 VS Code 的终端机 ,然后输入 warriorjs 指令,你就会看到游戏会根据你向战士编写的 javascript 代码去执行,这个任务相当简单,就是一直走到楼梯就完成了,游戏完成后会问你是否要挑战下一个关卡,选 Yes 后,warriorjs 会更新 README.md 给你下一个任务说明,好像 mission impossible 

打开看 README.md ,OK 第二个任务来了,你会发现有新的地图,战士的能力除了走路也多了新的技能 ( attack() ) ,还多了感知能力 ( feel() ,回传前面空间状态) ,你的任务还是走到楼梯,但是中间有一个障碍 Sludge ,过这个障碍会让你损失 12 个生命值,attack() 也会消耗 5 个生命值

任务说明有给提示,利用 feel().isEmpty() 判断你的前面是否有障碍,如果有就使用 attack(),如果没有就继续走

打开 Play.js 开始设计你的战士要如何过关,你可以先不用改代码,看看战士是怎么死掉的 ,但是为了不花费太多篇幅,先破个梗看看这关要如何过,以下是我的代码

class Player {    playTurn(warrior) {            if(warrior.feel().isEmpty()){                        warrior.walk();            } else {                        warrior.attack();            }     }
}复制代码
如果前面是空无一物就往前走,如果遇到障碍,就执行 attach() ,写好控制程式后储存 Player.js 然后到终端机执行 warriorjs 程式,你会看到游戏是否按照你写的 javascript 程序逻辑去执行,这关也很简单,又顺利过关了,如果要继续挑战,按下 y ,前面关卡很简单,后面会越来越困难

这个游戏会让你上瘾吗?恭喜你,这个游戏也会让你喜欢上编程

欢迎逛逛 Soft & Share 网站


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

挑选合适自己的一门编程语言

2019独角兽企业重金招聘Python工程师标准>>> 导读想学编程的原因有很多,你也许是想要做一个程序,又或者你只是想投身于这个行业,所以,在选择你的第一门编程语言之前,问问你自己:你想要在哪里运行…

css 实现章节名称不换行,多余部分用 ... 代替

修改之前:修改之后: 代码: <p style "white-space: nowrap;text-overflow: ellipsis;overflow: hidden;"><? $d[name] ?></p> <i><? $d[pen_name] ?></i> <i><?phpforeach ($d[tags] as $t) {echo $t[tag_name];…

.NET 反向代理-YARP 部署Https(SSL)

相关文章&#xff1a;.NET 反向代理-YARP.NET 反向代理-YARP 根据域名转发分享一个基于Abp 和Yarp 开发的API网关项目使用 Yarp 做网关YARP&#xff08;Yet Another Reverse Proxy&#xff09;是使用 .NET 构建的高度可定制的反向代理C# 开源一个基于 yarp 的 API 网关 Demo&am…

shell脚本--cut命令

bash&shell系列文章&#xff1a;http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 选项说明 cut命令将行按指定的分隔符分割成多列&#xff0c;它的弱点在于不好处理多个分隔符重复的情况&#xff0c;因此经常结合tr的压缩功能。 -b&#xff1a;按字节筛选&#xff…

12C RAC for ASM添加磁盘步骤

RHEL 7.2使用EMC Powerpath扩容2T磁盘空间&#xff0c;需要添加至以用12C RAC for ASM系统中。下面是具体步骤&#xff0c;主机人员告知扩容别名为data_center_16、data_center_17 1&#xff1a;linux 7 系统下添加映射存储LUN(无需重启)1>查看机器HBA卡信息--两个节点机器都…

Windows 下 Redis 的下载和安装

一 安装redis 1. 下载redis https://github.com/MicrosoftArchive/redis/releases 注: 如果上面网址下载不了, 就到这里下载 https://download.csdn.net/download/m_nanle_xiaobudiu/104370342. 解压压缩文件夹3. 运行redis服务端到此 , redis已经可以正常使用了,但是为了方便…

什么是行内块元素?

2019独角兽企业重金招聘Python工程师标准>>> 我们都知道行内元素和块级元素&#xff0c;在实际开发中&#xff0c;经常会听到行内块元素&#xff0c;那么什么是行内块元素呢&#xff1f; 行内块元素实际就是把块元素以行的形式展现,保留了块元素可以设置的对应CSS属…

WPF-08 控件模板

模板是描述控件外观&#xff0c;WPF中每个控件都有一个默认的模板&#xff0c;你可以通过定义模板来重写控件可视化外观和行为&#xff0c;WPF中有两种常用的模板Control Template和Data TemplateControl Template控件模板定义了控件的可视化外观&#xff0c;所有的UI控件都有自…

玄学搜索\随稽化

正解又不会写&#xff0c;又懒得去想 只好每次考试大大暴力&#xff0c;维持一下生活了 ----------------------- P1337 [JSOI2004]平衡点 / 吊打XXX 题目描述 有n个重物&#xff0c;每个重物系在一条足够长的绳子上。每条绳子自上而下穿过桌面上的洞&#xff0c;然后系在一起。…

第0次作业

问题1:你为什么选择计算机专业&#xff1f;你认为你的条件如何&#xff1f; 答:我平时比较喜欢研究一些自己认为神秘的东西&#xff0c;我认为计算机就是这样的神秘东西&#xff01;所以我选择这个专业&#xff01;我认为我自己可以学会计算机这个专业&#xff01;我对自己有信…

Nginx +Tomcat 实现动静态分离(转)

Nginx Tomcat 实现动静态分离 动静态分离就是Nginx处理客户端的请求的静态页面(html页面)或者图片&#xff0c;Tomcat处理客户端请求的动态页面&#xff08;jsp页面&#xff09;&#xff0c;因为Nginx处理的静态页面的效率高于Tomcat。 一&#xff0e;Nginx简介&#xff1a; Ng…

Beanstalked的初步了解和使用(包括利用beanstalkd 秒杀消息队列的实现)

一 Beanstalkd 是什么 Beanstalkd&#xff0c;一个高性能、轻量级的分布式内存队列系统二 Beanstalkd 特性 1. 优先级&#xff08;priority&#xff09; 注&#xff1a;优先级就意味 支持任务插队&#xff08;数字越小&#xff0c;优先级越高&#xff0c;0的优先级最高&#…

WPF效果第二百篇之再玩Gamma曲线

前面效果中使用比较low的方式实现了2.4的Gamma曲线;虽说后面加了点动画呈现效果,但也就是个过渡版;今天才基本符合需求的效果:1、还是基于WPF效果第一百七十八篇之贝塞尔曲线他来实现的:3个ListBox 3个LandmarkControl2、在LandmarkControl增加插点位事件View:LandmarkControl …

2018企业面试总汇(答案请自行搜罗) 新增19年阿里面题(反向拓展技术栈)

Java 1.多个线程同时读写&#xff0c;读线程的数量远远大于写线程&#xff0c;你认为应该如何解决并发的问题&#xff1f;你会选择加什么样的锁&#xff1f; 2.JAVA的AQS是否了了解&#xff0c;它是干嘛的&#xff1f; 3.除了synchronized关键字之外&#xff0c;你是怎么来保障…

skynet源码阅读5--协程调度模型

注&#xff1a;为方便理解&#xff0c;本文贴出的代码部分经过了缩减或展开&#xff0c;与实际skynet代码可能会有所出入。 作为一个skynet actor&#xff0c;在启动脚本被加载的过程中&#xff0c;总是要调用skynet.start和skynet.dispatch的&#xff0c;前者在skynet-os中…

ASP.NET Core GRPC 和 Dubbo 互通

一.前言Dubbo 是比较流行的服务治理框架&#xff0c;国内不少大厂都在使用。以前的 Dubbo 使用的是私有协议&#xff0c;采集用的 hessian 序列化&#xff0c;对于多语言生态来说是极度的不友好。现在 Dubbo 发布了新版本 v3&#xff0c;推出了基于 gRPC 的新协议 Triple&#…

详解C# 迭代器

[引用&#xff1a;https://www.cnblogs.com/yangecnu/archive/2012/03/17/2402432.html] 迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子&#xff0c;他是一种简化对象间通讯的模式&#xff0c;也是一种非常容易理解和使用的模式。简单来说&#xff0c;迭代器模…

利用redis List队列简单实现秒杀 PHP代码实现

一 生产者producer部分 --------------------------------producer 部分注释------------------------------------------------------------ 用户在页面请求之后, 获取到用户uid , 跳转到这个加入队列的方法 (这里直接在producer中模拟了多个uid) 在方法内部判断redis队列长…

使用Filezilla 与 linux远程服务器传输文件时,设置默认打开编辑器

1. 点击编辑 2. 选择设置&#xff0c;点击文本编辑 3. 设置编辑器目录 4. 确定作用&#xff1a; 这样设置之后&#xff0c;可以实现在远程站点栏直接下载并使用phpstorm编辑的作用 正常需要下载之后&#xff0c;再去本地相应下载目录打开&#xff0c;然后再进行上传文件&#x…

SDOI2017 新生舞会

01规划 a1a2a3...ai/b1b2b2..bi最大 设一个k 使得 a1a2a3...ai/b1b2b3...bi>k 变换式子得到 a1a2a3...ai>(b1b2b3..bi)*k a1-b1*ka2-b2*ka3-b3*k...ai-bi*k>0 ai-bi*k即流量 最大费用流二分答案 来&#xff0c;上代码&#xff1a; #include <cmath> #include &l…