JavaScript实现ZLOGO子集: 单层循环功能
发布日期:2021-06-29 15:30:23
浏览次数:2
分类:技术文章
本文共 934 字,大约阅读时间需要 3 分钟。
前文JavaScript实现ZLOGO子集: 前进+转向的示例代码很累赘, 因此尝试实现基本的循环功能, 使得前面的11行代码缩减为7行:
开始 循环4次 前进200 左转144度 到此为止 前进200结束
源码和在线演示地址同前文.
修改的语法描述(圈3.g4)不多, 应该已经支持多层循环:
声明 : 前进 | 转向 | 循环;循环 : '循环' T数 '次' 声明+ '到此为止' ;
但实现上, 暂时先做了单层. 就是将循环体内的指令存放起来, 在循环结束时, 把它们按循环次数重复添加到最终的指令序列中:
// TODO: 支持多层循环var 循环次数 = 0;var 当前循环的指令序列 = [];...定制监听器.prototype.enter循环 = function(上下文) { 循环次数 = parseInt(上下文.getChild(1).getText());}定制监听器.prototype.exit循环 = function(上下文) { for (var i = 0; i < 循环次数; i++) { for (var j = 0; j < 当前循环的指令序列.length; j++) { 指令序列.push(当前循环的指令序列[j]); } } 当前循环的指令序列 = []; 循环次数 = 0;}定制监听器.prototype.exit前进 = function(上下文) { ... 添加指令({ 名称: 常量_指令名_前进, 参数: parseInt(前进量)});};定制监听器.prototype.exit转向 = function(上下文) { ... 添加指令({ 名称: 常量_指令名_转向, 参数: 角度});};function 添加指令(指令) { if (循环次数 > 0) { 当前循环的指令序列.push(指令); } else { 指令序列.push(指令); }}
在实现多层循环之前, 打算先添加测试用例. 毕竟手动测试已经开始麻烦了.
转载地址:https://codeinchinese.blog.csdn.net/article/details/85815493 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月25日 06时26分07秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
想要成为运维,想要成为后期的架构师?这些知识是必备的!
2019-04-29
linux 是如何 快速一键安装禅道的呐?
2019-04-29
运维面试基础试题(四)
2019-04-29
一键安装Openstack单节点 必能成功
2019-04-29
面试紧张怎么办
2019-04-29
关系型数据库 ,nosql数据库简介
2019-04-29
Centos 7搭建NTP时间同步服务器
2019-04-29
centos7 基于rsync+inotify 实现定时备份
2019-04-29
指定IP进行 文件的分发
2019-04-29
基于http搭建本地yum仓库
2019-04-29
常规邮件基础
2019-04-29
邮件基础之 -- SMTP协议
2019-04-29
网络基础
2019-04-29
Java设计模式--责任链模式
2019-04-29
OpenCV的cvLoadImage函数
2019-04-29
OpenCV中与matlab中相对应的函数
2019-04-29
C/C++中二维数组作函数形参时,调用函数时,可传递的实参类型的小结
2019-04-29
cvGetSubRect与cvMul用法
2019-04-29
opencv图像处理梯度边缘和角点
2019-04-29
Caffe源码中blob文件分析
2019-04-29