我創建了一個基於javascript的Karel機器人(Wikipedia)這樣的小機器人。減慢javascript的評估執行速度
機器人可以用一些簡單的命令進行控制,諸如「前」,「右拐」等。
用戶可以編寫一個JavaScript程序來控制機器人,然後通過JavaScripts「eval()」函數來執行機器人移動。
問題是我想讓機器人緩慢移動,以便您可以看到他在做什麼,以便您可以突出顯示編輯器中的當前代碼行。
當前方法:解析
在通過解析在textarea的各行,然後建立動作的堆疊然後將其與一個接一個執行我已經解決了這個(在離線版本)的時刻window.setTimeout。但是這當然是有限的,因爲我必須爲每個小的JavaScript語言構造編寫解析代碼,這是很多工作和容易出錯的。
一些額外的信息,以這樣的:
解析版本:http://abi-physik.de/_niki2/niki.php
解析版本的js代碼:http://abi-physik.de/_niki2/js/niki.js
重要的功能是在腳本的底部:運行(),執行()
我目前正在逐行解析用戶腳本並將操作添加到堆棧。如果解析器遇到「if」,它將開始一個新的堆棧並將所有操作添加到該堆棧。如果解析器遇到「}」,它將關閉「if」堆棧並繼續將操作添加到基本堆棧。
任何想法,以改善這一點?
您是否嘗試過在「;」上分割線條?或\ n然後傳遞給一個一個的評估 – Pradeep
我想過了,但我還沒有嘗試過。如果條件會發生什麼? –
在這種情況下,你也必須實現if,while循環的東西。 您可以將它們組合成單個代碼塊,但不會顯示動畫。 – Pradeep