Python脚本如何保证游戏正常开发

Python脚本是一种广泛应用于玩游戏开发的通信语言,在实际应用的过程中还是有不少的问题困扰着开发人员,下面是Python脚本在实际应用中的具体问题解决方案。希望读完下面的文章对其有所帮助。

在早期的一些游戏中,大部分的游戏逻辑都直接写入游戏代码,例如计算公式、游戏流程等。但随着游戏产业的不断发展,游戏开发本身也变得越来越复杂,游戏企划需要更多的时间来对游戏进行调整,如果游戏逻辑还写在代码中,则企划对游戏的每次修改都要通过程序进行,而且还需要重新编译以及重启程序,这样工作效率就大大降低了.深度剖析Python脚本语言功能

关于Python脚本语言进行学习介绍

使用Python脚本语言进行程序编辑

Python脚本程序与Per进行比较

调用Python脚本基本应用方式简述

在游戏中使用Python脚本,就正好能解决上述问题,小到一些计算公式,大到游戏的控制流程都可以通过Python脚本完成,而且目前的脚本系统大多是解释执行的,因此都可以支持运行时动态修改,这样一来可以立即看到修改结果,非常方便。

如何使用脚本

脚本主要有两种方式。一种方式是主程序使用一门高级语言,比如C++进行编写,然后对其嵌入一个脚本解释器,在运行时动态执行一些脚本函数;另一种方式则是整个程序全部使用脚本编写,例如一些泥巴游戏就是直接用LPC脚本编写的。

本文主要研究嵌入式Python脚本使用方法,因为目前大部分的脚本都不能提供如VC++那样方便的调试环境,如果程序全部用脚本编写,当脚本多达几万行甚至十几万行的时候,调试会成为一件非常痛苦的事。而且嵌入式使用时可以将一些非常耗时的代码用C++编写,以保持较好的运行效率。

程序从C++的main( )函数开始启动,然后进入主循环,在一些C++函数中会直接调用脚本函数,在脚本函数的运行过程中,又可能调用C++的扩展函数。C++扩展函数的主要功能有两个:一是用来增加Python脚本无法直接编写的功能,二是用来替换脚本中运行速度过慢的函数。

上述过程的关键点就在于C++和脚本如何相互调用函数,以及如何传递参数与结果。一般的解决方法是在程序启动时利用脚本的API向脚本注册C++的扩展函数,将函数指针传递给脚本系统以便将来调用,调用脚本函数则使用脚本系统的API将调用参数压进栈,取得运行结果也要通过API进行。

Python 脚本简介

目前有许多第三方脚本语言可供直接使用,例如Tcl、Lua等等,本文要介绍的是Python脚本。Python已经有超过十年的历史,是一种解释性的、面向对象的脚本语言。Python的解释器在大部分的操作系统上都可以运行,如Windows、Linux、Solaris、Mac 等。

1. 安装与配置

安装完成后在开始菜单中会有Python的图形化编辑器(IDLE,但目前版本不支持中文字符),Python的命令行解释器以及用户手册

为了在C++程序中调用Python的API函数,需要将头文件与lib路径添加到VC++的搜索目录中,头文件路径是本地Python安装目录下的include目录,lib路径是本地Python安装目录下的libs目录。这里需要注意的是安装包只提供了release版本的lib与dll,如果需要调试运行,则必须自己下载Python的源代码以编译debug版本的lib与dll.

2. 语法简介

详细的语法说明请参考Python安装包自带的文档,这里我只介绍一些常用的关键字与注意事项。

Python脚本没有C++中的 { 和 } ,它使用缩进来代替。变量不需要单独声明,但不能引用未经赋值的变量。

Python脚本中引入了模块的概念,类似C++中Lipary的概念。模块可以包含函数、变量、类。一个脚本文件就是一个模块,模块在使用前需要导入。

Python中没有switch,使用if判断代替:

if (num==1 ):

print "1"

elif (num==2 ):

print "2"

else:

print "unknown

"while 是Python的一个循环语句。在while循环内可以使用continue跳到下个循环,使用peak可以跳出整个循环

cnt=5

while ( cnt>0 ):

print cnt

cnt-=1

for 循环:

list= ["test1", "test2", "test3"]

for str in list:

print str

词典是Python脚本的一种映射数据类型,它能从一个键值(key)映射到实际内容(value):

accounts= {'tom':'123456', 'mike':'654321'}

print accounts['tom']

print accounts['mike']

3.API 介绍

Python脚本提供了大量的C API,C++与Python的交互都是通过这些API进行。下面介绍几个比较重要的API函数:void Py_Initialize( )在使用Python系统前,必须使用Py_Initialize对其进行初始化。它会载入Python的内建模块并添加系统路径到模块搜索路径中。

这个函数没有返回值,检查系统是否初始化成功需要使用Py_IsInitialized。int PyRun_SimpleString(char *command)把输入的字符串作为Python代码直接运行,返回0表示成功,-1表示有。大多时候错误都是因为字符串中有语法错误。PyObject* Py_BuildValue(char *format, ...)把C++的变量转换成一个Python对象。

