为什么不建议用 python 建议写游戏代码

24191人阅读
小话python
作者:陈曦
日期: 11:18:06&
环境:[Mac 10.7.1 Lion Intel-based i3,支持64位指令& Python 2.7.1 &gcc4.2.1]&
转载请注明出处
Q1: 脚本的本质是什么?
A:&它就是一段代码,只不过让对应的解释器执行即可;和它相对应的是编译型代码,需要编译成可执行文件或者目标文件,在指定平台上运行或者使用。
Q2: 为什么写脚本不熟练的程序员不是好程序员?
A: 如果程序员主要写的就是特定类型的脚本,那肯定是这样;如果不是,当主要工作不是写脚本时,程序员要做的不仅仅是写本职工作,还不可避免地需要处理相关的测试和验证工作。例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么。在此时,如果一味希望采用编译型语言来编写这样的代码,实践中的时间和精力是不够的,所以,脚本成了很好地选择。
Q3: 在您所了解的脚本中,最喜欢哪个?
A:&对于windows下批处理,linux shell, mac shell, python, perl, VBScript这些脚本中,最喜欢的就是python.原因在于,它从一方面很像c语言,简洁,很多时候代码很易懂易写;另一方面很像c++,支持面向对象的处理。
Q4: 给个mac下python语言的hello代码吧。
A:&首先得确定已经安装了python解释器。
可以看出,已经安装了。如果没有,可以使用macport进行安装。
编写如下代码,保存为hello.py:
print &hello, python!\n&
Q5: 每次命令行输入python,感觉还挺烦的,有没有更简单的方式?
A:&那么建立一个python的软链接吧,取名为p.只要没有冲突就行。
此时,可以使用p命令代替python.
Q6: 对于创建变量和使用变量呢,这样的代码如何写?
A: 对于创建变量和使用变量,它没有什么很奇怪的语法,不像bash或者perl那样,需要一个$符号,有时还需要$()这种形式。从大二开始学习了bash, 到现在依然会忘记$符号有时该如何处理。python才看1天,就记住了它的处理方式,因为它对变量的声明和定义根本不需要$。
保存为var.py.
可以看出,它的处理很简洁,i是变量,初始化的时候是i,使用的时候依然是i,很容易看懂。
Q7: 有时,可能需要计算大整数运算结果,如果使用编程语言,比如c语言等等来计算,可能需要编写大整数计算的代码,这可能是个耗时的过程,python可以提供类似的计算功能吗?
A: 是的。python解释器可以提供的一个基本功能就是计算功能, 同时它可以提供直接输入功能,简单明了。如下:
Q8: 可是c语言同样提供了double这样的类型,可以操作很大的数据,上面的过程用c代码同样可以方便实现?
A: 是的,是可以实现,但是如果需要计算一个表达式非要使用c语言,那过程显得太复杂了。
Q9: 有时,需要计算的表达式很多,如果像上面那样一个一个输入,岂不太复杂了?
A: python提供的基本功能就是解释字符串,把表达式放进字符串中,让python来解释即可。
上面的eval可以对字符串参数进行计算。需要计算很多个表达式的时候,我们可以将表达式放在一个文件中:
14.5+34.5-12.5
保存为expr_cal. &然后编写脚本读取文件中的数据,一行一行计算值:file = open(&expr_cal&, &r&)
all_lines = file.readlines()
for line in all_lines:
print eval(line)
file.close()
保存为expr_cal.py. 然后执行:
可以看到,上面的代码已经正确地执行了。
Q10: 有时,对于编码问题,很讨厌的一个问题,为了确定某个字符的某种编码的数据是什么,python可以提供简单的方式吗?
A: 是的。如下:
上面可以看到,字符串 “你好” 对应的unicode编码,UTF8编码和GB2312编码对应的数据,方便易查。在出现编码问题的时候,不要慌张,python轻松给出结果。
Q11: 对于复数的运算,python有没有提供对应的实现?
A: 是的。复数运算也很简单和直接:
Q12: 有的时候会忘记平台默认的换行符是什么,有什么方法可以得到吗?
A: 使用os的linesep可以得到它。如下:
如果在其它平台,可能得到不同的结果。
Q13: 在开发和修复bug过程中,可能需要对某个指定大小文件进行操作,那么如何快速生成一个指定大小的文件?
A: python提供了文件操作接口,可以很方便解决这个问题。如下,生成一个100MB大小的文件,最后一个字节为0:
运行完后,可以找到这样大小的文件:
Q14: 在网络访问过程中,经常需要确定某个网页对应的html数据,而且有时需要对于html的数据进行搜索,有什么比较好的方法?
A: 使用脚本实现是个不错的选择,对于数据的分析比较直接,虽然使用浏览器来查看源代码也是一种方式。如下:
上面读取的数据没有完全显示。
从上面可以看出,其实脚本发挥着很大的作用。工欲善其事必先利其器,python就是一个很好的器。
作者:陈曦
日期: 11:18:06&
环境:[Mac 10.7.1 Lion Intel-based i3,支持64位指令& Python 2.7.1 &gcc4.2.1]&
转载请注明出处
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:336991次
积分:6610
积分:6610
排名:第2549名
原创:302篇
评论:293条
阅读:18757
文章:24篇
阅读:77809
(3)(1)(1)(5)(3)(12)(20)(2)(10)(6)(185)(39)(1)(2)(4)(2)(6)(1)用 Python 写游戏有什么优势?
用 Python 开发过多个网游,包括客户端和服务器端都用 Python 搞过,想回答一下这个问题。一开始,很多公司使用 Python 或其它脚本语言的原因是想提高跳槽的门槛,别笑,在 07-08 年的时候,有猎头找我,听到我的项目经验和长期写脚本以后,完全不能接受我的开价,所以我很久都没有跳槽成功。当然,现在来说,企业已经没有这个优势了,大量使用脚本的公司招人,随便可以跳,反而是五六年前最容易跳槽的 C/C++ 程序员现在想跳槽挺困难的。所以一开始,Python 写游戏的优势应该是能够让人员比较稳定。然后就是 Python 比 Lua 有更阶的抽象能力,可以用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合作为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,然后用 C/C++ 在非常必要的时候写一些扩展。Python 非常适合编写 1 万行以上的项目,而且能够很好地把网游项目的规模控制在 10 万行代码以内。
谢邀。一般是作为游戏脚本内嵌在游戏中,这样做的好处是即可以利用游戏引擎的高性能,又可以受益于脚本化开发的优点。即游戏剧本、数据、玩法逻辑这类需要灵活修改和调整的部分可以写在脚本中,只需要修改脚本内容就可以调整游戏内容,不需要重新编译游戏,特别方便。同样常用作游戏脚本的语言还有Lua,Ruby等。不是特别复杂的游戏也可以直接用Python一类的脚本语言开发,很方便,善用一些库应该也可以达到不错的性能。
快啊~几天就复刻了个python文字冒险游戏~
python的第三方模块pygame编写有些非常方便。包含大量的函数可以使用:画图、图像渲染、字体显示、声音、动画、3D以及人工智能等。可以看看这个教程:
已有帐号?
无法登录?
社交帐号登录为什么不建议用 Python 写游戏代码_百度知道Lua 为什么在游戏编程领域被广泛运用?
想听听历史和技术原因.
历史方面:《大话西游》用的脚本语言是微软的JScript(JavaScript的一种方言),维护不便bug多,受系统IE版本的影响兼容性差。所以2002年网易开发《大话西游II》时,决定在客户端内嵌别的脚本语言。当时该项目技术负责人云风认为要挑不出名的语言,让做外挂的人搞不懂(《大话西游》一代被外挂《月光宝盒》搞死了),于是就选择了Lua 4.0。云风在九十年代就开发游戏引擎并建设个人网站(),在游戏开发领域声望高。网易《大话西游II》是首个在市场上取得成功的国产网络游戏。所以后来国内游戏开发行业纷纷受此影响采用Lua.技术方面:现在,2013年,Lua和其他流行脚本语言Python、JavaScript各分秋色:语言规范精简、运行时库小。其创始人称Lua是穿过针孔的语言(),他加入的任何语言特性都能用C API简单的调用。易于创建受限环境,C语言一端可以控制暴露给Lua脚本的任何功能。我猜这也是《魔兽世界》的插件语言选用Lua的原因。性能方面,虽然仍然比Python快,但不如V8(谷歌的JavaScript实现)。协程对于编写并行逻辑,非常有用。而Python、JavaScript都不支持协程,只有StacklessPython、call/cc等方言支持类似功能。Lua的元表很有用。不过我听说Python也支持类似的功能。JavaScript的原型链则只是元表功能的十分之一左右吧。Lua支持弱引用。对于上层逻辑用处不大。但对于底层引擎管理资源,超级有用。JavaScript不支持弱引用;Python支持。Lua有个非官方实现,Luajit,性能不错。但是回到2002年,Lua和JScript相比,优势很大。与C/C++交互方便。Lua的C API简洁正交,而JScript的COM接口臃肿繁杂。高性能。Lua虚拟机实现简单高效,比起JScript,又快又省内存。开源。云风为了防外挂,后来修改了《大话西游II》的Lua字节码格式,让官方的Lua虚拟机无法兼容《大话西游II》的Lua字节码。如果采用不开源的JScript,就不可能自己修改虚拟机和编译器了。不过很遗憾,《大话西游II》的Lua 4.0并不支持协程。------------------------------------------------------------------------最后我想说,开发游戏并不一定要脚本语言。C/C++这类低级语言写逻辑太不方便,脚本语言能弥补这个缺陷。但如果你的项目主要语言不是C/C++,而是D、Java、Scala、Haskell、Go、C#、F#等性能接近C/C++的高级语言,那么你就不需要额外的脚本语言。王垠写过,和我的看法基本相同。当然还有Haxe这种既可以编译成脚本语言,也可以编译成C++的古怪语言来捣蛋。
Lua 被运用的领域远不止游戏。我的感觉是:游戏是一个更容易被大多数人认识到的领域。比如说 Adobe Photoshop Lightroom 的 40% - 60% 由 Lua 写成。版本 3.0 之后几乎没有新的 non-Lua 代码加入。但是大多数非专业人士连 Lightroom 这个名字都没有听到过。所以说,Lua 在游戏领域被广泛运用只是 Lua 被所有领域广泛应用的显现。Lua 能得到广泛应用,是因为它完全符合 Richard Gabriel 关于软件如何能得到认可的理论。Language are accepted and evolved by a social process, not a technical or technological one. Successful languages must have modest or minimal computer resource request.我曾经给 Lua 克服的问题起了一个名字:集成污染。我认为这也是 Richard Gabriel 提到了 socially acceptance 的一个重要因素。
Lua 虚拟机小,嵌入方便,而且效率较高,语言也有很好的设计(个人认为比 JavaScript 好)
游戏领域的核心功能往往用C++等语言编写,为了满足游戏活动中的各种功能组合,需要的是一个比C++这种语言简单的,轻量级的,容易学习和使用的,性能又不错的语言。 最好是业界有大量产品使用,得到了实际验证。 Lua 的特点:* 可以很方便的和用C/C++编写的游戏逻辑互相调用
* 很简单,不涉及任何复杂的编程概念,麻雀虽小五脏俱全,基本的编程需要全都满足了
* 轻量级,库体积很小,只有几百K。
* 学习很容易,甚至策划都学会了编写脚本
* 性能好, 消耗的计算机资源不多
* 已经有很多游戏产品使用Lua
* 大话西游2
* 魔兽世界Wow
* 剑侠情缘3
* 除了游戏,也有其它软件使用Lua
* Adobe Lightroom
我不太熟悉历史。不过Lua足够轻量,API简明易懂。别的脚本语言,perl的API是一坨巨大的奇葩,python个头太大。别的脚本语言,像Tcl、JS、Lisp我都没用过。
自己用VC2008和Lua写的一个游戏框架,结构应该说比较美观吧,相信不会让大家失望,下载地址为:百度网盘:GitHub:也许下面的回答还是不能说清楚lua到底哪点好,哪点适合游戏制作,但是下载查看这个具体的程序后相信会慢慢喜欢它的*_^以前一直听别人说lua在游戏领域如何流行,但是在网上搜索许多,也只是见到一些文章介绍,于是最终决定自
己来写一个,宿主引擎和脚本框架都从零开始写,在构思和动手制作了几个月后,终于完成了这个完整框架,相信下载使用的同学一定会对这个引擎,以及我已编写好的部分Lua框架模块感到满意,当然如有不足之处也只管指出哈。这个框架的宿主程序(引擎)是用VC2008开发的,运行效率较高(极限测试可装载几百兆大地图,上百活动游戏对象等),这个宿主程序负责绘图,声音,操作消息传递
等基本内容,并向lua提供接口,参数简单,函数名好记;而游戏的上层实现则全部由lua脚本完成;对windows开发熟悉的同学肯定都知道
MFC库对winAPI完善的封装,使得窗口编程中许多重复的事情不必再亲自去处理,根据共性和不同点从基类往下派生,使得结构很清晰,代码重用性很高;
这里正是借鉴了这一思路,先总结游戏程序的共性,从逻辑上把游戏划分成若干模块,确定框架,再充分利用lua的表结构,模拟派生和继承等面向对象特性,然
后把诸如地图,角色,怪物,动画,界面控件等写成lua模块,通过约定一些同名接口来规范协调一些有关联的模块,方便世界管理器统一管理
(world.lua),这样在制作不同游戏时只需要通过搭配已有模块和派生一些新模块或写新模块,即可完成一个确定的新游戏,当然我还会不断更新lua
框架模块,而大家如有新作品也欢迎分享出来哦
这是框架使用截图:这是用它做的游戏与小应用截图:这是用它做的游戏与小应用截图:下面这个是一个网络搜索实验:下面这个是一个网络搜索实验:下面是一个信息浏览工具:以上截图都是用这个框架开发的,希望大家能喜欢,也真的希望能有更多人了解并喜欢上lua语言以上截图都是用这个框架开发的,希望大家能喜欢,也真的希望能有更多人了解并喜欢上lua语言--------------------------最后在这里打个小广告吧,是一个原创的数学软件,类似matlab的simulink,个人编写和更新了十余版本,这是最新版,下载地址为:欢迎有兴趣的朋友们试用,感谢您的支持哦(软件详情也可以看我在知乎的另一个回答) 日
是因为Lua太优秀了大家不得不用它。我不去谈Lua一些高级特性,实际上长期以来,游戏需要的脚本,功能上要求不会太高。但是,必须方便与C/C++集成。用过Lua的都知道,Lua无论在与C/C++数据传递,还是在封装都很方便,API非常简单。同时Lua的许可证和紧凑性(把lib编译进程序即可),都十分利于集成。这些都是Python和V8不能比的。同时,Lua编程学习难度极低。Python虽然容易学,但不简单;JavaScript学习难度不够低。实际上,Lua进入游戏业非常早,早在1998年卢卡斯的《异域狂想曲》(Grim Fandango)中,就首次在游戏领域用到了Lua。十年之前著名的游戏博德之门、猴岛4都用了Lua。至少从开源代码来看,云风对Lua的使用是十分重度的,比如skynet的入口是在Lua上。国内很多游戏对Lua的使用很浅,多是把一些需要经常改的运算放出来给Lua做。所以很多特性显得不那么重要,有三大结构用,能传递返回参数就成。如果嵌一个脚本机到程序里来有那么多麻烦,估计他们会自己写套命令脚本。
在看program in lua,第一次认真看一本英文书,不过Lua的简洁还是让我很喜欢的。我们公司另一个大型医疗软件(开发周期4年)里面也使用了lua,虽然比例不多,但是至少是游戏之外的应用。哈哈。。
```还常见于各种游戏外挂里```
对于手游的话就三个字,热更新!须知,苹果乔布斯定下的BB规矩,弄得很多东手游都只能用
编译型的语言写万一发现一个bug,尼玛就要重新打包,重新搞一个 安装包。 用户不爽,开发者也吐血Lua完美解决这个问题。可以这么说吧,未来不长的时间内,Lua在手游客户端领域的 应用的水平高低,基本直接决定了这个手游公司的水平高低!
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 python游戏代码 的文章

 

随机推荐