程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 深度剖析Python 腳本問題

深度剖析Python 腳本問題

編輯:C++入門知識

在開發游戲時主要使用的Python 腳本主要有兩種方式,一種方式是主程序使用一門高級語言,比如C++進行編寫,然後對其嵌入一個腳本解釋器,在運行時動態執行一些腳本函數。

游戲企劃需要更多的時間來對游戲進行調整,如果游戲邏輯還寫在代碼中,則企劃對游戲的每次修改都要通過程序進行,而且還需要重新編譯以及重啟程序,這樣工作效率就大大降低了。

在游戲中使用腳本,就正好能解決上述問題,小到一些計算公式,大到游戲的控制流程都可以通過腳本完成,而且目前的腳本系統大多是解釋執行的,因此都可以支持運行時動態修改,這樣一來可以立即看到修改結果,非常方便。

如何使用腳本在游戲中使用腳本主要有兩種方式。一種方式是主程序使用一門高級語言,比如C++進行編寫,然後對其嵌入一個腳本解釋器,在運行時動態執行一些腳本函數;

另一種方式則是整個程序全部使用Python 腳本編寫,例如一些泥巴游戲就是直接用LPC腳本編寫的。本文主要研究嵌入式腳本使用方法,因為目前大部分的腳本都不能提供如VC++那樣方便的調試環境。

如果程序全部用腳本編寫,當腳本多達幾萬行甚至十幾萬行的時候,調試會成為一件非常痛苦的事。而且嵌入式使用時可以將一些非常耗時的代碼用C++編寫,以保持較好的運行效率。

程序從C++的main( )函數開始啟動,然後進入主循環,在一些C++函數中會直接調用腳本函數,在腳本函數的運行過程中,又可能調用C++的擴展函數。C++擴展函數的主要功能有兩個:一是用來增加腳本無法直接編寫的功能,二是用來替換腳本中運行速度過慢的函數。

  • Python模板函數簡介說明
  • 如何進行Python編碼轉換?
  • Python世界中的Django學習探討
  • 對Python Django的模板操作說明
  • 建立Python Django開發框架問題說明

上述過程的關鍵點就在於C++和腳本如何相互調用函數,以及如何傳遞參數與結果。一般的解決方法是在程序啟動時利用腳本的API向腳本注冊C++的擴展函數。

將函數指針傳遞給腳本系統以便將來調用,調用腳本函數則使用腳本系統的API將調用參數壓進棧,取得運行結果也要通過API進行。

Python 腳本簡介目前有許多第三方腳本語言可供直接使用,例如Tcl、Lua等等,本文要介紹的是Python 腳本Python已經有超過十年的歷史,是一種解釋性的、面向對象的腳本語言。Python的解釋器在大部分的操作系統上都可以運行,如Windows、Linux、Solaris、Mac 等。

詳細的語法說明請參考Python安裝包自帶的文檔,這裡我只介紹一些常用的關鍵字與注意事項。Python沒有C++中的 { 和 } ,它使用縮進來代替。變量不需要單獨聲明,但不能引用未經賦值的變量。

Python中引入了模塊的概念,類似C++中Library的概念。模塊可以包含函數、變量、類。一個腳本文件就是一個模塊,模塊在使用前需要導入,Python中沒有switch,使用if判斷代替:

  1. if ( num==1 ):  
  2.     print "1"  
  3. elif ( num==2 ):  
  4.     print "2"  
  5. else:  
  6.     print "unknown"  
  7.   while 是Python的一個循環語句。在while循環內可以使用continue跳到下個循環,使用break可以跳出整個循環:  
  8. cnt = 5 
  9. while ( cnt > 0 ):  
  10.     print cnt  
  11.     cnt -1 
  12.   for 循環:  
  13. list = ["test1", "test2", "test3"]  
  14. for str in list: 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved