Squirrel是一种较新的程序设计语言,它从著名的LUA语言继承了很多特性,适用的范围也与LUA语言相似。

  Squirrel是个人的作品,作者是意大利小伙AlbertoDemichelis,SQUIRREL开发的本意是用于替代LUA,SQUIRREL语法与C/C++很相似,LUA的很多语法与C/C++ 不一致,写脚本时,轻易犯错误,所以,Squirrel更适合C/C++ 程序员。

  Squirrel是一种动态语言,而且是弱类型的,定义变量的时候并不需要指明类型。Squirrel不是边解释边执行的语言,它有一个编译器和虚拟机,代码会被动态编译成字节码,然后在虚拟机上执行。这种编译当然比C/C++或者Java的编译要简单很多,它虚拟机当然也不会有JVM这样“底层”,Squirrel的虚拟机更像是一个“函数执行队列”,这个虚拟机是建立在标准libc基础上的(也就是说标准C函数在这个虚拟机中是元操作,而JVM是建立在汇编语言基础上的)。

  Squirrel在设计上就是要做到嵌入C/C++当中的,因此,Squirrel虚拟机可以与C/C++工作在一个进程/线程当中,通过虚拟机的接口,C/C++的数据可以被嵌入的Squirrel代码访问,反之Squirrel的代码和数据也可以被C/C++完全控制。仔细看来,Squirrel在骨子里与Lua是一脉相承的,Squirrel与Lua的基础都是广义表(或者说是一颗多叉树),Hash在这个广义表中起到一个关键的作用。

  Squirrel代码和数据都是组织在一个广义表当中的。数据、函数、类(Lua不支持OO,Squirrel支持有限的OO)都是广义表的一个值,值都是采用<名称,值>的方式存储的,通过对名称的Hash,可以很方便的找到值。

  Squirrel比Lua更好的支持OO,Squirrel可以定义类,允许类继承,能够自动执行构造(constructor函数),而Lua只能通过Table来模拟类。更关键的一点,Squirrel允许类产生实例(instance),每个实例拥有自己的存储空间,在这点上,比Lua的模拟类明显好用。

  Squirrel支持在每个实例上设置一个Userpoint,这个特性非常有利与与C++Object的接口,一个Squirrel类可以方便的作为一个C++ class的影子,我们只需要在Squirrel上实现C++class的接口,通过Squirrel的Userpoint,即可操控这个C++ Object。

  值得关注的是Squirrel的执行速度,执行一个10000元素的数组创建及遍历,其速度大约是C++的1/4,比Lua快20%。

  Squirrel的保留字与C++几乎一致,但Squirrel没有指针,内存由虚拟机管理,不需要手工申请和释放,所以没有new和delete关键字。Squirrel是弱类型的,所以也就没有char、float、int、double等关键字,值得注意到是Squirrel不支持double,其浮点数内部是float,这可能与Squirrel主要为游戏设计有关。

  Squirrel新增了一些关键字,主要有local、typeof、instanceof、resum、yield、delegate、parent等,其中delegate、 parent关键字在Squirrel3.0Alpha版中似乎有变化,这个以后再讨论,resum、yield用于Squirrel的“协程”,可以理解为非抢先式的内部线程(Squirrel虚拟机是单线程的,一个虚拟机内部不支持系统的线程,这和Lua很相似)。

  值得注意的是local关键字,Squirrel中的变量是需要定义的,和C++一样,你可以在程序的任何地方定义,但定义的时候必须使用local关键字。使用local表明变量在堆栈里创建,离开函数则自动销毁,这与C++在函数内定义变量的方式一致。

  Squirrel循环控制语句与C/C++唯一不一致的是增加了foreach循环,而且这个foreach不像Lua一样需要什么“闭包”,可以很简单的使用,例如

  foreach(local i in arrayVar){},这完成对一个数组的遍历,foreach(local key,value in tableVar){}, 这完成对一个表达遍历

