lua可以用来开发软件吗
嵌入式C就够了,大型游戏还需要C++,很少看到游戏用C做的。
。
还有你那个lua语言就是个脚本语言。
很简单的。
。
。
而且很少人用。
。
如果你工作的公司没人懂,你就不可能用到。
。
而且真正想做东西还是得靠C/C++。
C很接近底层,所以嵌入式这些和硬件打交道的用C比较方便。
游戏的话你用C很难写出界面之类的。
。
不是不能而是麻烦。
。
C++可以直接调用MFC之类的做图形界面。
所以做游戏的话还是先学好c,嵌入式学完c就好好去学硬件知识吧
求大神帮帮忙 安卓lua的脚本怎么弄成apk?
计算机语言(Computer Lnguage)指用于人与计算机之间通讯的语言。
计算机语言是人与计算机之间传递信息的媒介。
计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。
计算机语言主要分为三类:- 低级语言- 高级语言- 专用语言1、低级语言- 机器语言、汇编语言和符号语言。
- 汇编语言源程序必须经过汇编,生成目标文件,然后执行。
2、高级语言- BASIC(True basic、Qbasic、Virtual Basic)、C、PASCAL、FORTRAN、智能化语言(LISP、Prolog)等等。
- 高级语言源程序可以用解释、编译两种方式执行。
通常用后一种。
我们使用的C语言就是使用的后者。
3、专用语言 CAD系统中的绘图语言和DBMS的数据库查询语言。
1.1.机器语言 电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算机的语言的基础。
计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由"0"和"1"组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。
使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。
因此程序就是一个个的二进制文件。
一条机器语言成为一条指令。
指令是不可分割的最小功能单元。
而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。
但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。
机器语言,是第一代计算机语言。
1.2.汇编语言 为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用"ADD"代表加法,"MOV"代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。
然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。
1.3.高级语言1.3.1.高级语言的发展 从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。
经过努力,1954年,第一个完全脱离机器硬件的高级语言--FORTRAN问世了,40 多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、Delphi、JAVA等。
特别要提到的:在C语言诞生以前,系统软件主要是用汇编语言编写的。
由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言——C语言。
高级语言的发展也经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。
相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。
60年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是人自为战,缺乏科学规范的系统规划与测试、评估标准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。
这一切,极大地震动了计算机界,史称"软件危机"。
人们认识到:大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。
程序的设计应易于保证正确性,也便于验证正确性。
1969年,提出了结构化程序设计方法,1970年,第一个结构化程序设计语言--Pascal语言出现,标志着结构化程序设计时期的开始。
80年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。
在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。
这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(Object)。
其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。
对使用者来说,只关心它的接口(输入量、输出量)及能实现的功能,至于如何实现的,那是它内部的事,使用者完全不用关心,C++、Virtual Basic、...
Ruby,Perl,Python,Lua等语言相互之间都有哪些异同点
汇编语言汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。
它同样需要编程者将每一步具体的操作用命令的形式写出来。
汇编程序通常由三部分组成:指令、伪指令和宏指令。
汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。
例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
汇编语言分为:脚本语言:脚本语言(Script language,scripting language,scripting programming language)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。
此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。
早期的脚本语言经常被称为批量处理语言或工作控制语言。
一个脚本通常是解释运行而非编译。
虽然许多脚本语言都超越了计算机简单任务自动化的领域,成熟到可以编写精巧的程序,但仍然还是被称为脚本。
几乎所有计算机系统的各个层次都有一种脚本语言。
包括操作系统层,如计算机游戏,网络应用程序,字处理文档,网络软件等。
在许多方面,高级编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。
脚本编程速度更快,且脚本文件明显小于如同类C程序文件。
这种灵活性是以执行效率为代价的。
脚本通常是解释执行的,速度可能很慢,且运行时更耗内存。
在很多案例中,如编写一些数十行的小脚本,它所带来的编写优势就远远超过了运行时的劣势,尤其是在当前程序员工资趋高和硬件成本趋低时。
脚本语言是一种解释性的语言,例如Python 、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在。
机器语言:由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言,用机器语言编程的程序称为目标程序。
只有目标程序才能被计算机直接识别和执行。
但是机器语言编写的程序无明显特征,难以记忆,不便阅读和书写,且依赖于具体机种,局限性很大,机器语言属于低级语言。
高级语言高级语言是大多数编程者的选择。
和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。
同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,像最简单的编程语言PASCAL语言也属于高级语言。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。
如较早时期的Qbasic语言。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。
但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。
常见语言:C#C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
C#是微软公司研究员Anders Hejlsberg的最新成果。
Csharp(音标 [∫a:p])(又被简称为"C#")是微软公司在2000年6月发布的一种新的编程语言,并定于在微软职业开发者论坛(PDC)上登台亮相。
C#看起来与Java有着惊人的相似;它包括了诸如单一继承、界面、与Java几乎同样的语法,和编译成中间代码再运行的过程。
但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。
在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了C#的出现,然后我将介绍C#和它与Java、C、C++的相似之处。
其次我将讨论一些存在于Java和C#之间的高层次的、和基础的差别。
我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.NET和C#的一个主要战略.以及Windows 2000的一个"d预览版本",还有MSDN上迅速增多的文档集子的形式获得(还没有最终定型)。
BasicBASIC(Beginners' All-purpose Symbolic Instruction Code,又译培基),意思就是“初学者的全方位符式指令代码”,是一种设计...
如何使用Cocos Code IDE和Cocos2d
摘要: 简介Cocos Code IDE是Cocos2d-x引擎官方团队推出的一款基于Eclipse的跨平台开发环境,专为Cocos2d-x Lua和JavaScript开发人员准备,通过Cocos Code IDE,可方便地创建游戏工程、编写并且调试代码、实时查看代码修改 ... 简介Cocos Code IDE是Cocos2d-x引擎官方团队推出的一款基于Eclipse的跨平台开发环境,专为Cocos2d-x Lua和JavaScript开发人员准备,通过Cocos Code IDE,可方便地创建游戏工程、编写并且调试代码、实时查看代码修改效果、最终直接发布成一个可上架的安装包。
Cocos Code IDE的官方发布说明:《Cocos Code IDE》(英文地址)Cocos Code IDE的官方指南:《如何安装和设置Cocos Code IDE》(英文地址)配置Cocos Code IDE配置的主要有两步:1. 配置Lua Framework 或者JavaScript FrameWork ,导入 Cocos2d-x 引擎或者 Cocos2d-JS 引擎即可。
2. 配置安卓开发环境,如SDK,NDK,ANT等等具体的Cocos Code IDE开发环境搭建请参考:如何使用Cocos Code IDE调试Lua游戏?(英文版请点击这里)如何使用Cocos Code IDE调试JavaScript游戏?(英文版请点击这里)本游戏的开发环境Mac OSX 10.9.4Cocos Code IDE 1.0.0.RC0(下载地址)Cocos2d-x 3.2(下载地址)《一个都不能落下》游戏开发1.创建新工程打开Cocos Code IDE,切换到Lua工作环境选择菜单,新建一个Cocos Lua项目,输入项目名:NoOneLeftBehind。
点击下一步设置屏幕方向和分辨率,确认完成这个时候你就可以点击运行按钮,没有问题的话示例demo就会弹出。
因为分辨率被我们更改过的关系,游戏画面有点变形。
2.游戏逻辑现在我们就可以往游戏项目中添加自己的代码了。
由于游戏的代码细节并不是本文的重点,所以这里只简单地介绍《一个都不能落下》的实现原理。
整个游戏项目源码可以在我的Github上下载。
A.main.lua是游戏的入口,在main()函数中我们可以找到场景跳转的代码,这在接口上和Cocos2d-x是保持一致的,因此我们可以很容易上手。
在这里我们更改第一个场景为主菜单场景。
--create scene local scene = require("MenuScene")local menuScene = scene.createScene()if cc.Director:getInstance():getRunningScene() then cc.Director:getInstance():replaceScene(menuScene)elsecc.Director:getInstance():runWithScene(menuScene)endB.MenuScene.lua是游戏的主菜单,四种难度的游戏模式可以在这里进行选择。
你可以用下面这种方式创建一个menu。
--create menulocal function menuCallbackOpenNormal()cc.Director:getInstance():replaceScene(require("GameScene").createScene(2))endlocal normal = cc.MenuItemImage:create("normal.png", "normal.png")normal:setPosition(0, 150)normal:registerScriptTapHandler(menuCallbackOpenNormal)...local menu = cc.Menu:create(normal, nightmare, hell, inferno)self:addChild(menu)C.GameScene.lua是游戏的主场景,通过传进来的heroCount设置同时显示几个hero。
--add herofunction GameLayer:addControllers() local visibleSize = cc.Director:getInstance():getVisibleSize() local startY = 30local gap = (visibleSize.height - startY) / self._heroCount for i=1, self._heroCount do local controller = require("HeroController").createController(self, startY + gap * (i - 1)) table.insert(self._controllers, i, controller)endendD.在这里我们对英雄和他作用的环境进行了封装。
然后在GameScene的每一帧调用HeroController的onUpdate函数,在这个函数中检测一个随机定时器来判断是否应该生成一个新的障碍物。
-- create blockfunction HeroController:onUpdate() self.frameIndex = self.frameIndex +1 if self.frameIndex >= self.nextKeyFrameIndex then local block = require("Block").new()block:init() self._layer:addChild(block)block:setPositionY(self._positionY + block:getContentSize().height / 2) self:resetTimer()endendE.物理引擎。
Hero和,Ground,Block的碰撞这里采用了Cocos2d-x集成的物理引擎。
以下代码反映了Hero和Block的碰撞检测。
-- collision detectionself.touchListener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(self.touchListener, self)local function onContactBegin(contact)self:unscheduleUpdate()cc.Director:getInstance():getEventDispatcher():removeEventListener(self.touchListener)cc.Director:getInstance():getEventDispatcher():removeEventListener(self.contactListener)cc.Director:getInstance():replaceScene(require("GameOver").create(self._heroCount, score))endself.contactListener = cc.EventListenerPhysicsContact:create();self.contactListener:registerScriptHandler(onContactBegin, cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN);local eventDispatcher = self:getEventDispatcher()eventDispatcher:addEventListenerWithSceneGraphPriority(self.contactListener, self);F.Block类,封装...
集成开发环境的选择新手怎样选择集成开发环境
计算机语言主要分为四类: - 低级语言 - 高级语言 - 专用语言 - 脚本语言 1、低级语言 - 机器语言、汇编语言和符号语言。
- 汇编语言源程序必须经过汇编,生成目标文件,然后执行。
2、高级语言 - BASIC(True basic、Qbasic、Virtual Basic)、C、C++、PASCAL、FORTRAN、智能化语言(LISP、Prolog)、动态语言(Python、PHP、Ruby、Lua)等等。
- 高级语言源程序可以用解释、编译两种方式执行。
通常用后一种。
我们使用的C语言就是使用的后者。
3、专用语言 CAD系统中的绘图语言和DBMS的数据库查询语言。
1.1.机器语言 机器语言是指一台计算机全部的指令集合 电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算机的语言的基础。
计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由"0"和"1"组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。
使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。
因此程序就是一个个的二进制文件。
一条机器语言成为一条指令。
指令是不可分割的最小功能单元。
而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。
但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。
机器语言,是第一代计算机语言。
1.2.汇编语言 为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用"ADD"代表加法,"MOV"代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。
然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。
1.3.高级语言 1.3.1.高级语言的发展 从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。
经过努力,1954年,第一个完全脱离机器硬件的高级语言--FORTRAN问世了,40 多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C++、VC、VB、JAVA等。
特别要提到的:在C语言诞生以前,系统软件主要是用汇编语言编写的。
由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言——C语言。
高级语言的发展也经历了从早期语言到结构化程序设计语言,从面向过程到非过程化程序语言的过程。
相应地,软件的开发也由最初的个体手工作坊式的封闭式生产,发展为产业化、流水线式的工业化生产。
60年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是个自为战,缺乏科学规范的系统规划与测试、评估标准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。
这一切,极大地震动了计算机界,史称"软件危机"。
人们认识到:大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。
程序的设计应易于保证正确性,也便于验证正确性。
1969年,提出了结构化程序设计方法,1970年,第一个结构化程序设计语言--Pascal语言出现,标志着结构化程序设计时期的开始。
80年代初开始,在软件设计思想上,又产生了一次革命,其成果就是面向对象的程序设计。
在此之前的高级语言,几乎都是面向过程的,程序的执行是流水线似的,在一个模块被执行完成前,人们不能干别的事,也无法动态地改变程序的执行方向。
这和人们日常处理事物的方式是不一致的,对人而言是希望发生一件事就处理一件事,也就是说,不能面向过程,而应是面向具体的应用功能,也就是对象(Object)。
其方法就是软件的集成化,如同硬件的集成电路一样,生产一些通用的、封装紧密的功能模块,称之为软件集成块,它与具体应用无关,但能相互组合,完成具体的应用功能,同时又能重复使用。
对使用者来说,只关心它的接口(输入量、输出量)及能实现的功能,至于如何实现的,那是它内部的事,使用者完全不用关心,C++、Visual Basic、Delphi就是典型代表。
高级语言的下一个发展目标是面向应用,也就是说:只需要告诉程序你...