成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python腳本解決在游戲開(kāi)發(fā)中的困難

開(kāi)發(fā) 后端 游戲開(kāi)發(fā)
Pytho腳本是一種經(jīng)常使用的通訊語(yǔ)言,在使用的過(guò)程中會(huì)遇到很多問(wèn)題,下面向大家介紹如何使用Python腳本以及與其他語(yǔ)言的使用對(duì)比。

Python腳本是一種廣泛應(yīng)用于玩游戲開(kāi)發(fā)的通信語(yǔ)言,在實(shí)際應(yīng)用的過(guò)程中還是有不少的問(wèn)題困擾著開(kāi)發(fā)人員,下面是Python腳本在實(shí)際應(yīng)用中的具體問(wèn)題解決方案。希望讀完下面的文章對(duì)其有所幫助。

在早期的一些游戲中,大部分的游戲邏輯都直接寫(xiě)入游戲代碼,例如計(jì)算公式、游戲流程等。但隨著游戲產(chǎn)業(yè)的不斷發(fā)展,游戲開(kāi)發(fā)本身也變得越來(lái)越復(fù)雜,游戲企劃需要更多的時(shí)間來(lái)對(duì)游戲進(jìn)行調(diào)整,如果游戲邏輯還寫(xiě)在代碼中,則企劃對(duì)游戲的每次修改都要通過(guò)程序進(jìn)行,而且還需要重新編譯以及重啟程序,這樣工作效率就大大降低了。#t#

在游戲中使用Python腳本,就正好能解決上述問(wèn)題,小到一些計(jì)算公式,大到游戲的控制流程都可以通過(guò)Python腳本完成,而且目前的腳本系統(tǒng)大多是解釋執(zhí)行的,因此都可以支持運(yùn)行時(shí)動(dòng)態(tài)修改,這樣一來(lái)可以立即看到修改結(jié)果,非常方便。

如何使用腳本

腳本主要有兩種方式。一種方式是主程序使用一門(mén)高級(jí)語(yǔ)言,比如C++進(jìn)行編寫(xiě),然后對(duì)其嵌入一個(gè)腳本解釋器,在運(yùn)行時(shí)動(dòng)態(tài)執(zhí)行一些腳本函數(shù);另一種方式則是整個(gè)程序全部使用腳本編寫(xiě),例如一些泥巴游戲就是直接用LPC腳本編寫(xiě)的。

本文主要研究嵌入式Python腳本使用方法,因?yàn)槟壳按蟛糠值哪_本都不能提供如VC++那樣方便的調(diào)試環(huán)境,如果程序全部用腳本編寫(xiě),當(dāng)腳本多達(dá)幾萬(wàn)行甚至十幾萬(wàn)行的時(shí)候,調(diào)試會(huì)成為一件非常痛苦的事。而且嵌入式使用時(shí)可以將一些非常耗時(shí)的代碼用C++編寫(xiě),以保持較好的運(yùn)行效率。

序從C++的main( )函數(shù)開(kāi)始啟動(dòng),然后進(jìn)入主循環(huán),在一些C++函數(shù)中會(huì)直接調(diào)用腳本函數(shù),在腳本函數(shù)的運(yùn)行過(guò)程中,又可能調(diào)用C++的擴(kuò)展函數(shù)。C++擴(kuò)展函數(shù)的主要功能有兩個(gè):一是用來(lái)增加Python腳本無(wú)法直接編寫(xiě)的功能,二是用來(lái)替換腳本中運(yùn)行速度過(guò)慢的函數(shù)。

上述過(guò)程的關(guān)鍵點(diǎn)就在于C++和腳本如何相互調(diào)用函數(shù),以及如何傳遞參數(shù)與結(jié)果。一般的解決方法是在程序啟動(dòng)時(shí)利用腳本的API向腳本注冊(cè)C++的擴(kuò)展函數(shù),將函數(shù)指針傳遞給腳本系統(tǒng)以便將來(lái)調(diào)用,調(diào)用腳本函數(shù)則使用腳本系統(tǒng)的API將調(diào)用參數(shù)壓進(jìn)棧,取得運(yùn)行結(jié)果也要通過(guò)API進(jìn)行。

Python 腳本簡(jiǎn)介

目前有許多第三方腳本語(yǔ)言可供直接使用,例如Tcl、Lua等等,本文要介紹的是Python腳本。Python已經(jīng)有超過(guò)十年的歷史,是一種解釋性的、面向?qū)ο蟮哪_本語(yǔ)言。Python的解釋器在大部分的操作系統(tǒng)上都可以運(yùn)行,如Windows、Linux、Solaris、Mac 等。

1. 安裝與配置

安裝完成后在開(kāi)始菜單中會(huì)有Python的圖形化編輯器(IDLE,但目前版本不支持中文字符),Python的命令行解釋器以及用戶(hù)手冊(cè)

為了在C++程序中調(diào)用Python的API函數(shù),需要將頭文件與lib路徑添加到VC++的搜索目錄中,頭文件路徑是本地Python安裝目錄下的include目錄,lib路徑是本地Python安裝目錄下的libs目錄。這里需要注意的是安裝包只提供了release版本的lib與dll,如果需要調(diào)試運(yùn)行,則必須自己下載Python的源代碼以編譯debug版本的lib與dll.

2. 語(yǔ)法簡(jiǎn)介

詳細(xì)的語(yǔ)法說(shuō)明請(qǐng)參考Python安裝包自帶的文檔,這里我只介紹一些常用的關(guān)鍵字與注意事項(xiàng)。

Python腳本沒(méi)有C++中的 { 和 } ,它使用縮進(jìn)來(lái)代替。變量不需要單獨(dú)聲明,但不能引用未經(jīng)賦值的變量。

