用Python和Pygame寫遊戲-從入門到精通(11)

本文轉載自:http://eyehere.net/2011/python-pygame-novice-professional-11/


上次我們說明了使用鍵盤操作遊戲,鍵盤是非常古老的輸入設備,甚至筆計算機本身都要古老的多,因爲它發源於打字機,貌似1868年就有成熟的打字機問世了。不得不說的是,現在最常用的鍵位排部,並不是最科學的,相比上一次說過的DUORAK鍵盤,打字者的手指平均每日運動1英里,而QWERTY則是12到20英里。當然這對遊戲毫無意義……

相比而言,鼠標非常的年輕,世界上最早的鼠標誕生於1964年,它是由美國人道格·恩格爾巴特(Doug Engelbart)發明的。IEEE協會把鼠標的發明列爲計算機誕生50年來最重大的事件之一,可見其對IT歷程的重大影響作用。1983年蘋果公司給自家的電腦安上了鼠標,用戶就開始離不開這個小東西了。而現代遊戲,離開了鼠標,99%的都沒法玩!我們自然得好好研究如何使用鼠標來操控我們的遊戲。

使用鼠標控制精靈

我們已經看到如何畫一個光標了,只是簡單的在鼠標座標上畫一個圖像而已,我們可以從MOUSEMOTION或者pygame.mouse.get_pos方法來獲得座標。但我們還可以使用這個座標來控制方向,比如在3D遊戲中,可以使用鼠標來控制視角。這種時候,我們不使用鼠標的位置,因爲鼠標可能會跑到窗口外面,我們使用鼠標現在與上一幀的相對偏移量。在下一個例子中,我們演示使用鼠標的左右移動來轉動我們熟悉的小魚兒:

一旦打開這個例子,鼠標就看不到了,我們得使用Esc鍵來退出程序,除了上一次的方向鍵,當鼠標左右移動的時候,小魚轉動,按下鼠標左右鍵的時候,小魚前進/後退。看代碼,基本也是一樣的,就多了幾句帶註釋的。

這裏使用了

來完全控制鼠標,這樣鼠標的光標看不見,也不會跑到pygame窗口外面去,一個副作用就是無法使用鼠標關閉窗口了,所以你得準備一句代碼來退出程序。

然後我們使用

來獲得x方向上的偏移量,除以5是把動作放慢一點……

還有

獲得了鼠標按鍵的情況,如果有一個按鍵按下,那麼對應的值就會爲True。

總結一下pygame.mouse的函數:

  • pygame.mouse.get_pressed —— 返回按鍵按下情況,返回的是一元組,分別爲(左鍵, 中鍵, 右鍵),如按下則爲True
  • pygame.mouse.get_rel —— 返回相對偏移量,(x方向, y方向)的一元組
  • pygame.mouse.get_pos —— 返回當前鼠標位置(x, y)
  • pygame.mouse.set_pos —— 顯而易見,設置鼠標位置
  • pygame.mouse.set_visible —— 設置鼠標光標是否可見
  • pygame.mouse.get_focused —— 如果鼠標在pygame窗口內有效,返回True
  • pygame.mouse.set_cursor —— 設置鼠標的默認光標式樣,是不是感覺我們以前做的事情白費了?哦不會,我們使用的方法有着更好的效果。
  • pyGame.mouse.get_cursor —— 不再解釋。

關於使用鼠標

在遊戲中活用鼠標是一門學問,像在FPS中,鼠標用來瞄準,ARPG或RTS中,鼠標用來指定位置和目標。而在很多策略型的小遊戲中,鼠標的威力更是被髮揮的 淋漓盡致,也許是可以放置一些道具,也許是用來操控蓄力。我們現在使用的屏幕是二維的,而鼠標也能在2維方向到達任何的位置,所以鼠標相對鍵盤,更適合現代的複雜操作,只有想不到沒有做不到啊。

絕大多數時候,鼠標和鍵盤是合作使用的,比如使用鍵盤轉換視角,使用鍵盤移動,或者鍵盤對應很多快捷鍵,而鍵盤則用來指定位置。開動大腦,創造未來!

下一章節講述使用遊戲控制器,也就是手柄啦~ 手裏拿一個手柄玩遊戲,感覺就是不一樣,不過被爸媽看到立刻就知道不在幹正事了……


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章