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

Python腳本如何保證游戲正常開發

開發 后端
Pytho腳本是一種經常使用的通訊語言,在使用的過程中會遇到很多問題,下面向大家介紹如何使用Python腳本以及與其他語言的使用對比。

Python腳本是一種廣泛應用于玩游戲開發的通信語言,在實際應用的過程中還是有不少的問題困擾著開發人員,下面是Python腳本在實際應用中的具體問題解決方案。希望讀完下面的文章對其有所幫助。

在早期的一些游戲中,大部分的游戲邏輯都直接寫入游戲代碼,例如計算公式、游戲流程等。但隨著游戲產業的不斷發展,游戲開發本身也變得越來越復雜,游戲企劃需要更多的時間來對游戲進行調整,如果游戲邏輯還寫在代碼中,則企劃對游戲的每次修改都要通過程序進行,而且還需要重新編譯以及重啟程序,這樣工作效率就大大降低了.#t#

在游戲中使用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判斷代替:

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

"while 是Python的一個循環語句。在while循環內可以使用continue跳到下個循環,使用peak可以跳出整個循環

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

詞典是Python腳本的一種映射數據類型,它能從一個鍵值(key)映射到實際內容(value):

  1. accounts = {'tom':'123456', 'mike':'654321'}  
  2. print accounts['tom']  
  3. 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系統,一般在程序退出時調用此函數。

責任編輯:佚名 來源: 互聯網
相關推薦

2024-07-08 08:38:37

Python游戲開發

2010-03-08 19:03:23

Python腳本

2021-12-07 15:23:16

UPS電源系統維護

2021-08-03 15:26:56

代碼智能阿里云

2012-05-15 13:57:41

HTML5

2010-02-22 09:17:39

使用Python

2014-03-14 13:29:24

VDI配置文件

2011-08-24 14:26:08

Lua游戲腳本

2013-05-28 09:39:28

游戲設計

2022-06-26 09:56:50

HttpUtil工具類模式

2017-09-06 12:42:45

AndroidGradle開發技巧

2011-04-25 14:45:38

2021-06-08 11:00:59

pgzeroPython游戲

2024-08-02 17:19:36

2021-06-07 23:57:59

Python 游戲Pgzero

2017-01-10 19:06:39

Android日常開發技術經驗

2010-03-11 18:57:17

Python腳本

2022-01-27 14:12:49

Python游戲腳本

2021-12-30 10:55:54

Python游戲腳本

2023-05-17 08:34:27

開發技術應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人福利 | 九色在线观看 | 免费国产一区二区 | 国外成人在线视频 | 欧美一区二| 婷婷在线视频 | 成人伊人 | 成人伊人 | 欧美性极品xxxx做受 | 97av视频| 婷婷色综合| 国产精品久久久久久久久久了 | 在线观看亚洲精品 | 久久精品综合 | 精品国产一区二区久久 | 精品在线看| 色综合99| 久久精品国产一区 | 在线观看中文字幕 | 99热精品国产 | 国产极品粉嫩美女呻吟在线看人 | 亚洲精品一区在线 | 免费永久av | 成人免费黄视频 | 国产精品久久久久永久免费观看 | 久久这里只有精品首页 | 天天夜天天操 | 日韩成人在线免费观看 | 91一区二区 | 一区二区在线不卡 | 天天艹日日干 | 精品一区二区三区在线观看国产 | 在线播放国产视频 | www.天堂av.com| 国产精品不卡视频 | 成人三级在线观看 | 久久精品福利视频 | 亚洲人成人一区二区在线观看 | 亚洲视频免费观看 | 国产午夜精品视频 | 97精品久久 |