Python腳本中引入了模塊的概念,類(lèi)似C++中Lipary的概念。模塊可以包含函數(shù)、變量、類(lèi)。一個(gè)腳本文件就是一個(gè)模塊,模塊在使用前需要導(dǎo)入。

Python中沒(méi)有switch,使用if判斷代替。

  1. if ( num==1 ):  
  2. print "1"  
  3. elif ( num==2 ):  
  4. print "2"  
  5. else:  
  6. print "unknown  

"while 是Python的一個(gè)循環(huán)語(yǔ)句。在while循環(huán)內(nèi)可以使用continue跳到下個(gè)循環(huán),使用peak可以跳出整個(gè)循環(huán)

  1. cnt = 5 
  2. while ( cnt > 0 ):  
  3. print cnt  
  4. cnt -1 
  5. for 循環(huán):  
  6. list = ["test1", "test2", "test3"]  
  7. for str in list:  
  8. print str

詞典是Python腳本的一種映射數(shù)據(jù)類(lèi)型,它能從一個(gè)鍵值(key)映射到實(shí)際內(nèi)容(value):

  1. accounts = {'tom':'123456', 'mike':'654321'}  
  2. print accounts['tom']  
  3. print accounts['mike'] 

3.API 介紹

Pyhon腳本提供了大量的C API,C++與Python的交互都是通過(guò)這些API進(jìn)行。下面介紹幾個(gè)比較重要的API函數(shù):void Py_Initialize( )在使用Python系統(tǒng)前,必須使用Py_Initialize對(duì)其進(jìn)行初始化。它會(huì)載入Python的內(nèi)建模塊并添加系統(tǒng)路徑到模塊搜索路徑中。

這個(gè)函數(shù)沒(méi)有返回值,檢查系統(tǒng)是否初始化成功需要使用Py_IsInitialized。int PyRun_SimpleString(char *command)把輸入的字符串作為Python代碼直接運(yùn)行,返回0表示成功,-1表示有。大多時(shí)候錯(cuò)誤都是因?yàn)樽址杏姓Z(yǔ)法錯(cuò)誤。PyObject* Py_BuildValue(char *format, ...)把C++的變量轉(zhuǎn)換成一個(gè)Python對(duì)象。

當(dāng)需要從C++傳遞變量到Python時(shí),就會(huì)使用這個(gè)函數(shù)。此函數(shù)有點(diǎn)類(lèi)似C的printf,但格式不同。常用的格式有s表示字符串,i表示整型變量,f表示浮點(diǎn)數(shù),O表示一個(gè)Python對(duì)象。PyObject* PyObject_CallObject(PyObject*callable_object, PyObject *args)調(diào)用一個(gè)callable_object指向的Python函數(shù),args為調(diào)用參數(shù)

在使用此函數(shù)前可以用PyCallable_Check來(lái)檢測(cè)callable_object是否為一個(gè)可被調(diào)用的Python對(duì)象。PyObject* PyImport_Import(PyObject *name)載入一個(gè)n a m e 指定的模塊。可以先使用PyString_FromString將模塊名轉(zhuǎn)換為Python對(duì)象,再使用PyImport_Import載入。void Py_Finalize()關(guān)閉Python系統(tǒng),一般在程序退出時(shí)調(diào)用此函數(shù)。

責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2010-03-11 18:57:17

Python腳本

2011-08-24 13:56:12

Lua游戲

2010-03-08 17:03:22

Python腳本

2016-04-22 09:40:24

2009-07-07 14:28:50

2024-09-23 10:00:00

Python游戲開(kāi)發(fā)

2010-03-10 13:42:44

Python腳本

2012-05-15 13:57:41

HTML5

2022-08-02 20:10:43

領(lǐng)域DDD

2020-07-23 09:44:46

IT技術(shù)編程

2021-08-06 11:17:31

加密貨幣區(qū)塊鏈貨幣

2009-07-02 10:51:21

腳本編程JSP開(kāi)發(fā)

2010-03-15 11:34:44

Python游戲

2020-11-27 11:22:21

物聯(lián)網(wǎng)安全技術(shù)

2020-06-04 21:49:20

物聯(lián)網(wǎng)用戶(hù)體驗(yàn)IOT

2012-05-28 15:55:47

XNA 重力感應(yīng)

2012-05-22 14:26:15

XNA 橫豎屏設(shè)置

2011-08-24 14:26:08

Lua游戲腳本

2010-04-12 11:37:57

Oracle RAC

2010-05-28 19:06:40

MySQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久综合久久综合久久 | 91免费视频| 91视频久久 | 午夜久久久 | 免费在线观看一区二区 | 一区观看| 亚洲乱码一区二区三区在线观看 | 日韩在线播放视频 | 最新超碰 | 91精品国产综合久久香蕉麻豆 | 国产视频第一页 | 国产精品成人在线 | 国产精品一区二区视频 | 成人区一区二区三区 | xx性欧美肥妇精品久久久久久 | www.一级片| 欧美日产国产成人免费图片 | 国产一区电影 | 国产一级片在线播放 | 最新一级毛片 | 国产精品美女一区二区 | 精品久久久久久久人人人人传媒 | 在线一区 | 欧洲成人| 污视频在线免费观看 | 亚州中文 | 日韩中文字幕在线观看视频 | 日本一区二区不卡视频 | 激情视频中文字幕 | 91大神xh98xh系列全部 | 黄色毛片在线看 | 欧美一级久久 | 国产一区二区三区视频 | 中文字幕第十页 | 国产一区二区三区四区hd | www午夜视频 | 欧美激情国产日韩精品一区18 | 亚洲欧美在线一区 | 天堂一区在线观看 | 中文字幕视频在线 | 成在线人视频免费视频 |