from direct.fsm import ClassicFSM, State # Create a new FSM and add states fsm = ClassicFSM.ClassicFSM("MyFSM", [State.State("Idle", lambda: print("Idle")), State.State("Walk", lambda: print("Walk")), State.State("Run", lambda: print("Run"))], "Idle") # Set the initial state # Transition to Walk state fsm.request("Walk") # Output: Walk
from direct.fsm import ClassicFSM, State # Transition and event callback functions def on_idle_to_walk(): print("Idle to Walk transition") def on_walk_to_idle(): print("Walk to Idle transition") def on_run_to_walk(): print("Run to Walk transition") # Create a new FSM and add states fsm = ClassicFSM.ClassicFSM("MyFSM", [State.State("Idle", lambda: print("Idle")), State.State("Walk", lambda: print( "Walk"), [(["WalkToIdle"], "Idle", on_walk_to_idle)]), State.State("Run", lambda: print( "Run"), [(["RunToWalk"], "Walk", on_run_to_walk)])], "Idle") # Set the initial state # Add transitions fsm.addTransition("IdleToWalk", "Idle", "Walk", on_idle_to_walk) fsm.addTransition("WalkToIdle", "Walk", "Idle") fsm.addTransition("RunToWalk", "Run", "Walk", on_run_to_walk) # Request transitions fsm.request("IdleToWalk") # Output: Idle to Walk transition, WalkIn conclusion, the direct.fsm ClassicFSM is a useful tool for implementing complex state machines in Python, particularly in the context of game development using the Panda3D package library.