Squirrel脚本语言..游戏开发.相关推荐

  1. easyx游戏编程:五子棋(C语言游戏开发)

    easyx游戏编程:五子棋(C语言游戏开发) 五子棋: 本游戏用到了图形界面库graphics.h,图形界面库下载安装: 下载链接: https://easyx.cn/downloads/. 下方有源 ...

  2. C语言游戏开发——打飞机游戏2.0

    C语言游戏开发--打飞机游戏2.0 本次打飞机游戏对上次的打飞机游戏2.0做了代码重构和升级 通过定义函数来实现多个功能 以下为代码主体 通过w a s d来控制飞机的移动 通过空格来发射子弹 #in ...

  3. pythonios脚本语言-iOS开发Swift篇—(一)简单介绍

    一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为"雨燕",是它的LOGO 是一只燕子,跟Objective-C一样,可以用于 ...

  4. 【iOS-cocos2d-X 游戏开发之八】使用Lua脚本进行游戏开发(基础篇)

    对于游戏公司而言,采用游戏脚本lua.python等进行开发也很常见,但是很多童鞋对脚本并没有很熟悉的概念,本篇则向大家简单介绍脚本的用途以及在Cocos2dx基础用法: Lua和python这些详细 ...

  5. 使用Lua脚本进行游戏开发(基础篇)

    对于游戏公司而言,采用游戏脚本lua.python等进行开发也很常见,但是很多童鞋对脚本并没有很熟悉的概念,本篇则向大家简单介绍脚本的用途以及在Cocos2dx基础用法: Lua和python这些详细 ...

  6. 在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)

    对于游戏公司而言,采用游戏脚本lua.python等进行开发也很常见,但是很多童鞋对脚本并没有很熟悉的概念,本篇则向大家简单介绍脚本的用途以及在Cocos2dx基础用法: Lua和python这些详细 ...

  7. C语言游戏开发第一课:数字华容道

    项目背景 1. 手游改写而成. 2. 游戏引擎开发的技术价值 小龙的游戏引擎开发之路:从游戏引擎的设计到京东搜索引擎开发工程师 项目准备 任意版本的VS 或者 VC++ 安装easyx图形库 项目演示 ...

  8. 动态语言开发环境python_GitHub - lcyan26/Script.NET: 脚本语言集成开发环境,支持Tcl、Python、Perl、Ruby、Lua等脚本语言。...

    Script.NET介绍 Script.NET是蓝蚂蚁工作室开发的一套集成开发环境(可用于Tcl.Python.Perl.Ruby.Lua等脚本语言开发),最新的4.0版本已经在github上开源. ...

  9. C语言游戏开发SDL篇

    在 CSDN 博客发现一些分享的好文章,但暂时不懂如何收藏,先写文章将这些网址收录,目后随时方便自己翻阅 2018年10月26日 =================================== ...

最新文章

  1. 分享一个C#使用AT指令控制语音猫的例子
  2. WR:城环所杨军组揭示亚热带水库浮游有壳虫群落构建受随机性过程影响比确定性过程更强...
  3. 汇编语言典型例子详解_数据分析常用的7大思维方法详解
  4. 我的泰坦尼克数据分析
  5. A__Java为数据结构提供的实用包的运用(减少代码量)---更新中ing
  6. label y 训练集测试集x_Adversarial validation-对抗验证| 一种解决训练集与测试集分布不一致的方法...
  7. mongodb备份oplog_MongoDB 备份(mongodump)与恢复(mongorestore)
  8. 手把手一起 图形化安装 k8s 集群
  9. Linux手动释放缓存的方法
  10. Android系统默认Home应用程序(Launcher)的启动过程源代码分析(2)
  11. 你以为只有菜鸟求职碰壁,其实还有...
  12. U盘的基础知识介绍量产
  13. 摩尔庄园怎么显示全部服务器,摩尔庄园手游怎么看自己玩的什么服,服务器查看区别方法...
  14. Android Shape 详细使用
  15. ROS创建Web代理(Web proxy)
  16. 7-33 电话聊天狂人
  17. 字节后端开发工程师-基础架构 二面面经
  18. 数据库系统概论笔记二——画E-R图
  19. 计算机网络知识面试常考
  20. 全网最细海龟 (turtle) 画图讲解 (五):输入/输出文字及鼠标与键盘交互设计

热门文章

  1. DCloud短信验证申请
  2. Accumulation Degree --- 换根dp
  3. 记一次Windows10 home版文件共享步骤及问题处理
  4. 微信小程序——个人版微信小程序与企业版微信小程序区别
  5. OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比
  6. Java1.5泛型指南中文版
  7. C51最全111条汇编指令合集,以及使用时的注意事项,超详细
  8. 详解线性反馈移位寄存器(LFSR)
  9. 秋招提前批已来,万字长文教你如何增加面试大厂的成功率
  10. Leetcode_53_Maximum Subarray