これまでにさまざまなシンプルな2次元ゲームを作成していました。シンプルなので、このようなものを作成する必要はありませんでした。しかし、私は今戻って4番目に行く必要があるので、それが必要です。 しかし、私は何らかの方向を必要としています...ステートマシンをPythonで作成する
私は新しいゲームに約200行あり、私は実際のゲームを開始していない、現在はすべてのウィンドウ、イベント、州の
### state machine
def run:
#~setup window
# Current state
state = menu()
running = True
while running:
#~event handler
returns = state.update(events)
if returns == "playgame":
state = game()
state.draw(window)
#menu state
class menu:
def __init__(self):
#~define vars for the menu (buttons, etc...)
self.clickables = [] # filled with gui etc..
self.image = image() # image of the menu
def update(self, events):
for event in events: # go through events
for clickable in self.clickables: # go through clickables
if clickable.testClicked(event.pos) != False: # Returns if clicked
return clickable.testClicked(event.pos)
def draw(self, window):
self.image.draw(window)
#game state
class game(menu): # Exactly the same as menu (just used as example)
def __init__(self):
super(menu).__init__()
#gui button
class button: # Extremely shortened for example use
def __init__(self, do): # do is a string
self.whenClickedDo = do
def testClicked(self, mousePos):
if mousePos in self.myRect: # myRect is the area of the button (Example!)
return self.whenClickedDo
return False
この上記の例では、完全に駆けつけたが、私は熟考質問がありました...これは何を達成するためのより良い方法があるか、物事を行うにはスマート/実現可能な方法を上回っていますか?
TLDR;関数 "run"は、それ自身を別の状態に変更するために使用される値を返すことができる値 "state"を有する。それは状態マシンを作るための合理的な方法ですか?
(私は遅い日を過ごしています)あなたはゲームの状態に関するアドバイスを受けていますか?例えば。 「メインメニュー」の状態、「ゲームのプレイ」の状態などの情報を含む。 – RichSmith
@RichSmithいいえ...現在の状態から新しい状態を返すかどうか知りたいのですが、コミュニティの大多数が更新機能を優先しています – AUFakie