FirEar.Net For the Best, One is Enough

28Nov/096

遊戲設計-Python

Python是一種十分強大的語言,面向對象,跨平台,快速,直譯語言,腳本語言(scripting language),通用語言,膠水語言,全部都可以安在Python身上。Python最大特色是其简捷而清晰的语法特点,筆者曾經接觸過Pascal,C,Java,Ruby,無疑Python是當中最簡單明快的一種語言。只要你曾經接觸過任何電腦語言,你都會覺得Python易學易上手。

時下在Facebook流行的遊戲差不多都是用Flash寫成的,而大部分Web Game也不可以單由Python完成。在這樣的大環境之下,只學習Python顯然無法躋身於以上的平台遊戲,但學習仍可以了解遊戲設計的過程以及難點。我相信對於將來有心在遊戲界發展的朋友應該會有所啟發。上文提及過RPG Maker,其實Maker就是一個引擎,而我們的最終目標就是製作一個遊戲引擎。

我們首先由Python的一些簡單語發法開始吧!

打開Python Shell, 即是上文中提及過的IDLE(Python GUI)。

Shell的功能有兩個,一個是可以運行腳本(Script),另一個就跟Linux下的Shell一樣,可以執行語句和表達式,第二個功能對測試比較重要。嘗試輸入以下內容:

>>> 1 + 1               1
2
>>> print 'hello world' 2
hello world
>>> x = 1               3
>>> y = 2
>>> x + y
3

一行語法就可以完成其他高級語言若干行的Hello World啦!接下來正式進入程式時間,先創建Python文件,Python Shell->File->New Window,或者直接創建一個.py的文字檔。

def buildConnectionString(params):
    """Build a connection string from a dictionary of parameters.

    Returns string."""
    return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

if __name__ == "__main__":
    myParams = {"server":"mpilgrim", \
                "database":"master", \
                "uid":"sa", \
                "pwd":"secret" \
                }
    print buildConnectionString(myParams)


其中def :是定義funtion的語法,基本樣子跟C,JAVA都差不多,但切記要注要define function name之後要接冒號":"。細心的讀者可能已經發現上無論是上面的x,y還是這裡的function,他們在declare(宣告)的時候都沒有指定是那一種類型(Type)。事實上Python是動態類型語言,無須指定變量類別,而在第一次使用時則會自動確定。另外一是Python的強類型(Strong Type)語言,除非明確地轉換,否則變量只會維持在原本的內容,即是在C語言中常見的"a"+32將會造成錯誤。

def下面的六個引號是一個大的String,用來對function的說明,並且可以通過FUNCTION_NAME.__doc__來取回該段說明。

上面return中出現了奇怪的 ";".join  ,留意在Python之中,一切東西都是對象(Object),對象可以視為具有屬性(Attribute)和方法(Methods)。";"為一String,而Pyhon中的String具有join的方法,大家可以嘗試打

": ".join(["firear.net","the best"])

result01

可見join可以使到兩個String連結並以呼叫join的String作為連結。再來探討一下join當中的括號[],中括號代表List,可以視為其他Program中的Array(陣列),輸入

["%s=%s" % ( 'a','b')]

result02

輸出結果為一個只有一格的Array,但重點是'a','b'以設定的模式連結,另外要注意小括號將里面的內容視為一個整體,稱為Tuples,類似的Structure(結構)將會重覆出現。最後就只剩下for-loop要解釋啦! 這裡執行了List Comprehension,即是在List中經過一系列操作而取得Sub-list。Python中的for是十方強大而且簡單的,舉個例子

for i in range(10):

print i

result03

用 for VAR in Sequence的結構就可以將Sequence中的items全部數出,而原function中的就將params(which is a list)中的items(which are objects)儲存在(k,v)中,然後(k,v)以指定方式"="連結再由";"將全部items組合(join)。

回到我們的第一個Python Program,選RUN->Run Module,以下為執行程序的結果:

result

稍為提及一下程序中的大括號{}是Python中的一種類型,dictionary。

相信大家對List,Dictionary,Tuples,String,Function都有一個初步的認識,更多的語法可以參考以下文件:

Python Basic(pdf)

注意,本文部分例子來自<<Dive Into Python>>

遊戲設計-序: http://firear.net/blog/2009/11/26/game-design/

Share and Enjoy:
  • Facebook
  • Twitter
  • MySpace
  • email
  • Add to favorites
  • Google Bookmarks
  • RSS

Related Post

About silau

MSN: silau2005@hotmail.com
Filed under: pygame Leave a comment
Comments (6) Trackbacks (0)
  1. 嗯,好詳細

  2. 好像很不詳細的樣子..所以我將來不會考慮做老師.

  3. I have already seen it somethere…
    Nicolas

  4. Do you mean they share the same examples? or the whole content?

  5. 这篇入门文章写得真好,瞬间让我学习到了python的语法与魅力。
    特此评论,以资主人继续后文

  6. 有你的支持,我會繼續談談PYTHON!!


Leave a comment


No trackbacks yet.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes