2016年8月23日 星期二

[Python] Kivy開發Game

之前一直想要用Python開發App,後來就開始斷斷續續地在研究Kivy。
我認為Kivy它比較適合用來開發遊戲類型
它涵式庫是Python,所以可以全部用Python語言來撰寫,
當然也可以用Kivy語言來撰寫,Kivy語言又更簡化了。

自從有了Kivy,覺得開發遊戲App變得好簡單
不過是因為它的套件很強大~
就像有人跟我說,Python的套件強大到覺得自己好像很會寫Python
(後來想想,他說得很有道理,我也常常誤以為我很會寫XD)


Kivy目前版本1.9,我但我是用1.8版本撰寫
Kivy已經可以支援Python3.3,不過我是用Python2.7
(未來在看看是否有語言撰寫上的差異)

撰寫上遇到幾個需要注意的部分
1. 一開始一定要import App
2. 一定要使用build來創建app


#App is base of any kivy application.
from kivy.app import App

class App08(App):
   def build(self):
    return LoveStoryGame()

if __name__ == '__main__':
   App08().run()





使用build方法呼叫你所建立的類別LoveStoryGame()
所以一定有個LoveStoryGame的Class
這邊就可以開始用Python語法撰寫App

剛剛說它有強大的涵式庫
例如我現在需要頁面的切換需要從
kivy.uix.screenmanager import ScreenManager

ScreenManager:Screen的最上層管理者,下面可以有很多的Screen,彼此Screen可以互相切換




#App is base of any kivy application.
from kivy.uix.screenmanager import ScreenManager, Screen

class LoveStoryGame(ScreenManager):
  pass

class StartScreen(Screen):
  pass

class GameScreen(Screen):
  pass




切換的方式(例如:淡入淡出、上下左右滑動)都可以,只要在ScreenManager這邊設定好
就可以統一都使用設定好的切換方式

下面是Kivy語法設定Screen切換
1. 先import FadeTransition (淡入淡出)
2. 在lovestorygame 也就是 ScreenManager 設定 transition 要 FadeTransition()
3. 給每個Screen命名
4. 使用Button的on_press設定 Screen 應該要被切換到哪一個 Screen



#:import FadeTransition kivy.uix.screenmanager.FadeTransition

<lovestorygame>:
  transition: FadeTransition()
  StartScreen:
  GameScreen:

<startscreen>
  name: "start"
  FloatLayout:
    Button:
      text: "Play!"
      on_press: root.manager.current = "game"

<gamescreen>
  name: "game"
  FloatLayout:
    Button:
       text: "restart!"
      on_press: root.manager.current = "start"




[Github] KivyApp08原始碼

[Kivy] 官方網站




沒有留言:

張貼留言