邊寫 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.pswp.cn/news/282405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282405.shtml
英文地址,請注明出處:http://en.pswp.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…