当需要从C++传递变量到Python时,就会使用这个函数。此函数有点类似C的printf,但格式不同。常用的格式有s表示字符串,i表示整型变量,f表示浮点数,O表示一个Python对象。PyObject* PyObject_CallObject(PyObject*callable_object, PyObject *args)调用一个callable_object指向的Python函数,args为调用参数

在使用此函数前可以用PyCallable_Check来检测callable_object是否为一个可被调用的Python对象。PyObject* PyImport_Import(PyObject *name)载入一个n a m e 指定的模块。可以先使用PyString_FromString将模块名转换为Python对象,再使用PyImport_Import载入。void Py_Finalize()关闭Python系统,一般在程序退出时调用此函数。

python能不能开发游戏脚本_Python脚本如何保证游戏正常开发相关推荐

  1. python智力问答游戏代码_Python智力问答小游戏

    目录 1.设计思路 2.建立题库 3.答题设计 4.GUI设计 本篇博文将使用Python代码语言简单编写一个轻松益智的小游戏,效果如下所示: 1.设计思路 本项目使用SQLite建立问答题库,每道题 ...

  2. python制作图片拼图游戏下载_Python图像处理——人物拼图游戏

    游戏介绍: 拼图游戏将一幅图片分割咸若干拼块并将它们随机打乱顺序,当将所有拼块都放回原位置时,就完成了拼图(游戏结束).本人物拼图游戏为3行3列,拼块以随机顺序排列,玩家用鼠标单击空白块四周的交换它们 ...

  3. python 脚本_python脚本如何同时运行多个

    当我们想一次运行多个py脚本的时候你想到了什么应用场景了吗?当你想同时并行的处理一些对象时你有什么好方法吗?下面我就简单的总结一些这方面的小技巧,方便大家根据情况灵活处理. 1 用一个py脚本运行多个 ...

  4. python控制手机自动刷新闻_Python脚本利用adb进行手机控制的方法

    一. adb 相关命令: 1. 关闭adb服务:adb kill-server 2. 启动adb服务 adb start-server 3. 查询当前运行的所有设备 adb devices 4. 可能 ...

  5. python调用shell用什么类_python脚本中调用shell命令

    在python脚本中调用类uninx上的系统命令或工具.有下面两种方法 os.system(string cmd | scriptname.sh) 参数可以是shell命令,也可以是shell脚本. ...

  6. python代码进去docker容器内_python脚本监控docker容器

    本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下 脚本功能: 1.监控CPU使用率 2.监控内存使用状况 3.监控网络流量 具体代码: #!/usr/bin/e ...

  7. python写安卓app控制蓝牙_Python脚本利用adb进行手机控制的方法

    一. adb 相关命令: 1. 关闭adb服务:adb kill-server 2. 启动adb服务 adb start-server 3. 查询当前运行的所有设备 adb devices 4. 可能 ...

  8. pycharm定时运行python脚本_Python脚本用于定时关闭网易云音乐PC客户端

    本文主要讲述如何使用Python在指定的秒数后关闭Windows上运行的程序(此程序以网易云音乐为例).本文的背景是昨晚发现网易云音乐的PC客户端没有定时关闭的功能,可以使用Python编写一个简单的 ...

  9. 网页运行python脚本_python脚本和网页有何区别

    Python是一种计算机程序设计语言,一种面向对象的动态类型语言,一种脚本语言.最初被设计用于编写自动化脚本(shell)的,常用于各种服务器的维护和自动化运行.它具有丰富和强大的库.它常被昵称为胶水 ...

最新文章

  1. php的扩展memcache和memcached区别分析
  2. ROM、PROM、EPROM、EEPROM、RAM、SRAM、DRAM的区别
  3. C#StreamWriter的操作解析
  4. 前端学习(1966)vue之电商管理系统电商系统之获取参数列表
  5. leetcode题解677-键值映射
  6. 将图片url转file类型
  7. linux 神舟z7,老船长带你神舟战神Z7使用进阶
  8. CMM 关键过程域
  9. Q4财报再次显示,百度在2B市场的竞争中已占据领先地位
  10. Life Restart 人生模拟器 网址
  11. 结构化思维的训练方式
  12. python破解网易反爬虫机制
  13. vue如何通过键盘方向键切换input焦点
  14. Nao机器人运行B-human代码之开始篇 2
  15. 2022年第十四届蓝桥杯模拟赛【核酸日期】C语言详解
  16. iOS手机端日志打印显示工具
  17. 刷新校史!985副研究员,以独立作者身份,研究成果被数学顶级期刊录用!
  18. 中国大学生数学竞赛(非数学专业类)竞赛大纲
  19. 1.10 环的同态和理想
  20. Linux内核学习路线

热门文章

  1. 电话号码的组合(公式运算)
  2. linux系统部署游戏七日杀亡灵遗产MOD
  3. tpc-ds基准测试案例-hive
  4. java 正则 预编译_正则表达式预编译功能的正确使用
  5. 苹果收购LuxVue,微软将为Windows Phone提供文件管理器
  6. ffmpeg android 中文文档,Android 中使用FFMPEG
  7. 两阶段法-Python实现
  8. Solaris10 下mysql5.5.12的安装
  9. 请教appium—desktop的问题
  10. python爬虫(正则获取元素)